ROS1/ROS2 中常用命令详解和代码示例

下面是 常用 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 联合调试

你可能感兴趣的:(ROS,机器人系统,ROS2/ROS1,开发工具,自动加速,SLAM,机器人,路径规划)