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,这里是中文版本,是一个非常有意思的开源项目~。
评论(0)
您还未登录,请登录后发表或查看评论