1.指令内容
bash
roscore #启动ros的第一步
运行结果

2.指令内容
bash
rqt_graph #查看当前正在运行的所有结点的关系
运行结果

3.指令内容
bash
rosnode #查看和管理节点的命令行工具
运行结果


4.指令内容
bash
rostopic #查看和管理话题的命令行工具
运行结果


5.指令内容
bash
rosmsg #查看和管理消息类型的命令行工具
运行结果


6.指令内容
bash
rosservice #查看和管理服务的命令行工具
运行结果


7.指令内容
bash
rosbag #录制和回放ROS消息数据的命令行工具
运行结果

8.指令内容
bash
rosrun turtlesim turtlesim_node #打开小乌龟节点
rosrun <package_name> <executable_name> [参数] #单节点启动指令
运行结果

9.指令内容
bash
roslaunch <package_name> <launch_file> [参数] #多节点启动指令
运行结果
roslaunch是用于启动和管理多个节点的核心工具。它通过一个结构化的XML文件,不仅实现了同时启动多个节点,还能提供参数管理、生命周期协调、依赖处理和错误恢复等高级功能,效果包含但是大于sh文件的rosrun脚本集成。
launch文件的基本结构如下:
bash
<launch>
<!-- 第一部分:参数定义 -->
<!-- 说明:在此定义所有可配置参数,便于集中管理 -->
<!-- 1. 声明可传递的参数 (Arguments) -->
<!-- 格式:<arg name="参数名" default="默认值" doc="参数说明"/> -->
<arg name="use_sim_time" default="false" doc="是否使用仿真时间 (Gazebo)"/>
<arg name="robot_ip" default="192.168.1.100" doc="机器人主控IP地址"/>
<arg name="enable_camera" default="true" doc="是否启动相机节点"/>
<!-- 2. 设置全局参数 (Parameters) -->
<!-- 格式:<param name="参数名" value="参数值" /> -->
<param name="/robot_description"
command="$(find xacro)/xacro '$(find my_robot)/urdf/robot.urdf.xacro'" />
<param name="use_sim_time" value="$(arg use_sim_time)"/>
<!-- 第二部分:节点与子系统启动 -->
<!-- 说明:按照依赖顺序启动节点,关键节点可设置守护属性 -->
<!-- 1. 启动核心驱动节点 (通常标记为 required) -->
<node pkg="robot_driver"
type="driver_node"
name="driver"
output="screen"
required="true">
<!-- 节点私有参数 -->
<param name="ip" value="$(arg robot_ip)" />
<!-- 话题重映射 -->
<remap from="cmd_vel" to="/robot/cmd_vel" />
</node>
<!-- 2. 条件启动:仅当 enable_camera 为 true 时启动 -->
<group if="$(arg enable_camera)">
<node pkg="usb_cam"
type="usb_cam_node"
name="camera"
output="screen">
<param name="video_device" value="/dev/video0" />
<!-- 从YAML文件加载相机标定参数 -->
<rosparam file="$(find my_robot)/config/camera_calibration.yaml" />
</node>
</group>
<!-- 3. 带有延迟启动的节点(等待依赖就绪) -->
<node pkg="laser_filter"
type="scan_to_cloud"
name="laser_filter"
launch-prefix="bash -c 'sleep 3.0; $0 $@'">
<!-- 从文件加载复杂参数配置 -->
<rosparam file="$(find my_robot)/config/filter_params.yaml"/>
</node>
<!-- 4. 可自动重启的非关键算法节点 -->
<node pkg="my_navigation"
type="path_planner"
name="planner"
respawn="true"
respawn_delay="2">
</node>
<!-- 第三部分:包含其他launch文件 -->
<!-- 说明:模块化设计,包含子系统配置 -->
<include file="$(find my_robot)/launch/sensors.launch">
<!-- 向被包含的launch文件传递参数 -->
<arg name="laser_enabled" value="true"/>
</include>
<!-- 第四部分:工具启动 -->
<!-- 说明:启动可视化、监控等调试工具 -->
<node pkg="rviz"
type="rviz"
name="rviz"
args="-d $(find my_robot)/config/default.rviz"
unless="$(arg headless)"> <!-- unless表示条件不满足时启动 -->
</node>
</launch>