下面是 常用 ROS 命令详解,包含 ROS 1 和 ROS 2 的对比说明、具体用法说明 以及 实用代码示例。这些命令适用于日常开发、调试、可视化、数据回放等任务,涵盖话题、节点、服务、参数、bag 录制等内容。
一、ROS 版本说明
功能分类 | ROS 1 命令 | ROS 2 命令 |
---|---|---|
初始化环境 | source devel/setup.bash | source install/setup.bash |
创建包 | catkin_create_pkg | ros2 pkg create |
编译 | catkin_make / catkin build | colcon build |
运行节点 | rosrun pkg node | ros2 run pkg node |
启动系统 | roslaunch pkg file.launch | ros2 launch pkg file.py |
查看话题 | rostopic list | ros2 topic list |
监听话题 | rostopic echo /topic | ros2 topic echo /topic |
发布消息 | rostopic pub | ros2 topic pub |
参数管理 | rosparam | ros2 param |
服务调用 | rosservice call | ros2 service call |
消息结构 | rosmsg show | ros2 interface show |
bag 录制 | rosbag record | ros2 bag record |
bag 回放 | rosbag play | ros2 bag play |
二、ROS 1 常用命令详解
1. 节点管理
rosnode list # 查看所有节点
rosnode info /node_name # 查看某个节点信息
rosrun package_name node_name # 运行节点
roslaunch package_name launch_file.launch # 启动 launch 文件
2. 话题操作
rostopic list # 查看话题列表
rostopic echo /topic_name # 打印话题数据
rostopic info /topic_name # 查看话题发布者和订阅者
rostopic pub /topic std_msgs/String "data: 'hello'" -r 10 # 发布数据
3. 服务操作
rosservice list # 查看服务
rosservice call /service_name "{}" # 调用服务
rosservice type /srv_name # 查看服务类型
rossrv show srv_type # 查看服务定义
4. 参数操作
rosparam list # 所有参数
rosparam get /param # 获取参数
rosparam set /param value # 设置参数
rosparam delete /param # 删除参数
5. 消息工具
rosmsg list # 所有消息类型
rosmsg show std_msgs/String # 查看消息结构
三、ROS 2 常用命令详解(推荐)
1. 基础节点操作
ros2 run <package> <node> # 运行节点
ros2 launch <package> <file.py> # 启动系统
示例:
ros2 run demo_nodes_cpp talker
ros2 launch demo_nodes_cpp talker_listener_launch.py
2. 话题工具
ros2 topic list
ros2 topic echo /topic_name
ros2 topic info /topic_name
ros2 topic pub /topic_name std_msgs/msg/String "{data: 'hello'}" -r 1
示例:
ros2 topic pub /chatter std_msgs/msg/String "{data: 'Hi ROS 2'}" -r 5
3. 服务操作
ros2 service list
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 1, b: 2}"
ros2 service type /srv_name
ros2 interface show example_interfaces/srv/AddTwoInts
4. 参数工具
ros2 param list # 当前节点的参数
ros2 param get /node_name param
ros2 param set /node_name param value
5. 消息/服务结构查看
ros2 interface list
ros2 interface show std_msgs/msg/String
四、ROS Bag 数据录制与回放(ROS 2)
1. 录制话题数据
ros2 bag record /topic1 /topic2
示例:
ros2 bag record /camera/image_raw /odom
2. 回放 bag 文件
ros2 bag play <bag_file>
五、可视化与调试
rqt_graph # 图形化查看节点-话题关系
rviz2 # 可视化地图、点云、路径、TF等
ros2 run tf2_tools view_frames # 生成TF树视图
六、代码示例:话题发布(ROS 2 C++)
// talker.cpp
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
int main(int argc, char * argv[]) {
rclcpp::init(argc, argv);
auto node = rclcpp::Node::make_shared("talker");
auto publisher = node->create_publisher<std_msgs::msg::String>("chatter", 10);
rclcpp::WallRate loop_rate(1);
while (rclcpp::ok()) {
auto msg = std_msgs::msg::String();
msg.data = "Hello ROS 2";
publisher->publish(msg);
rclcpp::spin_some(node);
loop_rate.sleep();
}
rclcpp::shutdown();
return 0;
}
七、建议与拓展
- 使用
ros2 doctor
检查系统依赖状态 - 用
colcon build --packages-select
精选构建包 - 启动后建议
rqt_graph
+rqt_console
+rviz2
联合调试