首页 > 代码库 > 使用ROS节点(五)

使用ROS节点(五)

 

先启动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。

使用ROS节点(五)