【ROS实践入门(三)小海龟案例主题与节点交互】

【ROS实践学习入门系列(三)小海龟案例主题与节点交互

本内容经官网实例以及一些参考书总结而成,欢迎留言评论交流~

联系方式:ziyuanw#foxmail.com(#换成@)

 一、小海龟案例

还是先通过小海龟案例分析ROS各种基本命令使用方法,熟练之后才能往后面学习更加深入的东西。

1.查找包路径:

rospack find [packagename]

以查找小海龟案例为例:

2.获得功能包或功能包集文件列表:

rosls [packagename]

3.切换ROS空间内下属任一文件目录:

roscd [directory]

4.节点操作相关命令:

首先CTRL+ALT+T打开新的终端并启动roscore,然后运行小海龟案例:

roscore
rosrun turtlesim turtlesim_node

节点信息相关命令:

①rosnode info  [nodename]

②rosnode ping [nodename]

③rosnode machine

显示当前运行设备名。

rosnode machine <machine-name>

显示该设备名下正在执行的节点名称:

④rosnode kill   [nodename]

⑤rosnode cleanup 

不常用。

是一种临时清理节点的解决方案,在正常操作中不鼓励使用。它的优点是美观,缺点是可能无法注册正常运行的节点。

二、主题与节点交互

依旧是可使用小海龟案例:(还是roscore和rosrun turtlesim turtlesim_node。就不演示了)

1.主题相关基本命令操作:

①rostopic   bw   [topic] :主题所使用带宽

②rostopic   echo   [topic] :消息输出

③rostopic   find   [topic] :查找主题

④rostopic   hz   [topic] :主题发布频率

⑤rostopic   info   [topic] :活动主题信息

⑥rostopic   list   [topic]  :列出活动主题

⑦rostopic   type   [topic] :将数据发布到主题

若想要使用键盘方向建移动海龟:

清除所有终端重新打开(使用CTRL+Shift+T可在同一窗口内打开三个终端):

第一个终端:

roscore

第二个终端:

rosrun turtlesim turtle_node

第三个终端:(注意:鼠标光标要放在第三个窗口才能进行移动操作)

 2.小海龟以固定方向自行移动:

1.发布主题与其进行交互:

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

以上命令会发送一条消息给turtlesim,告诉它以2.0大小的线速度和1.8大小的角速度开始移动。

命令参数说明:

rostopic pub:这条命令将会发布消息到某个给定的话题。

-1(单个破折号):这个参数选项使rostopic发布一条消息后马上退出。

/turtle1/cmd_vel :这是消息所发布到的话题名称。(其他老版本为/turtle1/command_velocity)

geometry_msgs/Twist:这是所发布消息的类型。(其他老版本为turtlesim/Velocity)

--:(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。

2.0 1.8:之前提到的,在一个turtlesim/Velocity消息里面包含有两个浮点型元素:linear和angular。在本例中,2.0是linear的值,1.8是angular的值。这些参数其实是按照ROS官网YAML语法格式编写的。线速度linear分量参数:x,y,z。角速度angular分量参数:x,y,z。

2.一直转圈:

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]'

3.ROS话题理解:

turtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。

  • rqt_graph查看节点话题情况:
rosrun rqt_graph rqt_graph

鼠标移动到上面,可以发现rostopic发布器节点(红色)正在与rostopic echo节点(绿色),通过键盘/turtle1/cmd_vel控制方向的输入消息,进行通信:

  • rqt_plot实时显示数据变化:
rosrun rqt_plot rqt_plot

打开时是空的,需要在topic文本框自行添加/turtle1/pose/x后之前处于禁用状态的加号“+”按钮将会被使能变亮。按一下该按钮,并对/turtle1/pose/y重复相同的过程。现在你会在图形中看到turtle的x-y位置坐标图。再添加/turtle1/pose/theta。减号“-”按钮可隐藏显示所选topic数据。

 

上一篇:【ROS实践入门(二)ROS文件概念和工作空间】

下一篇:【ROS实践入门(四)使用服务与参数服务器】

 

参考资料:

【1】ROS官网:http://wiki.ros.org/cn

【2】ROS机器人高效编程

【3】机器人操作系统ROS浅析

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值