ROS 2 提供了丰富的命令行工具,用于管理、调试和监控机器人系统。以下是一些常用的 ROS 2 命令及其语法和作用的详细解释。
1. 工作空间相关命令
colcon build
- 作用:构建 ROS 2 工作空间中的包。
- 语法:
colcon build [--packages-select <package_name>] [--symlink-install]
- 常用选项:
--packages-select
:仅构建指定的包。--symlink-install
:使用符号链接而不是复制文件,方便开发调试。
- 示例:
cd ~/ros2_ws colcon build --packages-select my_robot_package
source install/setup.bash
- 作用:设置当前终端的环境变量,使 ROS 2 能够找到工作空间中的包。
- 语法:
source install/setup.bash
- 说明:每次打开新终端或修改工作空间后都需要运行。
2. 包管理命令
ros2 pkg create
- 作用:创建一个新的 ROS 2 包。
- 语法:
ros2 pkg create <package_name> --build-type <build_type> --dependencies <dependencies>
- 常用选项:
--build-type
:指定构建类型,如ament_cmake
或ament_python
。--dependencies
:指定包的依赖项。
- 示例:
ros2 pkg create my_robot_package --build-type ament_cmake --dependencies rclcpp std_msgs
ros2 pkg list
- 作用:列出当前环境中所有可用的 ROS 2 包。
- 语法:
ros2 pkg list
ros2 pkg prefix
- 作用:显示指定包的安装路径。
- 语法:
ros2 pkg prefix <package_name>
- 示例:
ros2 pkg prefix my_robot_package
3. 节点相关命令
ros2 run
- 作用:运行指定包中的节点。
- 语法:
ros2 run <package_name> <executable_name>
- 示例:
ros2 run my_robot_package publisher_node
ros2 node list
- 作用:列出当前运行的节点。
- 语法:
ros2 node list
ros2 node info
- 作用:显示指定节点的详细信息,包括发布和订阅的话题、服务等。
- 语法:
ros2 node info <node_name>
- 示例:
ros2 node info /publisher_node
4. 话题相关命令
ros2 topic list
- 作用:列出当前所有活跃的话题。
- 语法:
ros2 topic list
ros2 topic echo
- 作用:实时显示指定话题的消息内容。
- 语法:
ros2 topic echo <topic_name>
- 示例:
ros2 topic echo /topic
ros2 topic info
- 作用:显示指定话题的详细信息,包括消息类型、发布者和订阅者。
- 语法:
ros2 topic info <topic_name>
- 示例:
ros2 topic info /topic
ros2 topic pub
- 作用:向指定话题发布消息。
- 语法:
ros2 topic pub <topic_name> <message_type> <message_data>
- 示例:
ros2 topic pub /topic std_msgs/msg/String "{data: 'Hello ROS 2'}"
5. 服务相关命令
ros2 service list
- 作用:列出当前所有活跃的服务。
- 语法:
ros2 service list
ros2 service call
- 作用:调用指定的服务。
- 语法:
ros2 service call <service_name> <service_type> <arguments>
- 示例:
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 3, b: 4}"
6. 参数相关命令
ros2 param list
- 作用:列出指定节点的参数。
- 语法:
ros2 param list <node_name>
ros2 param get
- 作用:获取指定节点的参数值。
- 语法:
ros2 param get <node_name> <parameter_name>
ros2 param set
- 作用:设置指定节点的参数值。
- 语法:
ros2 param set <node_name> <parameter_name> <value>
7. Launch 文件相关命令
ros2 launch
- 作用:启动一个 Launch 文件,运行多个节点或配置。
- 语法:
ros2 launch <package_name> <launch_file>
- 示例:
ros2 launch my_robot_package my_robot.launch.py
8. 调试和监控命令
ros2 bag record
- 作用:记录指定话题的消息到 bag 文件中。
- 语法:
ros2 bag record <topic_name1> <topic_name2> ...
- 示例:
ros2 bag record /topic
ros2 bag play
- 作用:回放 bag 文件中的消息。
- 语法:
ros2 bag play <bag_file>
rqt_graph
- 作用:可视化节点和话题之间的连接关系。
- 语法:
rqt_graph
rqt
- 作用:启动 ROS 2 的图形化工具,包括参数调整、话题监控等。
- 语法:
rqt
9. 系统信息命令
ros2 doctor
- 作用:检查 ROS 2 系统的健康状况。
- 语法:
ros2 doctor
ros2 wtf
- 作用:诊断 ROS 2 系统中的问题。
- 语法:
ros2 wtf
10. 其他常用命令
ros2 interface show
- 作用:显示指定消息、服务或动作的定义。
- 语法:
ros2 interface show <interface_name>
- 示例:
ros2 interface show std_msgs/msg/String
ros2 component load
- 作用:动态加载组件节点。
- 语法:
ros2 component load <container_node> <component_name>
总结
以上是 ROS 2 中常用的命令及其作用。通过这些命令,你可以方便地管理、调试和监控 ROS 2 系统。随着对 ROS 2 的深入使用,这些命令将成为你开发机器人应用的重要工具。