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>
相关推荐
05候补工程师28 分钟前
【ROS 2 具身智能】Gazebo 仿真避坑指南:从“幽灵机器人”到传感器数据流打通
人工智能·经验分享·笔记·ubuntu·机器人
chushiyunen33 分钟前
pandas使用笔记、数据清洗、json_normalize
笔记·pandas
HERR_QQ34 分钟前
端到端课程自用 4 规划 基于自规划AR的端到端规划 AI 笔记
人工智能·笔记·自动驾驶·transformer
Amazing_Cacao43 分钟前
CFCA精品可可产区认证课程风土解析(美洲):打破风味堆叠的假象,建立时间轴上的层次展开阅读系统
学习
永远不会的CC1 小时前
浙江华昱欣实习(4月23日~ 4月19日)
后端·学习
二哈赛车手1 小时前
新人笔记---实现简易版的rag的bm25检索(利用ES),以及RAG上传时的ES与向量数据库双写
java·数据库·笔记·spring·elasticsearch·ai
爱上好庆祝1 小时前
学习js的第五天
前端·css·学习·html·css3·js
qiaozhangchi1 小时前
求解器学习笔记
笔记·python·学习
不会编程的懒洋洋2 小时前
C# P/Invoke 基础
开发语言·c++·笔记·安全·机器学习·c#·p/invoke
bendandawugui2 小时前
PCIe协议学习-PCIe的No Snoop Attr使用
学习