网站页脚怎么做能好看点,吉林平台网站建设哪里有,吃什么补肾阳虚,网站制作怎么做图标本框架是基于激光雷达的无人机群自主避障代码#xff1a; 其主体框架利用ORCA算法#xff0c;他是经典的多智能体相互避障算法#xff0c;此版本只能规避动态障碍物#xff0c;不能规避环境形成的静态障碍物我们对ORVA算法稍作修改#xff0c;使其可以分布式部署#xff… 本框架是基于激光雷达的无人机群自主避障代码 其主体框架利用ORCA算法他是经典的多智能体相互避障算法此版本只能规避动态障碍物不能规避环境形成的静态障碍物我们对ORVA算法稍作修改使其可以分布式部署并且将仿真代码修改为uav实测代码ORCA算法需要知道其他智能体的绝对位置和速度作为算法输入因此我们需要模块【1】和【2】来补充完成模块【2】是利用将lidar安装在当前uav上并用其检测和估计其他无人机的相对位置和速度因为不满足ORVA算法需要绝对位置和速度的条件因此需要利用模块【1】来估计当前uav的位置进行结合 【配置规范】不同的包安装在不同的工作空间中方便管理如catkin_ws_realsensecatkin_ws_vinscatkin_ws_lidarcatkin_ws_orca
1. 基于VIO/LIO的uav自身位置估计
[1] LIO 因为无人机安装了Lidar所以用LIO比较好 待安装。。。
[2] VIO VIO使用Vins是基于D435深度相机的具体安装参考D435ivins-Fusionego-planneryolo无人机避障实测中vins部分
roslaunch realsense2_camera rs_camera_vins.launch
rosrun vins vins_node ~/catkin_ws_vins/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml2. 利用Lidar检测并估计其他uavs位置和速度
代码下载链接https://gitee.com/dueen1123/lidar_esti
新建一个catkin_ws_lidar的工作空间 在其中先配置好激光雷达livox的SDK以及ROS版本的SDK参考链接在此 然后将lidar_esti放在同一工作空间一起编译
代码运行如下
# 启动激光雷达
roslaunch livox_ros_driver2 rviz_MID360.launch
cd ~/catkin_ws_lidar/src/lidar_esti/scripts
# 运行高反无人机检测
python3 multi_highRreflect_detect.py
# lidar到orca转换脚本
python lidar2orca.py其中multi_highRreflect_detect.py和lidar2orca.py中的DETECT_UAV_NUM变量需要根据实际uav个数修改
3. ORCA集群避障算法
代码链接https://gitee.com/dueen1123/orca
实测代码不同的无人机需要添加不同的node_0_true.cpp以及相对应的rvo_node_true.launch和node_0_true.sh
1rvo_node.h修改copy_num_agent变量改为本次实测的uav个数
int copy_num_agent 2; // 复制智能体数量2node_0_true.cpp修改如下代码
void rvo_true_velCallback(const UAVPosVel::ConstPtr sub_msg){// ...// 用哪架无人机序号改成几float x new_velocities[0]-x();float y new_velocities[0]-y();float z new_velocities[0]-z();// ...
}3rvo_node_true.launch更改为当前的 node_0_true节点 4node_0_true.sh后面的目标点数量修改与总uav数量一致并且是第几架无人机对应的目标点位置才赋值
#!/bin/bash
rosrun rvo_ros set_goals_client_0 default 1 1 1 0 0 0
sleep 8rosrun rvo_ros set_goals_client_0 default 4 1 1 0 0 0
sleep 6运行如下
#启动飞机px4飞控
#启动vins绝对定位
#启动lidar相对定位
cd ~catkin_ws_orca/src/rvo_ros/scripts
# 无人机通信
python multirotor_communication.py iris 0
# 无人机悬停
python hover.py iris 1 vel
# 启动壁障算法
roslaunch rvo_ros rvo_node_true.launch
# 设置目标点
bash node_0_true.sh以下可以忽视 ORCA是主要的避障算法 ORCA需要一个自定义话题的输入也就是一个包含速度和位置的消息 但c和python自定义消息稍有不同不能直接引用头文件然后直接用消息名称使用如下
#include UAVPosVel.h
void rvo_true_velCallback(const UAVPosVel::ConstPtr sub_msg);首先#include可能难以直接定位到UAVPosVel.h需要在cmakelist中的include_directories添加其生成路径即xxx/devel/include/package_name 其次UAVPosVel.h中的类不叫UAVPosVel他生成了一个模板函数所以使用时应该重新定义 总结如下
include_directories(include${catkin_INCLUDE_DIRS}${PROJECT_SOURCE_DIR}/include/3d_library # 确保这里包含了3d_library目录/home/tju/catkin_ws_orca/devel/include/rvo_ros
)#include UAVPosVel.h
typedef rvo_ros::UAVPosVel_std::allocatorvoid UAVPosVel;
void rvo_true_velCallback(const UAVPosVel::ConstPtr sub_msg);