配置

启动python脚本生成多机launch文件

cd ~/XTDrone/coordination/launch_generator
python3 generator.py

将生成出来的launch文件复制到PX4固件的launch文件夹

cp ~/XTDrone/coordination/launch_generator/multi_vehicle.launch ~/PX4_Firmware/launch/

将XTDrone/stil_config/worlds中的ego_swarm.world复制到PX4_Firmware/Tools/sitl_gazebo/worlds中

cp ~/XTDrone/sitl_config/worlds/ego_swarm.world ~/PX4_Firmware/Tools/sitl_gazebo/worlds

并且更改launch文件,同时将launch文件中的iris_stereo_camera都替换为iris_realsense_camera

<!-- arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/outdoor2.world"/ -->
<arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/ego_swarm.world"/>

修改run_in_xtdrone.launch文件

<!-- number of moving objects -->
<arg name="obj_num" value="4" /><!-- maximum velocity and acceleration the drone will reach -->
<arg name="max_vel" value="1.0" />
<arg name="max_acc" value="0.2" />   #根据需要调整<!-- 1: use 2D Nav Goal to select goal  -->
<!-- 2: use global waypoints below  -->
<arg name="flight_type" value="1" />

修改advanced_param_xtdrone.xml

<!-- main node -->
<!-- <node pkg="ego_planner" name="ego_planner_node" type="ego_planner_node" output="screen" launch-prefix="valgrind"> -->
<node pkg="ego_planner" name="iris_$(arg drone_id)_ego_planner_node" type="ego_planner_node" output="screen"><remap from="~odom_world" to="/iris_$(arg drone_id)/$(arg odometry_topic)"/><remap from="~planning/bspline" to = "/xtdrone/iris_$(arg drone_id)/planning/bspline"/><remap from="~planning/data_display" to = "/xtdrone/iris_$(arg drone_id)/planning/data_display"/><remap from="~planning/broadcast_bspline_from_planner" to = "/broadcast_bspline"/><remap from="~planning/broadcast_bspline_to_planner" to = "/broadcast_bspline"/><remap from="/move_base_simple/goal" to = "/iris_$(arg drone_id)/move_base_simple/goal"/><remap from="~grid_map/odom" to="/xtdrone/iris_$(arg drone_id)/$(arg odometry_topic)"/><remap from="~grid_map/cloud" to="/iris_$(arg drone_id)/$(arg cloud_topic)"/><remap from="~grid_map/pose"  to = "/iris_$(arg drone_id)/$(arg camera_pose_topic)"/> <remap from="~grid_map/depth" to = "/iris_$(arg drone_id)/$(arg depth_topic)"/>

原版

  <node pkg="ego_planner" name="iris_$(arg drone_id)_ego_planner_node" type="ego_planner_node" output="screen"><!-- ~odom_world是vins_estimator/odometry --><remap from="~odom_world" to="/$(arg odometry_topic)"/><remap from="~planning/bspline" to = "/xtdrone/iris_$(arg drone_id)/planning/bspline"/><remap from="~planning/data_display" to = "/xtdrone/iris_$(arg drone_id)/planning/data_display"/><remap from="~planning/broadcast_bspline_from_planner" to = "/broadcast_bspline"/><remap from="~planning/broadcast_bspline_to_planner" to = "/broadcast_bspline"/><!-- ~odom_world也是vins_estimator/odometry --><remap from="~grid_map/odom" to="/xtdrone/iris_$(arg drone_id)/$(arg odometry_topic)"/><remap from="~grid_map/cloud" to="/iris_$(arg drone_id)/$(arg cloud_topic)"/><!--  /grid_map/pose是iris_0/camera_pose(由vins_estimator/camera_pose -> vinsion_pose/pose -> iris_0/camera_pose)remap:1 重命名一个已经存在的主题 2将别人发布的主题映射到自己订阅的主题上,这个类型应该属于2,grid_map/pose需要 /iris_0/camera_pose的值--><remap from="~grid_map/pose"   to = "/iris_$(arg drone_id)/$(arg camera_pose_topic)"/> <remap from="~grid_map/depth" to = "/iris_$(arg drone_id)/$(arg depth_topic)"/>

