frag86@126.com 发表于 2022-10-23 22:57:20

Mavros gazebo PX4 APM多机仿真

前提

按照Ros Mavros gazebo OFFBOARD 和 APM Gazebo两篇文章,把相关环境、软件都安装配置好。
PX4

        PX4进行多机仿真比较容易,相关的资料也比较全。

[*]roslaunch px4 multi_uav_mavros_sitl.launch
[*]打开另一个终端,输入rostopic         list就可以看到uav0、uav1、uav2的mavros消息了
[*]修改offboard_node.cpp文件,加入uav0、uav1、uav2的mavros消息订阅,catkin         build重新编译一下
[*]rosrun offboard_pkg offboard_node 即可实现多机仿真
APM

        ardupilot 多机仿真相关的资料比较少,下面以两个gazebo-iris四轴无人机仿真为例

[*]在之前下载好的ardupilot_gazebo/worlds/文件里的iris_ardupilot.world文件复制一下,作为修改模板
[*]打开复制好的iris_ardupilot.world,在加入一个四轴模型
原来:


改成


3.可以发现新加入了iris_1,uri为model://iris_with_standoffs_demo1,因此需要在gazebo/models文件夹下面新建一个iris_with_standoffs_demo1文件夹,里面的model.config、model.sdf文件与iris_with_standoffs_demo里的基本相同。
除了,因为每个模型要与apm固件实现联合仿真,需要有固定的网络接口。参考相关资料及sim_vehicle.py         发现每加入一个模型,其对应的fdm_port_in、fdm_port_out就要加10,因此,
iris_with_standoffs_demo里的model.sdf设置如下



iris_with_standoffs_demo1里的model.sdf设置如下


sim_vehicle.py 里的相关代码为


4.gazebo --verbose iris_ardupilot_two.world 会看到打开的gazebo里有两个四轴

5.开启ardupilot         sitl仿真
四轴1:../Tools/autotest/sim_vehicle.py         -f gazebo-iris -I0 --sysid=1
四轴2:../Tools/autotest/sim_vehicle.py         -f gazebo-iris -I1 –sysid=2
-I0、-I1对应上图中sim_vehicle.py里的i
此外,查看终端发现四轴1打开的是127.0.0.1:14551/14550两个端口,四轴2打开的是127.0.0.1:14561/14560端口,后面修改apm.launch文件的时候要用的

6.修改apm.launch文件如下




7.roslaunch mavros apm.launch       

8.新打开一个终端,输入rostopic         list能看到uav0、uav1的mavros消息

9.修改offboard_node.cpp,重新编译,启动节点,就能在gazebo里看到相应的动作了
页: [1]
查看完整版本: Mavros gazebo PX4 APM多机仿真