目录
ROS2命令行工具(Command Line Interface CLI)
一、配置环境
1.1 命令概览
1.2 命令解释
1.2.1 设置环境变量
终端临时添加ROS2环境变量
source /opt/ros/humble/setup.bash
终端永久添加ROS2环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
1.2.2 查看ROS2版本
检查ROS2的版本及所使用的python版本
printenv | grep -i ROS
1.2.3 设置DOMAIN ID变量
终端临时设置ROS2的DDS Domain变量
export ROS_DOMAIN_ID=<your_domain_id>
终端永久设置ROS2的DDS Domain变量
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
1.2.4 设置LOCALHOST变量
终端临时设置ROS2的ROS_LOCALHOST_ONLY变量
export ROS_LOCALHOST_ONLY=1
终端永久设置ROS2的ROS_LOCALHOST_ONLY变量
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc
默认情况下,ROS 2 通信不限于 localhost。 ROS_LOCALHOST_ONLY环境变量允将 ROS 2 通信限制为仅本地主机。这意味着 ROS 2 系统及其主题、服务和操作对本地网络上的其他计算机不可见。
二、工作空间
2.1 命令概览
2.2 命令解释
2.2.1 创建工作空间
mkdir -p ~/ros2_ws/src
2.2.2 创建功能包
ros2 pkg create <package-name> --build-type {cmake,ament_cmake,ament_python} --dependencies <dependencies -name>
--build-type 用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake,--dependencies 指的是这个功能包的依赖
举例:
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclpy
2.2.3 查询包的可执行文件
ros2 pkg executables <package-name>
举例:
ros2 pkg executables turtlesim
列出turtlesim功能包的所有可执行文件
2.2.4 查看当前目录下所有的包
ros2 pkg list
2.2.5 查看包所在路径的前缀
ros2 pkg prefix <package-name>
2.2.6 查看包的清单描述文件
ros2 pkg xml turtlesim
三、启动
3.1 命令概览
3.2 命令解释
3.2.1 启动launch文件
ros2 launch <package-name> <launch_file>
举例:
ros2 launch turtlesim_mimic_launch.py
四、Node
4.1 命令概览
4.2 命令解释
4.2.1 运行单个节点
ros2 run <package_name> <executable_name>
4.2.2 重映射节点名称
ros2 run <package_name> <executable_name> --ros-args --remap __node:=my_turtle
举例:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
重新映射允许您将默认节点属性(如节点名称、主题名称、服务名称等)重新分配给自定义值。
4.2.3 查看运行的节点列表
ros2 node list
4.2.4 查看节点信息
ros2 node info <node_name>
五、Topic
5.1 命令概览
5.2 命令解释
5.2.1 查看话题列表
ros2 topic list
5.2.2 打印话题内容
ros2 topic echo <topic_name>
5.2.3 查看话题信息
ros2 topic info <topic_name>
5.2.4 手动发布话题内容
ros2 topic pub <topic_name> <msg_type> <args>
举例:
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
以1Hz频率发布
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
只发布一次,--once是一个可选参数,意思是“发布一条消息然后退出”。
Tips:在手动发布话题内容时,填写话题名称后,<msg_type>和<args>都可以通过Tab
按键补全出来。
5.2.5 查看话题发布频率
ros2 topic hz <topic_name>
六、Service
6.1 命令概览
6.2 命令解释
6.2.1 查看服务列表
ros2 service list
6.2.2 查看service接口类型
ros2 service type <service_name>
举例:
ros2 service type /add_two_ints
6.2.3 查找使某个接口的service
ros2 service find <service_type>
举例:
ros2 service find example_interfaces/srv/AddTwoInts
6.2.4 手动调用服务
ros2 service call <service_name> <service_type> <args>
举例:
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
七、Parameter
7.1 命令概览
7.2 命令解释
7.2.1 查看参数名称
ros2 param list
7.2.2 详细查看一个参数的信息
ros2 param describe <node_name> <param_name>
7.2.3 获取参数的值
ros2 param get <param_name>
举例:
ros2 param get /turtlesim background_b
7.2.4 设置参数的值
ros2 param set <node_name> <parameter_name> <value>
7.2.5 把当前的参数值拍一张快照,然后保存下来,文件被保存成了yaml格式
ros2 param dump <node_name>
7.2.6 把参数值恢复成之前的存储
ros2 param load <node_name> <paramfile.yaml>
八、Action
8.1 命令概览
8.2 命令解释
8.2.1 查看action列表
ros2 action list
8.2.2 查看action信息
ros2 action info /turtle1/rotate_absolute
8.2.3 手动发布action
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.6}"
九、Bag
9.1 命令概览
9.2 命令解释
9.2.1 录制所有的Topic
ros2 bag record -a
9.2.2 录制指定Topic
ros2 bag record <topic-name>
9.2.3 设置bag的名称
ros2 bag record -o <file-name> <topic-name>
9.2.4 查看bag的信息
ros2 bag info <bag-file>
9.2.5 播放bag
ros2 bag play <xxx.db3>
在ROS2中bag的后缀名不再是.bag
而是.db3
。
举例:
-r
参数,倍速播放
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 -r 10
-l
参数,循环播放
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 -l
--topics
参数,播放单个话题
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 --topics <topic-name>
十、Message
10.1 命令概览
10.2 命令解释
10.2.1 查看消息
ros2 msg list
10.2.2 查看消息的详细信息
ros2 msg show <msg-name>
10.2.3 查看消息的详细信息
ros2 msg info <msg-name>
info
命令是show
的别名
10.2.4 查看某个包下所有的消息
ros2 msg package <package-name>
10.2.5 查询包含msg文件的包
ros2 msg packages
十一、Interface
Interface是ROS2中话题、服务、动作中定义的msg,srv,action接口的总称。
11.1 命令概览
11.2 命令解释
11.2.1 查看当前运行interface的列表
ros2 interface list
11.2.2 查看interface信息
ros2 interface show <interface-name>
举例:
ros2 interface show std_msgs/msg/String
ros2 interface show example_interfaces/srv/AddTwoInts
11.2.3 查看某一个接口包下所有的接口
ros2 interface package <package_name>
举例:
ros2 interface package sensor_msgs