ROS1学习笔记(一)

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>
相关推荐
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白20267 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要7 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓7 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎7 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
L***一8 小时前
2026届大专跨境电商专业毕业生就业能力提升路径探析
学习
.小墨迹8 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
ZH15455891318 小时前
Flutter for OpenHarmony Python学习助手实战:模块与包管理的实现
python·学习·flutter
山岚的运维笔记8 小时前
SQL Server笔记 -- 第20章:TRY/CATCH
java·数据库·笔记·sql·microsoft·sqlserver
Gain_chance8 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip