ROS 社区需要遵循一些惯例,比如说 cmd_vel 用来表示控制命令,里程计用 odom 表示,激光雷达用 scan 表示,image_raw 用来表示图像
这些命名不是 ROS 2 强制规定,而是社区长期形成的通用惯例,好处是不同厂家、不同包之间可以互通:
/cmd_vel:速度控制指令,消息类型通常是geometry_msgs/msg/Twist/odom:里程计数据,消息类型是nav_msgs/msg/Odometry/scan:激光雷达扫描数据,消息类型是sensor_msgs/msg/LaserScan/image_raw:相机原始图像,消息类型是sensor_msgs/msg/Image
实际排查时不用猜名字,直接看系统里到底有哪些话题:
ros2 topic list # 列出所有话题 | |
ros2 topic info /cmd_vel # 查看某个话题的消息类型和收发节点 | |
ros2 interface show geometry_msgs/msg/Twist # 查看消息结构 |
怎么在 ros2 里面修改文件
“修改文件” 分两种情况:
- 修改功能包源码:直接编辑
src/下的源码,然后回到工作空间根目录重新构建,例如colcon build --packages-select <包名>,再source install/setup.bash让改动生效。 - 修改参数:不需要重新编译,可以用命令行参数(
--ros-args -p 参数名:=值)、YAML 参数文件(ros2 run <包名> <节点> --ros-args --params-file xxx.yaml)等方式动态传入。
参考资料:ROS 2 CLI 工具官方文档