修改multi_vins_transfer.py中的bias的值根据iris的初始位置相应改变

bias = np.array([[0,3,0],[3,3,0],[6,3,0]])

修改ego_swarm_goal.sh,确定对应飞机目标点和个数

#!/bin/bash
while(true)
dopython2.7 ego_swarm_goal.py iris 0 9 9 0.7&python2.7 ego_swarm_goal.py iris 1 9 9 0.7&python2.7 ego_swarm_goal.py iris 2 9 9 0.7&python2.7 ego_swarm_goal.py iris 3 6 0 0.7
done

启动

启动仿真

cd ~/PX4_Firmware
roslaunch px4 multi_vehicle.launch

启动多无人机的VINS-Fusion,同时将VINS-Fusion发布的Odometry类型的话题对应转为PX4所需的话题
multi_vins_transfer.py中的bias的值根据iris的初始位置相应改变

cd ~/catkin_ws
roslaunch vins xtdrone_run_vio.launch
cd ~/XTDrone/sensing/slam/vio
python2.7 multi_vins_transfer.py iris 3   # 4是iris的数量

建立多机通信,然后键盘控制起飞后悬停,关闭键盘控制

cd ~/XTDrone/communication
bash multi_vehicle_communication.sh
cd ~/XTDrone/control/keyboard
python2.7 multirotor_keyboard_control.py iris 3 vel
cd ~/XTDrone/control/keyboard
python2.7 hover.py iris 3 vel

转换相机位姿的坐标系方向

cd ~/XTDrone/motion_planning/3d
python2.7 ego_swarm_transfer.py iris 3  # 4是iris的数量

启动rviz

rviz -d ego_swarm_rviz.rviz

启动ego_planner_swarm

roslaunch ego_planner multi_uav.launch

发布目的地(代码中的4个数字依次代表无人机编号、x、y、z)

cd /home/zj/XTDrone/motion_planning/3d
bash ego_swarm_goal.sh   #统一发布
python2.7 ego_swarm_goal.py iris 0 -7 -9 0.7 #单独发布

