ROS2-命令行工具

ROS 命令行工具

1 节点(Node)

在机器人系统中,可以不同的模块负责不同的功能,例如:电机控制、遥控器等等。这些不同的模块就称为节点,是 ROS 这个通信系统中最基础的部分。

  1. 使系统运行的第一部就是启动所有节点 ros2 run <package_name> <node_name>
  2. 可以通过 ros2 node list 列出所有节点。
  3. ros2 node info 列出该节点相关信息,包括订阅或发布的话题、服务的请求或响应、动作的请求和相应

2 话题(Topic)

话题通信是 ROS 通信机制中一种。可以理解成广播机制,无论接受方是否接收到信息,发送方正常发送。而这个消息的缓冲区可以称为话题。发送方为发布者(Publisher),接受方为订阅者(Subscriber),可以是多对多、多对一、一对多或者单对单。
topic

  1. 列出所有话题 ros2 topic list
  2. 观察话题信息 ros2 topic echo <topic_name>,相当于有一个节点订阅了该话题。
  3. 发布话题 ros2 topic pub <topic_name> <topic_type> <topic_content>,topic_content 可以以 .yaml 的形式。topic_type 可以通过 ros2 topic list -t 查看。
  4. topic_content 具体内容通过 ros2 interface show <type_name> 查看。

3 服务(Service)

服务通信机制也是 ROS 通信机制中一种。可以理解成请求(Request)-应答(Response)式的机制,只有在从机(Server)收到请求时,才对主机(Client)进行应答。只能是多对一或者一对一。service

  1. 列出所有服务 ros2 service list
  2. 发送请求 ros2 service call <service_name> <service_type> <service_content>,service_type 和 service_content 查看方式与话题通信相同。

4 动作

动作通信适用于需要长期较互的场景,包括了话题和服务两种基础的通信机制。主要分为三部分,目标(goal)服务、反馈(feedback)话题、结果(result)服务。通信时先进行主机(client)发送目标服务请求,然后从机(serer)应答后,主机发送结果请求,从机不断发布反馈话题,直到达到目标后,从机应答目标服务,一次通信结束。
action

  1. 列出所有动作 ros2 action list
  2. 获取动作通信信息 ros2 action send_goal <action_name> <action_type> <action_goal_content> action_goal_content 查看方式与话题通信相同。

5 参数及运行日志

5.1 参数

参数是每个节点的配置值。

  1. 列出所有参数 ros2 param list
  2. 设置参数 ros2 param set <node_name> <param_name>
  3. 获取参数 ros2 param get <node_name> <param_name>
  4. 储存参数 ros2 param dump <node_name> > <file_name>,可以将参数储存到 .yaml 文件中。
  5. 在下次载入节点时可以用 ros2 run <package_name> <node_name> --ros-args --params-file <file_name>,或者载入节点后再用 ros2 param load <node_name> <param_name>

5.2 运行日志

可以将话题信息记录下来并在以后进行回放

  1. 记录数据 ros2 bag record <topic_name>。可以用 -o <file_name> 指定记录文件名。
  2. 回放日志 ros2 bag play <file_name>

6 rqt 工具

rqt 是 ROS 系统中的可视化工具。

  1. 通过 rqt 启动所有 rqt 工具。
  2. 通过 rqt_graph 查看所有节点通信信息。
  3. 通过 ros2 run rqt_console rqt_console 查看所有节点的输出日志。