ROS 核心知识点和常用的命令行详细总结

目录

前言

[一、ROS 核心基础知识点](#一、ROS 核心基础知识点)

[1. 核心概念](#1. 核心概念)

[2. 通信方式对比](#2. 通信方式对比)

[二、ROS 必备命令行](#二、ROS 必备命令行)

[1. 启动类命令](#1. 启动类命令)

[2. 工作空间 & 编译命令](#2. 工作空间 & 编译命令)

[3. 节点相关命令](#3. 节点相关命令)

[4. 话题相关命令](#4. 话题相关命令)

[5. 服务相关命令](#5. 服务相关命令)

[6. 参数服务器命令](#6. 参数服务器命令)

[7. 消息 / 服务查看命令](#7. 消息 / 服务查看命令)

[8. 录制与回放数据(Bag 包)](#8. 录制与回放数据(Bag 包))

[9. 功能包相关命令](#9. 功能包相关命令)

[10. 可视化与调试命令](#10. 可视化与调试命令)

[三、ROS 开发常用文件](#三、ROS 开发常用文件)

[四、ROS 坐标系与 TF](#四、ROS 坐标系与 TF)

五、最实用的一套开发流程

[六、ROS1/ROS2 命令对照](#六、ROS1/ROS2 命令对照)

[1、环境 & 编译](#1、环境 & 编译)

2、运行节点

[3、节点调试 node](#3、节点调试 node)

[4、话题调试 topic](#4、话题调试 topic)

[5、服务调试 service](#5、服务调试 service)

[6、参数 param](#6、参数 param)

[7、消息 / 接口查看 msg/srv](#7、消息 / 接口查看 msg/srv)

[8、Bag 数据录制回放](#8、Bag 数据录制回放)

9、功能包路径查找

[10、TF 坐标变换](#10、TF 坐标变换)

11、通用可视化(命令不变)

[12、ROS2 独有常用命令(ROS1 没有)](#12、ROS2 独有常用命令(ROS1 没有))

13、最简工作流程对比


前言

这是 ROS1(Noetic/Melodic) 最常用、工程必用的全套知识点和命令,覆盖入门到开发,以及 ROS1与 ROS2之间的对比。

一、ROS 核心基础知识点

1. 核心概念

  • 节点 (Node)

    • 最小执行单元,一个功能一个节点(如摄像头、激光雷达、控制、导航)
    • 节点之间松耦合,方便调试、复用
  • 话题 (Topic)

    • 异步通信,发布 / 订阅(Publisher/Subscriber)模式
    • 适合连续数据:图像、激光、里程计、IMU
    • 一对多、多对多通信
  • 服务 (Service)

    • 同步通信,请求 / 响应(Request/Response)模式
    • 适合一次性指令:开关、查询、触发动作
    • 一对一通信
  • 消息 (Message)

    • 话题 / 服务的数据格式(.msg / .srv
    • 标准类型:std_msgs/Stringsensor_msgs/Image
  • 功能包 (Package)

    • ROS 软件组织单元,代码、配置、launch 都放在包里
    • 依赖:CMakeLists.txt + package.xml
  • 工作空间 (Workspace)

    • 存放功能包的目录,结构固定:

      catkin_ws/
      ├── src/ # 放功能包
      ├── build/
      ├── devel/
      └── install/

ROS Master

  • 节点管理器(roscore 启动)
  • 所有节点必须先注册到 Master 才能通信

2. 通信方式对比

方式 通信模型 同步 / 异步 典型用途
话题 Topic 发布 - 订阅 异步 传感器数据、连续流
服务 Service 请求 - 响应 同步 指令调用、单次查询
动作 Action 目标 - 反馈 - 结果 异步可抢占 长时任务(导航、抓取)
参数 Parameter 全局字典 读写 配置参数(速度、阈值)

二、ROS 必备命令行

1. 启动类命令

复制代码
# 启动 ROS 核心(必须第一个运行)
roscore

# 启动 launch 文件(自动启动多个节点+配置参数)
roslaunch 包名 launch文件名.launch

# 直接启动单个节点
rosrun 包名 节点名

2. 工作空间 & 编译命令

复制代码
# 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make

# 刷新环境(每次编译后必须执行)
source devel/setup.bash

# 永久生效(写入配置文件)
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

3. 节点相关命令

复制代码
# 查看所有运行节点
rosnode list

# 查看节点信息(发布/订阅话题、服务)
rosnode info /节点名

# 杀死节点
rosnode kill /节点名

# 杀死所有节点
rosnode kill -a

4. 话题相关命令

复制代码
# 查看所有话题
rostopic list

# 查看话题数据类型
rostopic type /话题名

# 实时打印话题内容
rostopic echo /话题名

# 发布一条消息到话题
rostopic pub /话题名 消息类型 "数据内容" -r 频率

# 例子:发布速度指令(循环 10Hz)
rostopic pub /cmd_vel geometry_msgs/Twist "linear: {x: 0.2}" -r 10

# 查看话题发布频率
rostopic hz /话题名

# 查看话题带宽
rostopic bw /话题名

5. 服务相关命令

复制代码
# 查看所有服务
rosservice list

# 调用服务
rosservice call /服务名 "参数"

# 例子:清空代价地图(导航常用)
rosservice call /clear_costmaps "{}"

# 查看服务类型
rosservice type /服务名

6. 参数服务器命令

复制代码
# 查看所有参数
rosparam list

# 查看参数值
rosparam get /参数名

# 设置参数值
rosparam set /参数名 值

# 保存参数到文件
rosparam dump params.yaml

# 从文件加载参数
rosparam load params.yaml

7. 消息 / 服务查看命令

复制代码
# 查看消息格式
rosmsg show 消息类型
rosmsg show sensor_msgs/Image

# 查看服务格式
rossrv show 服务类型

8. 录制与回放数据(Bag 包)

复制代码
# 录制所有话题
rosbag record -a

# 录制指定话题
rosbag record /话题1 /话题2

# 回放 bag
rosbag play 文件名.bag

# 回放时暂停、加速、循环
rosbag play -r 2 xxx.bag  # 2倍速
rosbag play --loop xxx.bag # 循环播放
rosbag play --pause xxx.bag # 启动暂停

# 查看 bag 信息
rosbag info xxx.bag

9. 功能包相关命令

复制代码
# 搜索功能包
rospack find 包名

# 进入功能包目录
roscd 包名

# 编辑功能包内文件
rosed 包名 文件名

10. 可视化与调试命令

复制代码
# 2D 可视化(查看图像、激光、TF、路径)
rqt_image_view
rqt_plot

# 全能可视化工具
rqt

# 3D 可视化(机器人模型、点云、地图)
rviz

# 计算图(查看节点-话题连接关系)
rqt_graph

三、ROS 开发常用文件

  • CMakeLists.txt

    • 编译规则:依赖、消息生成、可执行文件、链接库
  • package.xml

    • 包信息:名称、版本、依赖库
  • launch 文件

    • 启动节点、设置参数、加载配置、配置 RViz
    • 格式:.launch(XML 语法)
  • URDF/Xacro

    • 机器人模型描述文件(关节、连杆、坐标系)
  • Msg/Srv 文件

    • 自定义消息 / 服务格式

四、ROS 坐标系与 TF

复制代码
# 查看 TF 树
rosrun rqt_tf_tree rqt_tf_tree

# 查看两个坐标系关系
rosrun tf tf_echo base_link map

五、最实用的一套开发流程

  • 打开终端:roscore
  • 打开机器人 / 仿真:roslaunch xxx xxx.launch
  • 查看节点:rosnode list
  • 查看话题:rostopic list
  • 打印数据:rostopic echo /xxx
  • 可视化:rviz / rqt_graph
  • 控制机器人:rostopic pub /cmd_vel ...
  • 录制数据:rosbag record -a

六、ROS1/ROS2 命令对照

核心规律:ROS1 分散指令 → ROS2 统一 ros2 + 子命令;ROS2无 roscore,DDS 自动发现节点

1、环境 & 编译

功能 ROS1 ROS2
启动核心 roscore(必启) 不需要,取消 Master
编译工作区 catkin_make colcon build单包编译:colcon build --packages-select pkg_name
刷新环境 source devel/setup.bash source install/setup.bash
永久配置环境 echo "source xxx" >> ~/.bashrc 通用 同上

2、运行节点

功能 ROS1 ROS2
运行单个节点 rosrun pkg exe ros2 run pkg exe调试日志:ros2 run pkg exe --ros-args --log-level debug
批量启动 launch roslaunch pkg xxx.launch ros2 launch pkg xxx.launch.py

3、节点调试 node

功能 ROS1 ROS2
查看所有节点 rosnode list ros2 node list
查看节点发布订阅 rosnode info /node_name ros2 node info /node_name
杀死节点 rosnode kill /node ros2 node kill /node

4、话题调试 topic

功能 ROS1 ROS2
列出话题 rostopic list ros2 topic list附带消息类型:ros2 topic list -t
打印话题数据 rostopic echo /topic ros2 topic echo /topic
循环发布消息 rostopic pub /cmd_vel geometry_msgs/Twist "{linear:{x:0.1}}" -r 10 ros2 topic pub -r 10 /cmd_vel geometry_msgs/msg/Twist "{linear:{x:0.1}}"
统计话题频率 rostopic hz /topic ros2 topic hz /topic
查看话题消息类型 rostopic type /topic ros2 topic type /topic

5、服务调试 service

功能 ROS1 ROS2
列出所有服务 rosservice list ros2 service list
调用服务 rosservice call /service "{}" ros2 service call /service pkg/srv/SrvType "{}"
查看服务类型 rosservice type /service ros2 service type /service

6、参数 param

功能 ROS1 ROS2
列举参数 rosparam list ros2 param list
获取参数 rosparam get /param ros2 param get /param
设置参数 rosparam set /param 10 ros2 param set /param 10
参数存入 yaml rosparam dump params.yaml ros2 param dump --output params.yaml /node_name
从 yaml 加载 rosparam load params.yaml ros2 param load params.yaml /node_name

7、消息 / 接口查看 msg/srv

功能 ROS1 ROS2
查看消息定义 rosmsg show std_msgs/String ros2 interface show std_msgs/msg/String
查看服务定义 rossrv show std_srvs/SetBool ros2 interface show std_srvs/srv/SetBool

8、Bag 数据录制回放

功能 ROS1 ROS2
录制全部话题 rosbag record -a ros2 bag record -o bag_name /topic1 /topic2
录制指定话题 rosbag record /t1 /t2 ros2 bag record /t1 /t2
查看 bag 信息 rosbag info xxx.bag ros2 bag info xxx.db3
回放 bag rosbag play xxx.bag ros2 bag play xxx.db3倍速:-r 2 循环:--loop

*ROS2 bag 默认后缀.db3

9、功能包路径查找

功能 ROS1 ROS2
查找包路径 rospack find pkg ros2 pkg prefix pkg
直接进入包目录 roscd pkg cd $(ros2 pkg prefix --share pkg)
查看包内可执行文件 无统一命令 ros2 pkg executables pkg

10、TF 坐标变换

功能 ROS1 ROS2
查看两坐标系变换 rosrun tf tf_echo base_link map ros2 run tf2_ros tf2_echo base_link map
可视化 TF 树 rosrun rqt_tf_tree rqt_tf_tree 命令完全通用

11、通用可视化(命令不变)

复制代码
rviz
rqt_graph
rqt_image_view
rqt_plot

12、ROS2 独有常用命令(ROS1 没有)

复制代码
# 系统自检,排查DDS、依赖故障
ros2 doctor
# 查看ROS2版本
ros2 version
# Action动作调试
ros2 action list
ros2 action send_goal

13、最简工作流程对比

ROS1: roscore → roslaunch → 调试话题 / 服务 → rviz/rosbag

ROS2: 跳过 roscore → ros2 launch → ros2 topic/node → rviz/ros2 bag

相关推荐
念恒123061 小时前
进程间通信
linux·服务器·网络
tang7451639621 小时前
Huawei Cloud EulerOS 2.0(x8664)安装OpenJDK 2120260323
linux·运维·centos
2301_777998341 小时前
基础IO:IO操作&&重定向
linux·c语言
夜月yeyue1 小时前
TCP/IP 协议解析
linux·服务器·c语言·网络·网络协议·tcp/ip
__Witheart__1 小时前
Android 驱动编译为模块或者built-in内核
android·linux·数据库
好名字更能让你们记住我1 小时前
通过docker在本地部署博客系统服务
linux·运维·服务器·ubuntu·docker·容器
hai3152475432 小时前
FiveOS V3.0 交付(微服务器操作系统版 · 物理合规修正
linux·人工智能·spring boot·后端·神经网络·机器学习
文青小兵2 小时前
Linux云计算——docker 告警(六)
linux·运维·docker·云计算·prometheus
xiep14383335102 小时前
CentOS 7.9 安装 TigerVNC
linux·运维·centos