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>
相关推荐
丝斯20112 小时前
AI学习笔记整理(52)——大模型之Agent 智能体
人工智能·笔记·学习
lpfasd1232 小时前
《开发者技术及生态发展2030》研读报告
笔记·程序人生
小范馆2 小时前
ESP8266-01S学习笔记
笔记·stm32·学习·esp8266-01s
jimmyleeee2 小时前
人工智能基础知识笔记三十四:提升RAG效果的几种技术
人工智能·笔记
keep_moving_20233 小时前
uvm_mem_mam介绍
学习
再卷还是菜3 小时前
网安渗透学习小结--PHP源码调试方法,文件包含漏洞,PHP伪协议以及ctf题目解答
学习
Lonely 净土3 小时前
渗透学习笔记-前四天
笔记·学习
蓝桉~MLGT3 小时前
中级软考(软件工程师)第四章知识点——操作系统
学习
TensorFlowGAN3 小时前
渗测随堂总结笔记 1(未完,一二章+三章 01)
笔记