简述
在仿真过程中可能会遇到需要实时生成新模型的场景。仿真过程支持实时增加无人机的仿真模型和仿真控制节点,相较于在启动gazebo和世界文件时同时生成无人机,我们只需要单独启动生成新模型的launch文件和mavros节点的launch文件即可。(老实说我这里没看懂黄色高亮部分想表达什么意思,后面是我自己瞎理解的
)
启动文件
以在仿真过程中新增一台iris为例,其launch文件如下
add_vehicle.launch
<?xml version="1.0"?>
<launch>
<!-- MAVROS posix SITL environment launch script -->
<!-- launches Gazebo environment and 2x: MAVROS, PX4 SITL, and spawns vehicle -->
<!-- iris_1 -->
<group ns="iris_1"> # 需要增加的新飞机的命名空间
<!-- MAVROS and vehicle configs -->
<arg name="ID" value="1"/> # 选取合适的ID
<arg name="ID_in_group" value="1"/> # 选取合适的ID
<arg name="fcu_url" default="udp://:24541@localhost:34581"/> # 选取合适的URL
<!-- PX4 SITL and vehicle spawn -->
<include file="$(find px4)/launch/single_vehicle_spawn_xtd.launch">
<arg name="x" value="3"/>
<arg name="y" value="0"/>
<arg name="z" value="0.5"/>
<arg name="R" value="0"/>
<arg name="P" value="0"/>
<arg name="Y" value="0"/>
<arg name="vehicle" value="iris"/>
<arg name="sdf" value="iris_realsense_camera"/>
<arg name="mavlink_udp_port" value="18571"/> # 选取合适的端口号
<arg name="mavlink_tcp_port" value="4561"/> # 选取合适的端口号
<arg name="ID" value="$(arg ID)"/>
<arg name="ID_in_group" value="$(arg ID_in_group)"/>
</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="$(eval 1 + arg('ID'))"/>
<arg name="tgt_component" value="1"/>
</include>
</group>
</launch>
这个launch文件我找不到 所以自行在下图的路径加了一个
cd ~/PX4_Firmware/
roslaunch px4 add_vehicle.launch
在其他gazebo仿真节点已经启动的情况下,在新终端中执行该launch文件,可以看到生成了新的iris飞机。
好烦呐 新增的无人机怎么控制啊~啊~ 啊~试了各种办法都不行,为什么呀,救命呀救命呀