基于ROS的智能汽车设计与实训教程第八章
28页1、8.1 话题Node在ROS的世界里,最小的进程单元就是节点(node)。一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫作节点。从程序角度来说,node就是一个可执行文件(通常为C+编译生成的可执行文件、Python脚本),被执行并加载到了内存之中;从功能角度来说,通常一个node负责着机器人的某一个单独的功能。由于机器人的功能模块非常复杂,我们往往不会把所有功能都集中到一个node上,而会采用分布式的方式,把鸡蛋放到不同的篮子里。18.1 话题Master由于机器人的元器件很多,功能庞大,因此实际运行时往往会运行众多的node,这些node负责感知世界、控制运动、决策和计算等功能。那么如果要进行调配、管理这些node的话,就要利用ROS提供给我们的节点管理器master,master在整个网络通信架构里相当于管理中心,管理着各个node。node首先在master处进行注册,之后master会将该node纳入整个ROS程序中。node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信。当ROS程序启动时
2、,第一步首先启动master,由节点管理器处理依次启动node。28.1 话题启动master和node当我们要启动ROS时,首先输入命令:$roscore此时ROS master启动,同时启动的还有rosout和parameter server,其中rosout是负责日志输出的一个节点,其作用是告知用户当前系统的状态,包括输出系统的error、warning等等,并且将log记录于日志文件中,parameter server 即是参数服务器,它并不是一个node,而是存储参数配置的一个服务器。每一次我们运行ROS的节点前,都需要把master启动起来,这样才能够让节点启动和注册。启动master之后,节点管理器就开始按照系统的安排协调进行启动具体的节点。节点就是一个进程,只不过在ROS中它被赋予了专用的名字里node。我们知道一个package中存放着可执行文件,可执行文件是静态的,当系统执行这些可执行文件,将这些文件加载到内存中,它就成为了动态的node。具体启动node的语句是:$rosrun pkg_name node_name3通常我们运行ROS,就是按照上面的顺序启动,有时
3、候节点太多,我们会选择用launch文件来启动。Master、Node之间以及Node之间的关系如图所示。8.1 话题4机器人是一个系统工程,通常一个机器人运行操作时要开启很多个node,对于一个复杂的机器人的启动操作并不需要每个节点依次进行rosrun,ROS为我们提供了一个命令能一次性启动master和多个node。该命令是:$roslaunch pkg_name file_name.launchroslaunch命令首先会自动进行检测系统的roscore有没有运行,也即是确认节点管理器是否在运行状态中,如果master没有启动,那么roslaunch就会首先启动master,然后再按照launch的规则执行。8.1 话题launch文件58.1 话题ROS的通信方式是ROS最为核心的概念,ROS系统的精髓就在于它提供的通信架构。ROS的通信方式有以下四种:Topic话题Service服务Parameter Service参数服务器Actionlib动作库ROS中的通信方式中,topic是常用的一种。对于实时性、周期性的消息,使用topic来传输是最佳的选择。topic是一种点对点
4、的单向通信方式,这里的“点”指的是node,也就是说node之间可以通过topic方式来传递信息。Topic68.1 话题topic要经历下面几步的初始化过程:首先,publisher节点和subscriber节点都要到节点管理器进行注册,然后publisher会发布topic,subscriber在master的指挥下会订阅该topic,从而建立起sub-pub之间的通信。注意整个过程是单向的。Topic78.1 话题ROS是一种分布式的架构,一个topic可以被多个节点同时发布,也可以同时被多个节点接收。比如在这个场景中用户可以再加入一个图像显示的节点,如果想看摄像头节点的画面,则可以用自己的笔记本连接到机器人上的节点管理器,然后在自己的电脑上启动图像显示节点。这就体现了分布式系统通信的好处:扩展性好、软件复用率高。总结三点:(1)topic通信方式是异步的,发送时调用publish()方法,发送完成立即返回,不用等待反馈。(2)subscriber通过回调函数的方式来处理消息。(3)topic可以同时有多个subscribers,也可以同时有多个publishers。ROS中这样
5、的例子有:/rosout、/tf等等。8Message8.1 话题Message按照定义解释就是topic内容的数据类型,也称之为topic的格式标准。这里和我们平常用到的Massage直观概念有所不同,这里的Message不单单指一条发布或者订阅的消息,也指定为topic的格式标准。基本的msg包括bool、int8、int16、int32、int64(以及uint)、float、float64、string、time、duration、header、可变长数组array、固定长度数组arrayC。9上一节我们介绍了ROS的通信方式中的topic(话题)通信,我们知道topic是ROS中的一种单向的异步通信方式。然而有些时候单向的通信满足不了通信要求,比如当一些节点只是临时而非周期性的需要某些数据,如果用topic通信方式时就会消耗大量不必要的系统资源,造成系统的低效率高功耗。这种情况下,就需要有另外一种请求-查询式的通信模型。这节我们来介绍ROS通信中的另一种通信方式service(服务)。8.2 服务108.2 服务service方式在通信模型上与topic做了区别。Servic
《基于ROS的智能汽车设计与实训教程第八章》由会员小萌新****ao分享,可在线阅读,更多相关《基于ROS的智能汽车设计与实训教程第八章》请在金锄头文库上搜索。
软件需求工程04
商务谈判与礼仪课件第三章 商务谈判心理、思维和动机
《复变函数与积分变换》1.3 复变函数
SQL Server数据库第4章 表数据操作
理财规划原理-课件第二章 宏观经济基础
《数据库原理与应用》PPT1第1章 数据库概述和SQL 2017开发环境
《软件工程与项目管理》1-3-软件工程概述(3)
商务智能(第5版)课件第2章 商务智能系统架构
《软件工程与项目管理》3-3-软件策划与项目计划(3)
《数据库原理与应用》PPT1第5章 数据库编程技术基础
《面向对象程序设计》实验指导书-
基础会计购买固定资产业务核算1
《软件项目管理与案例分析》课件第2章
《软件工程与项目管理》2-2-软件过程(2)
软件需求工程05
Access数据库创建、使用与管理从新手到高手课件第12章
《现代检测技术及仪表》课件第8章 机械量检测及仪表
Access数据库创建、使用与管理从新手到高手课件第5章
《面向对象程序设计C++》课件1第3章 类和对象-动态内存与智能指针
会计基础项目八20
2023-12-07 15页
2023-12-07 15页
2023-12-07 16页
2023-12-07 24页
2023-12-07 15页
2023-12-07 19页
2023-12-07 19页
2023-12-07 19页
2023-12-07 18页
2023-12-07 16页