0.前言

之前作者整理了一份ROS1中常用的GUI测试工具,最近作者在完善ROS2部分时觉得有必要写一篇关于ROS2常用命令行工具的文章来作为ROS2第一部分的一个小结。

1. 通信层面

ROS_DOMAIN_ID
标记一个 ROS 域,不同的 ROS 域之间不能通信。这部分可以参照作者ROS2 DDS通信漫谈这篇文章,主要是因为ROS2本身的通讯是基于DDS的,所以存在域这个概念。

colcon_cd

命令colcon_cd允许您快速将Shell的当前工作目录变换至某个软件包目录。 例如,命令colcon_cd some_ros_package会将您快速带到目录〜/ ros2_install / src / some_ros_package。这里和ROS1中的 roscd 有着相同的作用。同样只需要在.bashrc中加入该命令即可

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc

2. ROS2通讯

2.1 ROS2节点

ros2 run

命令载入一个包里面的可执行文件

ros2 run <package_name> <executable_name>

ros2 pkg executables

可以列出包里的可执行文件

ros2 pkg executables <package_name>

ros2 node list

返回目前系统中所有激活的node

ros node info

ros2 node info <node-name> 可以查看节点的信息,它能够看到订阅者,发布者,提供的服务等信息。

rqt_graph

rqt_graph 能够可视化节点和主题之间的连接。这个命令和ROS1一样,也是ROS2为数不多的GUI可视界面
在这里插入图片描述

2.2 ROS2 话题

ros2 topic list

返回目前系统中所有激活的 topic 。

ros2 topic list -t 打印中包括 topic 的类型。

ros2 topic echo

查看发布到指定 topic 的数据

ros2 topic info

查看 topic 的信息,包括发布者和订阅者数量。

ros2 interface show

显示 Topic 发送的消息定义

ros2 topic pub

向 topic 发布消息

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}}"

ros2 topic hz

查看数据的发布速率

2.3 ROS2服务

ros2 service list

查看所有的服务。每个节点默认都有一些基础的服务,比如设置参数服务等。ros2 service list -t 打印出服务的类型

ros2 service type

可以看到服务的定义。

ros2 service find

找出指定类型的所有服务

ros2 service find std_srvs/srv/Empty

ros2 interface show

显示服务的定义

ros2 service call
调用服务

ros2 service call /clear std_srvs/srv/Empty

2.4 ROS2 参数

ROS2 参数和 ROS2 节点关联,参数用于在运行时外部配置节点。

参数按节点名称、节点命名空间、参数名称和参数命名空间寻址。提供参数命名空间是可选的。

ros2 param list

列出所有的参数。每个节点都会有公共的参数,比如 use_sim_time 。

ros2 param get

获取指定参数的值

ros2 param get /turtlesim background_g

ros2 param set

设置指定参数的值

ros2 param set /turtlesim background_r 150

ros2 dump

dump 参数到文件中

ros2 run + param

ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

2.5 ROS2 行为

行为构建在 Topics 和 Service 之上,行为包括三个部分:目标,结果和反馈。

行为类似于服务,但是操作是可抢占的,我们可以手动取消。行为也会提供稳定的反馈, 不像服务只会响应一次。

行为是客户端-服务端架构,客户端向服务端发送目标,服务返回反馈和结果。

ros2 action list

列出所有的 action 。ros2 action list -t 打印出 action 的 type 。

ros2 action info

查看 action 的信息,包括客户端和服务端。

ros2 interface show

显示行为定义

ros2 action send_goal

发送目标

ros2 action send_goal <action_name> <action_type> <values>

2.6 ROS2 bag包

ros2 bag 是一个命令行工具,用来记录发布到 topic 的数据。 我们可以通过记录的数据进行重放,方便复现结果。

ros2 bag record

ros2 bag record <topic_name> 记录指定 topic 的数据。

ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose 记录多个 topic

ros2 bag info

查看 bag 信息。

ros2 bag play

回放 bag 信息

3. ROS2 可视化GUI

rqt_console

打开一个新的终端,使用如下指令即可启动rqt_console:

ros2 run rqt_console rqt_console

在这里插入图片描述
rviz2
和ROS1中的rviz没区别,直接一样使用即可。
在这里插入图片描述
rqt
rqt内部嵌入了很多非常好用的软件,其使用方式和ROS1一样。
在这里插入图片描述

最后作者说

当然ROS2作为一个未来的新秀,作者对该框架抱有持续的关注,这里也给给为提供一个专注收集ROS2项目是的网站Awesome ros2,这里是中文版本,是一个非常有意思的开源项目~。