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>
相关推荐
千寻girling12 小时前
记录第一次学习 Docker
学习·docker·容器
Kobebryant-Manba12 小时前
学习RNN(简洁实现)
人工智能·rnn·学习
知南x13 小时前
【DPDK例程学习】(4) l2fwd
学习·word
努力努力再努力FFF13 小时前
大学四年AI能力规划:从入门学习到简历表达
人工智能·学习
Litluecat13 小时前
配合多角色提示语3,学习AI漫剧(刚开始学)
人工智能·学习·ai·提示词·短剧·漫剧
三品吉他手会点灯13 小时前
STM32F103 学习笔记-24-I2C-读写EEPROM(第1节)-I2C物理层介绍
笔记·stm32·学习
MartinYeung513 小时前
[论文学习]大型语言模型中个人可识别资讯(PII)的机器遗忘技术:UnlearnPII 基准与 PERMU_tok 方法的深度分析
人工智能·学习·语言模型
fanged14 小时前
Linux内核学习21--V4L2学习3(应用)(TODO)
学习
万物更新_14 小时前
vue框架
前端·javascript·vue.js·笔记
上海观智网络15 小时前
上海小程序定制开发合同怎么签?需要注意什么?
经验分享·笔记·小程序