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

下面是 常用 ROS 命令详解,包含 ROS 1 和 ROS 2 的对比说明具体用法说明 以及 实用代码示例。这些命令适用于日常开发、调试、可视化、数据回放等任务,涵盖话题、节点、服务、参数、bag 录制等内容。


一、ROS 版本说明

功能分类ROS 1 命令ROS 2 命令
初始化环境source devel/setup.bashsource install/setup.bash
创建包catkin_create_pkgros2 pkg create
编译catkin_make / catkin buildcolcon build
运行节点rosrun pkg noderos2 run pkg node
启动系统roslaunch pkg file.launchros2 launch pkg file.py
查看话题rostopic listros2 topic list
监听话题rostopic echo /topicros2 topic echo /topic
发布消息rostopic pubros2 topic pub
参数管理rosparamros2 param
服务调用rosservice callros2 service call
消息结构rosmsg showros2 interface show
bag 录制rosbag recordros2 bag record
bag 回放rosbag playros2 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 联合调试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云SLAM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值