我的ROS学习之路——通过小乌龟实例,理解节点,话题,消息。

概览:ROS中有两大组件。

1.节点 ——节点是基本的处理单元(节点实际上只不过是ROS软件包中的一个可执行文件)。

2.话题——话题是基本的通信单元,实现节点之间的通信。

正文(注意,介绍一个-h 参数(如:roscode -h、rostopic -h、rosparam -h等)可以查看这个命令有什么功能,有什么命令。详细的功能可以通过这个形式来查看,蛮有用的):

1.节点部分(rosnode):

运行节点之前,必须先运行roscore,运行roscore之后,其实是运行了三个进程(可以通过ps -ef|grep ros命令查看)。这三个进程分别是:roscore,rosmaster,rosout。

rosmaster——此即启动了一个节点管理器,顾名思义,其作用就是用于节点管理,在一个ros系统中,有且只有一个,它是ros中所有节点运行的前提,所以在执行启动ros节点前,第一步都需要执行roscore。

rosout——是log输出管理。

  • roscore = ros+core:主节点(为ROS提供命名服务) + rosout (stdout/stderr) + 参数服务器(会在以后介绍)
  • rosnode = ros+node:获取节点信息的ROS工具
  • rosrun = ros+run:运行给定的软件包中的节点

详情看官 的教程节点部分。

常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):

可以通过rosnode list查看当前运行的节点。

2.话题部分(rostopic):

此时就需要创建一个小乌龟实例了。需要三个步骤:1.roscore 2.rosrun turtlesim turtlesim_node(运行turtlesim包内的turtlesim_node节点) 3.rosrun turtlesim turtle_teleop_key(运行turtlesim包内的turtlesim_teleop_key节点,实现可以键盘操作turtle(turtle即乌龟,turtlesim即乌龟模拟器)),注意:这三个命令都需要打开新的终端分别输入。

话题一般需要结合消息来使用。

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

常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):

rosrun rqt_graph rqt_graph:用动态的图显示了系统中正在发生的事情。

rostopic list:能够列出当前已被订阅和发布的所有话题。

rstopic echo:可以显示在某个话题上发布的数据。

用法:

例子:

2.2ROS消息:话题的通信是通过节点间发送ROS消息实现的。为了使发布者(turtle_teleop_key)和订阅者(turtulesim_node)进行通信,发布者和订阅者必须发送和接收相同类型的消息。这意味着话题的类型是由发布在它上面消息的类型决定的。使用rostopic type命令可以查看发布在话题上的消息的类型

详情操作关注官 教程话题部分。

常用命令(虽然可以通过-h查看所有命令,但常用的希望还是能记住。当然,记不住这个命令,但是起码得知道有这个东西,然后可以去哪里找这个命令):

rostopic type:命令用来查看所发布话题的消息类型。

如:

rostopic pub:可以把数据发布到当前某个正在广播的话题上。

如:

用法:

例子:

rostopic hz: 告数据发布的速率。

用法:

例子:

rqt_plot:命令可以在滚动时间图上显示发布到某个话题上的数据。

如:

由上自己总结了一个操作小乌龟的四部曲:

1.rostopic list——先查看有什么话题

2.rosrun rqt_graph rqt_graph——可以查看节点与节点以及话题之间的关系。

3.rostopic type  [topic]——查看消息类型,等会还可以方便直接拷贝相应消息类型到rostopic                                                         pub作为参数,省得手打了。

4.rostopic pub [topic] [msg_type] [args]——操作小乌龟的命令

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34647 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月8日
下一篇 2021年9月8日

相关推荐