如何修改launch文件的内容
2025-12-19
XTDrone
00
请注意,本文编写于 45 天前,最后修改于 45 天前,其中某些信息可能已经过时。

目录

什么是仿真launch文件
仿真launch文件的工作原理
如何修改launch
启动launch文件中定义的所有节点无需指定目录
原理
需要注意的例外:
1. 相对路径问题
2. 包查找路径

什么是仿真launch文件

在ROS(机器人操作系统)中,launch文件是一种XML格式的配置文件,它的核心作用是通过一条命令,同时启动多个节点和设置多个参数,从而简化复杂系统的启动过程。

而仿真launch文件特指用于启动机器人仿真的launch文件。在您的PX4无人机仿真场景中,indoor1.launch就是一个典型的仿真launch文件。

仿真launch文件的工作原理

运行

bash
展开代码
roslaunch px4 indoor1.launch

这个launch文件实际上会启动一系列组件:

  • 1、 PX4 SITL(软件在环仿真)
xml
展开代码
<!-- 启动PX4固件的软件在环版本 --> <node name="sitl" pkg="px4" type="px4" ... />
  • 2、Gazebo仿真环境
xml
展开代码
<!-- 启动Gazebo物理仿真器 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="indoor1.world"/> </include>
  • 3、无人机模型
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"/>
  • 4、其他必要的ROS节点
    • MAVROS(与PX4通信的ROS接口)
    • 传感器数据处理节点
    • 可能的控制算法节点

需要修改摄像头模型,把仿真launch文件的iris_stereo_camera换成iris_realsense_camera,这样才能有深度图数据

如何修改launch

首先要知道launch文件在哪 image.png

bash
展开代码
cd /root/XTDrone/sitl_config/launch/ vim indoor1.launch

搜索关键词iris_stereo_camera(在Vim中),方法如下

  • 按下 /键
  • 输入要搜索的关键字(如 iris_stereo_camera)
  • 按 Enter开始搜索
  • 光标会跳到第一个匹配项

浏览搜索结果

  • 下一个匹配项:按 n(next)
  • 上一个匹配项:按 N(大写 N) 或 Shift+n

修改完成后:

  • 按 i 进入插入模式
  • 按 Esc 退出插入模式
  • 保存退出(:wq)

启动launch文件中定义的所有节点无需指定目录

无论在哪个目录下启动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包路径,不依赖当前目录:

需要注意的例外:

1. 相对路径问题

如果launch文件中有相对路径,这种写法在不同目录下启动,ROS会找不到文件。

2. 包查找路径

启动命令必须能找到对应的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 许可协议。转载请注明出处!