ROS launch文件编写<launch> <!-- 1. 启动Gazebo仿真环境 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="paused" value="false"/> <arg name="use_sim_time" value="true"/> <arg name="gui" value="true"/> <!-- 显示Gazebo界面 --> </include> <!-- 2. 加载机器人模型到Gazebo --> <param name="robot_description" command="$(find xacro)/xacro '$(find my_robot)/urdf/my_robot.urdf.xacro'" /> <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model my_robot -x 0 -y 0 -z 0.5" /> <!-- 3. 启动激光雷达节点(仿真数据) --> <node pkg="gazebo_ros" type="gazebo_ros_laser" name="lidar_node" output="screen"> <remap from="scan" to="/laser_scan"/> </node> <!-- 4. 启动控制节点 --> <node pkg="my_control_pkg" type="control_node.py" name="control_node" output="screen"/> </launch>
时间: 2025-05-18 17:12:08 浏览: 39
### 正确编写的ROS Launch文件示例
为了实现启动Gazebo仿真环境、加载URDF机器人模型、配置激光雷达以及控制节点的功能,可以通过创建一个综合的Launch文件来完成这些任务。以下是具体的最佳实践方法。
#### 综合Launch文件设计
以下是一个完整的ROS Launch文件模板,包含了启动Gazebo仿真环境、加载URDF机器人模型、配置激光雷达和控制节点的核心逻辑:
```xml
<launch>
<!-- (1) 设置参数 -->
<param name="robot_description" command="$(find xacro)/xacro $(find my_robot_package)/urdf/my_robot.urdf.xacro" />
<!-- (2) 启动Gazebo仿真环境 -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find my_robot_package)/worlds/my_custom.world" />
<arg name="paused" default="false" />
<arg name="use_sim_time" default="true" />
<arg name="gui" default="true" />
</include>
<!-- (3) 在Gazebo中加载机器人模型 -->
<node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf" output="screen"
args="-urdf -model my_robot -param robot_description" />
<!-- (4) 配置激光雷达插件 -->
<group ns="lidar">
<node pkg="gazebo_plugins" type="gazebo_ros_laser" name="gazebo_ros_lidar_node" output="screen">
<param name="frame_id" value="laser_frame" />
<param name="topicName" value="/scan" />
<param name="update_rate" value="10.0" />
</node>
</group>
<!-- (5) 控制节点 -->
<node pkg="ros_control_boilerplate" type="my_controller_node" name="controller_node" output="screen">
<remap from="/cmd_vel" to="/my_robot/cmd_vel" />
<param name="~wheel_radius" value="0.05" />
<param name="~wheel_separation" value="0.2" />
</node>
</launch>
```
---
#### 关键点解析
1. **设置`robot_description`参数**
使用XACRO工具将复杂的URDF文件转换为标准XML格式并存储到`robot_description`参数中[^1]。这一步确保了后续节点能够访问标准化的机器人描述数据。
2. **启动Gazebo仿真环境**
利用`gazebo_ros`包中的`empty_world.launch`脚本初始化Gazebo仿真环境,并通过传递自定义世界文件(`my_custom.world`)调整场景布局[^2]。同时设置了暂停状态、时间同步选项以及GUI显示模式。
3. **加载机器人模型至Gazebo**
调用`gazebo_ros/spawn_model`节点,在Gazebo环境中实例化由`robot_description`指定的机器人模型[^2]。此过程支持多种坐标系定位方式,默认放置于原点位置。
4. **配置激光雷达插件**
定义了一个名为`gazebo_ros_laser`的节点负责模拟激光扫描仪的行为[^3]。其中指定了帧ID、话题名称及更新频率等重要属性,便于其他模块订阅传感器数据流。
5. **运行控制器节点**
添加了一款基于`ros_control_boilerplate`框架开发的控制程序作为动作执行单元[^3]。它接收来自导航栈或其他源发出的速度指令并通过内部算法计算驱动轮转速反馈给物理引擎。
---
#### 注意事项
- 确保所有依赖项已安装完毕,例如`gazebo_ros`, `gazebo_plugins` 和 `ros_control_boilerplate`.
- 替换路径变量`(e.g., my_robot_package)`以匹配实际项目目录结构.
- 如果存在额外硬件接口需求,则需扩展相应功能模块.
---
阅读全文
相关推荐



















