在ROS(机器人操作系统)中,launch文件是一种XML格式的配置文件,它的核心作用是通过一条命令,同时启动多个节点和设置多个参数,从而简化复杂系统的启动过程。
而仿真launch文件特指用于启动机器人仿真的launch文件。在您的PX4无人机仿真场景中,indoor1.launch就是一个典型的仿真launch文件。
运行
bash展开代码roslaunch px4 indoor1.launch
这个launch文件实际上会启动一系列组件:
xml展开代码<!-- 启动PX4固件的软件在环版本 -->
<node name="sitl" pkg="px4" type="px4" ... />
xml展开代码<!-- 启动Gazebo物理仿真器 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="indoor1.world"/>
</include>
xml展开代码<!-- 这里是您要修改的关键部分 -->
<!-- 在Gazebo中生成指定的无人机模型 -->
<node name="spawn_model" pkg="gazebo_ros" type="spawn_model"
args="-sdf -file $(find mavlink_sitl_gazebo)/models/iris_stereo_camera/iris_stereo_camera.sdf
-model iris
-x 0 -y 0 -z 0.5"/>
需要修改摄像头模型,把仿真launch文件的iris_stereo_camera换成iris_realsense_camera,这样才能有深度图数据
首先要知道launch文件在哪

bash展开代码cd /root/XTDrone/sitl_config/launch/
vim indoor1.launch
搜索关键词iris_stereo_camera(在Vim中),方法如下
浏览搜索结果
修改完成后:
无论在哪个目录下启动launch文件,都会启动launch文件中定义的所有节点。
bash展开代码# 在任意目录执行,效果完全相同
cd ~
roslaunch px4 indoor1.launch
# 或者在
cd /tmp
roslaunch px4 indoor1.launch
# 或者在其他任何目录
roslaunch px4 indoor1.launch
结果:启动的都是launch文件中定义的那些节点(PX4 SITL、Gazebo、MAVROS等)。
launch文件中使用的是绝对路径或ROS包路径,不依赖当前目录:
如果launch文件中有相对路径,这种写法在不同目录下启动,ROS会找不到文件。
启动命令必须能找到对应的ROS包:
bash展开代码# 如果当前终端没有source ROS环境
roslaunch px4 indoor1.launch
# 会报错:找不到px4包
# 必须确保在正确的环境中
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
roslaunch px4 indoor1.launch
所以,在正确的ROS环境下,无论在哪个目录执行roslaunch px4 indoor1.launch,都会启动launch文件中定义的所有节点,只是当前工作目录会不同(这可能会影响某些依赖当前目录的脚本)
本文作者:cc
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!