topic简介
ROS 2 将复杂系统分解为许多模块化节点。topic是 ROS 的重要元素,它充当节点交换消息的总线。
一个节点可以向任意数量的主题发布数据,同时订阅任意数量的主题。
主题是数据在节点之间移动的主要方式之一,因此在系统的不同部分之间移动。
topic任务
1. 打开2个节点
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
2. 打开rqt_graph
rqt_graph是可视化工具,可以查看节点间的topic关系.
要运行 rqt_graph,请打开一个新终端并输入命令:
rqt_graph
也可以通过rqt打开,选择Plugins > Introspection > Node Graph.
该图描述了/turtlesim节点和/teleop_turtle节点如何通过主题相互通信
3. ros2 topic列表
ros2 topic list
4. topic回显
ros2 topic echo <topic_name>
5. topic详情
ros2 topic info /turtle1/cmd_vel
6. topic数据类型
ros2 topic type (topic名称)/turtle1/cmd_vel
7.显示消息数据结构
ros2 interface show <topic消息>
8. 发布topic消息
知道了消息结构,可以使用以下命令直接从命令行将数据发布到主题:
ros2 topic pub <topic_name> <msg_type> '<args>'
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}}"