ROS学习总结
节点之间是通过一个ROS话题来互相通信的
rosrun rqt_graph rqt_graph(使用rqt_graph来显示当前运行的节点和话题)
如下图所示,teleop_turtle节点是因为运行了tuetle_teleop_key这一个节点来实现键盘的远程控制
$ rosrun turtlesim turtle_teleop_keyturtlesim这一节点是因为运行了turtlesim_node这一节点
$ rosrun turtlesim turtlesim_noderostopic_5104_15......是因为我们查看了turtle_teleop_key节点在/turtle1/cmd_vel话题上发布的信息
$ rostopic echo /turtle1/cmd_vel
例如:/turtle1/cmd_vel 就是一个话题
rostopic echo可以显示在某个话题上发布的数据。
$ rostopic echo /turtle1/cmd_vel话题之间的通信是通过在节点之间发送ROS消息实现的。对于发布器和订阅器之间的通信,发布器和订阅器之间必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面的消息类型决定的。使用rostopic type命令可以查看发布在某个话题上的消息类型
$ rostopic type /turtle1/cmd_vel你应该会看到:
geometry_msgs/Twist我们可以使用rosmsg命令来查看消息的详细情况
$ rosmsg show geometry_msgs/Twist
-
geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64 x float64 y float64 z
rostopic pub可以把数据发布到当前某个正在广播的话题上。
用法:
rostopic pub [topic] [msg_type] [args]
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。
同时在RQT_GRAPG界面增加了一个节点(ROSTOPIC_5917_150...),其实就是刚刚手动发送命令让小乌龟移动的作用
rostopic hz命令可以用来查看数据发布的频率。
用法:
rostopic hz [topic]
运行新的终端,输入信的命令,rostopic hz /turtle1/cmd_vel,查看 /turtle1/cmd_vel话题上的数据传送速率,返回如下
average rate: 0.999
min: 1.001s max: 1.001s std dev: 0.00000s window: 2