无人机运动规划4:ego-swarm无人机群运动规划相关推荐

  1. 某型无人机群的监视覆盖任务航路规划

    某型无人机群的监视覆盖任务航路规划 人工智能技术与咨询 来源:<计算机科学与应用> ,作者冷雄晖等 关键词: 无人机群:监视覆盖航路规划:遗传算法:人工势场法:UAV Group: Sur ...

  2. 从狼群智能到无人机群协同决策

    来源:飞思实验室 文:小翼 生物群集行为是自然界存在的一种普遍现象 ,先前的研究已表明人们可以通过模仿鸟群.鱼群.蜂群等行为, 研究其群体性决策机制, 进而用于构建集群系统的决策系统框架. 狼群在认知 ...

  3. 【Paper】2015_异构无人机群鲁棒一致性协议设计_孙长银

    原文地址:[1]孙长银,余瑶,张兰.异构无人机群鲁棒一致性协议设计[J].中国科学:技术科学,2015,45(06):573-582. 2015_异构无人机群鲁棒一致性协议设计_孙长银 4 分布式鲁棒 ...

  4. css3运动后留下轨迹尾巴_机器人轨迹规划简介

    轨迹规划,往往称为机器人轨迹规划,属于低层规划,基本上不涉及工人智能问题,而是在机械手运动学和动力学的基础上,讨论在关节空间和笛卡儿空间中机器人运动的轨迹规划和轨迹生成方法.所谓轨迹,是指机械手在运动 ...

  5. 图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法

    目录 1 自动驾驶驶向何处? 2 什么是运动规划? 3 运动规划实战教程 4 加入我们 5 订阅需知 1 自动驾驶驶向何处? 自动驾驶,又称无人驾驶,是依靠计算机与人工智能技术在没有人为操纵的情况下, ...

  6. 机器人运动学轨迹规划(三)----S型曲线规划算法

    写在前面:机器人运动学轨迹规划(二)里介绍了T型曲线规划算法,本文主要介绍S型速度曲线算法.同T型速度曲线相比,S形曲线更加平滑,避免了T形曲线在速度拐点引起的电机和drive train的冲击,但是 ...

  7. 中职生职业生涯规划书2000字学计算机,职业生涯规划书 计算机平面设计专业 中职生 2000字...

    技校网专门为您推荐的类似问题答案 问题1: 一份中专职业生涯规划书,2000字左右,本人是计算机应用及维修专业的, 电脑方面的... 百度一下计算机专业职业生涯规划书 前面的几编还是可以的 参照格式综 ...

  8. 【运筹学】运输规划求最大值 ( 运输规划求最大值问题示例 | 转为运输规划求最小值的方式 )

    文章目录 一.运输规划求最大值问题 二.运输规划求最大值问题示例 一.运输规划求最大值问题 目标函数求最大值 : 如求利润最大值 , 营业额最大值 ; maxZ=∑i=1m∑j=1ncijxijs.t ...

  9. 职业规划纵向横向_金融行业之职业规划

    进入金融行业,对于很多同学来说都是心中向往的圣地.清晰的金融行业职业规划和明确的发展路径,就尤为重要. 做为过来人,首先聊聊如何做金融行业的职业规划. 职业规划包括短期职业规划和长期职业规划. 短期职 ...

  10. 单位载质量能量消耗量_这样运动减肥效果最好!附:运动能量消耗表

    提到减肥,怎么能少了运动?但是很多朋友对每天要运动多久,做什么运动合适等问题不是特别清楚. 根据中国营养学会的推荐要求,成年人的活动量基本要求为: ■ 每天至少快走6000步,大约30~60分钟: ■ ...

最新文章

  1. Xamarin Android教程Android基本知识版本介绍与系统介绍
  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 | 证明 共轭对称序列 x_e(n) 的 傅里叶变换 是 原序列傅里叶变换 的实部 )
  3. WINCE注册表应用
  4. linux 可执行文件_linux中ELF二进制程序解析
  5. iOS中去除 Warning警告
  6. mysql 重复数据 distinct_MySQL中distinct语句去查询重复记录及相关的性能讨论
  7. 【转载】ASP.NET应用程序与页面生命周期
  8. PostgreSQL 安装 用户配置
  9. HTML5 Web Storage事件
  10. maven构建SSM工程[应用]2
  11. python mysql 循环语句怎么写_用于mysql语句的Python循环
  12. C++程序设计一(进制转换)
  13. linux下面桌面的安装
  14. h5是什么 www.php.cn,html5是什么?html5有什么用?
  15. java实现列表拖动排序
  16. 人机共生?马斯克的疯狂“实验”还很遥远
  17. ibm服务器显示器接口,显示器接口类型怎么选,4种主流接口要了解
  18. numpy.arange()参数含义
  19. 升级鸿蒙系统最新计划,华为鸿蒙系统更新升级方法分享
  20. iOS开发者遇到审核失败的原因及解决办法

热门文章

  1. windows 键盘快捷键
  2. POJ-1144 Network——Trajan+割点
  3. 深度解读,北斗与综合PNT体系
  4. 古人说的雅事,通常是做什么?
  5. GigabitEthernet和Ethernet接口的区别
  6. 电脑忽然不能开机,主板自检灯亮了
  7. python金融衍生品大数据分析 pdf_Python金融衍生品大数据分析:建模、模拟、校准与对冲...
  8. 初见安~这里是樱狸的博客目录~
  9. mysql 保存富文本的类型_富文本编辑器内容在mysql数据库以什么类型保..._网络编辑_帮考网...
  10. 肯德尔(Kendall)相关系数概述及Python计算例