https://wiki.ros.org/ROS/Tutorials/UnderstandingTopics
(一)Understanding ROS Topics
ROS Topics
- roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
先启动海龟 - sudo apt-get install ros-noetic-rqt
sudo apt-get install ros-noetic-rqt-common-plugins
再把rqt升级 - 再开启一个终端输入rosrun rqt_graph rqt_graph
会生成一个节点图
introducing rostopic
- rostopic -h查看rostopic功能
- rostopic echo [topic]输出topics信息
rostopic echo /turtle1/cmd_vel
这个时候是没有任何信息的,因为节点之间没有信息交流,如果用键盘让海龟动起来就能看到有信息交流
这时候再看一眼rqt_graph,点一下右上角的刷新就有新内容,如下图
ROS Message
nodes之间通过messages
- rostopic type [topic]展示话题所发布的消息的数据类型
查看细节
试试其他的
ROStopic continued
- rostopic pub把数据发送到当前的topic
用法:rostopic pub topic (msg_type) (args)
Example:rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’
效果如下
分析一下这一句命令
rostopic pub这条命令把message发送给一个topic
-1表示只发送一条指令
/turtle1/cmd_vel 要发送的topic名称
geometry_msgs/Twist 消息类型
– ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ 参数 - 这时候乌龟会停止,我们加上一个1HZ的稳定命令流
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, -1.8]’
乌龟会一直动,刷新一下rqt_graph
- rostopic hz 报告数据发布的sulv
rostopic hz topic_name
Example:rostopic hz /turtle1/pose