ROS2-命令行工具
ROS 命令行工具
1 节点(Node)
在机器人系统中,可以不同的模块负责不同的功能,例如:电机控制、遥控器等等。这些不同的模块就称为节点,是 ROS 这个通信系统中最基础的部分。
- 使系统运行的第一部就是启动所有节点
ros2 run <package_name> <node_name>。 - 可以通过
ros2 node list列出所有节点。 ros2 node info列出该节点相关信息,包括订阅或发布的话题、服务的请求或响应、动作的请求和相应
2 话题(Topic)
话题通信是 ROS 通信机制中一种。可以理解成广播机制,无论接受方是否接收到信息,发送方正常发送。而这个消息的缓冲区可以称为话题。发送方为发布者(Publisher),接受方为订阅者(Subscriber),可以是多对多、多对一、一对多或者单对单。

- 列出所有话题
ros2 topic list。 - 观察话题信息
ros2 topic echo <topic_name>,相当于有一个节点订阅了该话题。 - 发布话题
ros2 topic pub <topic_name> <topic_type> <topic_content>,topic_content 可以以.yaml的形式。topic_type 可以通过ros2 topic list -t查看。 topic_content具体内容通过ros2 interface show <type_name>查看。
3 服务(Service)
服务通信机制也是 ROS 通信机制中一种。可以理解成请求(Request)-应答(Response)式的机制,只有在从机(Server)收到请求时,才对主机(Client)进行应答。只能是多对一或者一对一。
- 列出所有服务
ros2 service list。 - 发送请求
ros2 service call <service_name> <service_type> <service_content>,service_type 和 service_content 查看方式与话题通信相同。
4 动作
动作通信适用于需要长期较互的场景,包括了话题和服务两种基础的通信机制。主要分为三部分,目标(goal)服务、反馈(feedback)话题、结果(result)服务。通信时先进行主机(client)发送目标服务请求,然后从机(serer)应答后,主机发送结果请求,从机不断发布反馈话题,直到达到目标后,从机应答目标服务,一次通信结束。

- 列出所有动作
ros2 action list。 - 获取动作通信信息
ros2 action send_goal <action_name> <action_type> <action_goal_content>action_goal_content 查看方式与话题通信相同。
5 参数及运行日志
5.1 参数
参数是每个节点的配置值。
- 列出所有参数
ros2 param list。 - 设置参数
ros2 param set <node_name> <param_name>。 - 获取参数
ros2 param get <node_name> <param_name>。 - 储存参数
ros2 param dump <node_name> > <file_name>,可以将参数储存到.yaml文件中。 - 在下次载入节点时可以用
ros2 run <package_name> <node_name> --ros-args --params-file <file_name>,或者载入节点后再用ros2 param load <node_name> <param_name>。
5.2 运行日志
可以将话题信息记录下来并在以后进行回放
- 记录数据
ros2 bag record <topic_name>。可以用-o <file_name>指定记录文件名。 - 回放日志
ros2 bag play <file_name>。
6 rqt 工具
rqt 是 ROS 系统中的可视化工具。
- 通过
rqt启动所有 rqt 工具。 - 通过
rqt_graph查看所有节点通信信息。 - 通过
ros2 run rqt_console rqt_console查看所有节点的输出日志。