先启动roscore
roscore
为了获取节点信息,可以使用rosnode命令
$ rosnode
获取得一个可接受参数清单
使用rosrun命令启动一个新的节点,如下所示
$ rosrun turtlesim turtlesim_node
我们可以看见出现了一个新窗口,窗口中间有一个小乌龟,如下图:
出现一个新节点
使用主题与节点交互
现在要使用一个节点,并让节点做如下工作:
$ rosrun turtlesim turtle_teleop_key
通过节点订阅的主题,我们可以用箭头键移动乌龟,如下图:
为什么turtle_teleop_key执行时,小海龟会移动?
使用以下命令查看主题清单
$ rostopic list
使用echo参数,可以查看节点发出的信息。运行以下命令行并使用键盘出发消息
$ rostopic echo /turtle1/cmd_vel
看到类似显示
使用命令行擦好看消息类型
rostopic type /turtle1/cmd_vel
如果你想看到消息字段,使用以下命令:
$ rosmsg show geometry_msgs/Twist
我们可以通过这些工具使用rostopic pub [topic] [msg_type] [args] 命令直接发布主题
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- ‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘
参数分析:
rostopic pub 这条命令将会发布消息到某个给定的话题。
-1 (单个破折号)这个参数选项使rostopic发布一条消息后马上退出。
/turtle1/command_velocity 这是消息所发布到的话题名称。
turtlesim/Velocity 这是所发布消息的类型。
-- (双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。
2.0 1.8 正如之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。这些参数其实是按照YAML语法格式编写的,这在YAML文档中有更多的描述。
小乌龟画圆:
你可能已经注意到turtle已经停止移动了。这是因为turtle需要一个稳定的频率为1Hz的命令流来保持移动状态。我们可以使用rostopic pub -r命令来发布一个稳定的命令流
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- ‘[2.0, 0.0, 0.0]‘ ‘[0.0, 0.0, 1.8]‘
..使用 rostopic hz
rostopic hz命令可以用来查看数据发布的频率。 用法: rostopic hz [topic]
我们看一下turtlesim_node发布/turtle/pose时有多快:
rostopic hz /turtle1/pose
现在我们可以知道了turtlesim正以大约60Hz的频率发布数据给turtle。