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>
相关推荐
敬往事一杯酒哈5 小时前
海康 AGV 导航读码器学习
学习
qq_284274057 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_284274058 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan20249 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
小雪崩10 小时前
嵌入式学习 day64:字符设备驱动
学习
深圳老胡10 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
个 人 练 习 生10 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
坤坤子吖10 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台11 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础12311 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell