px4自带教程offboard下的gazebo多无人机编队仿真
主要教程参考这篇文章,offboard代码也源自下面链接,增加了其他文件的配置细节,链接如下:
https://blog.csdn.net/weixin_43409270/article/details/114703341?spm=1001.2014.3001.5501
前提:
我的px4版本较旧,现在重新去github上px4-Autopilot上下载的PX4-Autopilot/launch/multi_uav_mavros_sitl.launch文我下载的里面参数配置不同,我参考官网最新的代码进行修改,主要修改以下两部分1、/home/zy/PX4/Firmware/launch/multi_uav_mavros_sitl.launch文件 2、/home/zy/PX4/Firmware/posix-configs/SITL/init/ekf2/iris_0(在原有iris_1、iris_2的基础上复制了iris_3、iris_4)
1、 修改multi_uav_mavros_sitl.launch文件
参考以下官网最新launch文件最后面增加无人机后的端口修改方法如下:
<!-- to add more UAVs (up to 10):
Increase the id
Change the name space
Set the FCU to default="udp://:14540+id@localhost:14550+id"
Set the malink_udp_port to 14560+id) -->
就是说对UAV1,ID=1,则
<arg name="fcu_url" default="udp://:14540+1(ID)@localhost:14550+1(ID)"/>
<arg name="mavlink_udp_port" value="14560+1(ID)"/>
修改完成后UAV1部分完整代码如下:
<!-- UAV1 -->
<group ns="uav1">
<!-- MAVROS and vehicle configs -->
<arg name="ID" value="1"/>
<arg name="fcu_url" default="udp://:14541@localhost:14551"/>
<!-- PX4 SITL and vehicle spawn -->
<include file="$(find px4)/launch/single_vehicle_spawn.launch">
<arg name="x" value="0"/>
<arg name="y" value="0"/>
<arg name="z" value="0"/>
<arg name="R" value="0"/>
<arg name="P" value="0"/>
<arg name="Y" value="0"/>
<arg name="vehicle" value="$(arg vehicle)"/>
<arg name="rcS" value="$(find px4)/posix-configs/SITL/init/$(arg est)/$(arg vehicle)_$(arg ID)"/>
<arg name="mavlink_udp_port" value="14561"/>
<arg name="ID" value="$(arg ID)"/>
</include>
<!-- MAVROS -->
<include file="$(find mavros)/launch/px4.launch">
<arg name="fcu_url" value="$(arg fcu_url)"/>
<arg name="gcs_url" value=""/>
<arg name="tgt_system" value="$(arg ID)"/>
<arg name="tgt_component" value="1"/>
</include>
</group>
然后复制这部分,命名空间改为UAV2/3/4,ID依次为2、3、4,然后参考UAV1修改fcu_url、mavlink_udp_port的值。
2、修改/home/zy/PX4/Firmware/posix-configs/SITL/init/ekf2中iris无人机参数
由于上一步我们修改了launch文件中的每架无人机的端口号,所以要在原本PX4中的iris的端口参数设置中进行修改,让其与launch文件中的端口号一致。
修改参考以下链接:
https://bbs.amovlab.com/forum.php?mod=viewthread&tid=486
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a0ab3f8c8584b099b3963493fa4d205.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQmx5dGhlMTkwNA==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
如果是四架无人机,就复制两次iris_1或iris_2,并分别命名为iris_3,iris_4
以iris_1为例,打开参考multi_uav_mavros_sitl.launch文件,修改以下四部分:
1、MAV_SYS_ID 修改为 (ID数);
param set MAV_SYS_ID 1
2、SITL_UDP_PRT 值要与位于启动脚本中 mavlink_udp_port 参数匹配;
param set SITL_UDP_PRT 14561
3、第一个 mavlink start 端口号要与 mavlink stream 端口号一致,用于与QGC通信。其余iris模型中的第一个mavlink start 值依次加2;
mavlink start -x -u 14556 -r 4000000
4、第二个 mavlink start 端口号要与启动脚本中 fcu_url 参数一致。
mavlink start -x -u 14551 -r 4000000 -m onboard -o 14541
注:
1、如果运行报错说找不到iris_?,可能是iris命名问题,看看报错的找不到iris几,回去看看自己文件夹下有没有这个iris。
2、offboard里面的uav序号也要注意,尽力所以文件序号一致,从零开始计数无人机个数就都从零开始,从一开始计数无人机个数就都从一开始,方便自己后续查找修改问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)