项目六任务1:ROS操作系统概述_第1页
项目六任务1:ROS操作系统概述_第2页
项目六任务1:ROS操作系统概述_第3页
项目六任务1:ROS操作系统概述_第4页
项目六任务1:ROS操作系统概述_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲老师:汪俊东ROS操作系统概述项目六:智慧驾驶场景下的线控底盘综合应用任务6.1《智能汽车线控底盘装调与测试》目录任务导入AssignmentINTRO学习目标LearningobjectivesCONTENTS0102知识准备Backgroundknowledge03课堂小测Classroomquiz课堂总结Backgroundknowledge0405PART01任务导入Taskimport任务导入ROS机器人操作系统是一个灵活的框架,通过ROS系统,开发人员可以快速构建各种类型的机器人应用程序,实现机器人的感知、规划、控制等功能。在本次任务中,我们将深入了解ROS操作系统的定义、通信机制、常用组件以及ROS的运行管理。通过本次任务,我们将逐步揭开ROS操作系统的神秘面纱,探索其在机器人领域的应用与潜力。PART02学习目标Learningobjective学习目标素质目标通过对ROS操作系统的了解,激发学生对科技创新的渴望;学习理论部分知识,培养学生新技术的能力。

能力目标能掌握节点运行管理launch文件的基本操作方法[A76];能掌握ROS常用组件的基本操作方法[A77]。知识目标理解ROS操作系统的定义[K83];熟悉并理解ROS通信机制[K84]。思政专栏科技创新能带给民族和国家强大的力量和民族自豪感。为提升国产通用飞机节能、减排、降噪性能,全面提升航空绿色制造水平.…1月3日,由中国航空工业集团通用飞机有限责任公司自主研制的AG60E电动飞机在浙江建德千岛湖通用机场圆满完成首次飞行。AG60E是一型单发上单翼轻型运动飞机,并排双座,全金属结构,主要面向航空俱乐部、通航公司、私人用户等,用于飞行体验、基本飞行培训和私人娱乐飞行。飞机机长6.9米、高2.6米、翼展8.6米,最大起飞重量600千克、最大平飞速度220千米每小时、最大巡航速度185千米每小时,AG60E电动飞机2024中国科技创新开年捷报思政专栏1月5日19时20分,我国在酒泉卫星发射中心使用快舟一号甲运载火箭,成功将天目一号气象星座15-18星发射升空,卫星顺利进入预定轨道,发射任务获得圆满成功,这是中国航天2024年首次发射。迄今为止人类已进行的10次月球采样返回均位于月球正面,月球背面整体相对月球正面更为古老,且存在月球三大地体之一的艾特肯盆地,具有重要科研价值。为顺利完成月球背面航天器与地球间的通信,我国新研制的鹊桥二号中继通信卫星计划2024年上半年发射。快舟一号运载火箭2024中国科技创新开年捷报PART03知识准备Knowledgepreparation

ROS基本概念ROS是RobotOperatingSystem的缩写,通常称为“机器人操作系统”。适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息传递以及包管理。它也提供用于获取、编译、编写和跨计算机运行代码所需的工具和库函数。它的目的是为了提高机器人研发中的软件复用率,简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。一、ROS操作系统定义ROS操作系统架构ROS操作系统架构总共分为三层,OS层、中间层以及应用层OS层:OS层,即为经典意义的操作系统。ROS并非像Windows、Linux等传统意义上的操作系统,无法直接运行在计算机硬件上,对于ROS的OS层,我们需要依托官方推荐的Linux的Ubuntu系统来运行一、ROS操作系统定义ROS操作系统架构中间层:ROS经常运行在Linux操作系统上,但Linux系统本身没有针对机器人开发的中间件,因此ROS在中间层做了大量工作。首先是基于TCP/UDP网络,并在此之上进一步封装而构建的TCPROS/UDPROS通信系统。另外ROS还提供了一种进程内的通信方式—Nodelet,为多进程通信提供了一种更为优化的数据传输方式。在通信机制之上,ROS提供了大量的机器人开发的库,以提供给应用层调用。一、ROS操作系统定义ROS操作系统架构应用层:为了保证整个ROS系统的正常运行,ROS需要在应用层运行一个管理者,即Master。Master负责管理整个系统正常运行,为节点间建立连接。一、ROS操作系统定义ROS通信机制简介机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达、摄像头、GPS等)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是一个单独的进程,每一个进程都是独立运行的。更确切的讲,ROS是进程(也称为Nodes)的分布式框架。因为这些进程甚至还可分布于不同主机,不同主机协同工作,从而分散计算压力。不过随之也有一个问题:不同的进程是如何通信的?不同进程间如何实现数据交换的?这里就涉及到ROS中的通信机制了。ROS中的基本通信机制主要有如下三种实现策略:话题通信、服务通信、参数服务器二、ROS通信机制简介话题通信机制话题在ROS中使用最为频繁,其通信模型也较为复杂。在ROS中有两个节点:一个是发布者Talker,另一个是订阅着Listener。两个节点分别发布、订阅同一个话题,启动顺序没有强制要求,此处假设Talker首先启动,可分为如下七步分析建立通信的详细过程。二、ROS通信机制简介话题通信机制二、ROS通信机制简介Talker注册:Talker启动,通过1234端口使用RPC向ROSMaster注册发布者的信息,包含所发布消息的话题名;ROSMaster会将节点的注册信息加入注册列表中。Listener注册:Listener启动,同样通过RPC向ROSMaster注册订阅者的信息,包含需要订阅的话题名。话题通信机制二、ROS通信机制简介ROSMaster进行信息匹配:Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的发布者,则等待发布者的加入:如果找到匹配的发布者信息,则通过RPC向Listener发送Talker的RPC地址信息。Listener发送连接请求:Listener接收到Master发回的Talker地址信息,尝试通过RPC向Talker发送连接请求,传输订阅的话题名、消息类型以及通信协议(TCP/UDP)话题通信机制二、ROS通信机制简介Talker确认连接请求:Talker接收到Listener发送的连接请求后,继续通过RPC向Listener确认连接信息,其中包含自身的TCP地址信息。Listener尝试与Talker建立网络连接:Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接。话题通信机制二、ROS通信机制简介Talker向Listener发布数据:成功建立连接后,Talker开始向Listener发送话题消息数据。从上面的分析中可以发现,前五个步骤使用的通信协议都是RPC,最后发布数据的过程才使用到TCP。ROSMaster在节点建立连接的过程中起到了重要作用,但是并不参与节点之间最终的数据传输。服务通信机制二、ROS通信机制简介服务是一种带有应答的通信机制,与话题的通信相比,其减少了Listener与Talker之间的RPC通信服务通信机制二、ROS通信机制简介Talker注册:Talker启动,通过1234端口使用RPC向ROSMaster注册发布者的信息,包含所提供的服务名;ROSMaster会将节点的注册信息加入注册列表中。Listener注册:Listener启动,同样通过RPC向ROSMaster注册订阅者的信息,包含需要订阅的服务名。服务通信机制二、ROS通信机制简介Talker注册:Talker启动,通过1234端口使用RPC向ROSMaster注册发布者的信息,包含所提供的服务名;ROSMaster会将节点的注册信息加入注册列表中。Listener注册:Listener启动,同样通过RPC向ROSMaster注册订阅者的信息,包含需要订阅的服务名。服务通信机制二、ROS通信机制简介ROSMaster进行信息匹配:Master根据Listener的订阅信息从注册列表中进行查找,如果没有找到匹配的服务提供者,则等待该服务的提供者加入:如果找到匹配的服务提供者信息,则通过RPC向Listener发送Talker的TCP地址信息。服务通信机制二、ROS通信机制简介Listener与Talker建立网络连接:Listener接收到确认信息后,使用TCP尝试与Talker建立网络连接,并且发送服务的请求数据。Talker向Listener发布服务应答数据:Talker接收到服务请求和参数后,开始执行服务功能,执行完成后,向Listener发送应答数据。参数服务器二、ROS通信机制简介参数类似于ROS中的全局变量,由ROSMaster进行管理,其通信机制较为简单,不涉及TCP/UDP的通信。参数服务器二、ROS通信机制简介Talker设置变量:Talker使用RPC向ROSMaster发送参数设置数据,包含参数名和参数值;ROSMaster会将参数名和参数值;Listener查询参数值:Listener通过RPC向ROSMaster发送参数查找请求,包含所要查找的参数名;ROSMaster向Listener发送参数值:Master根据Listener的查找请求从参数列表中进行查找,查找到参数后,使用RPC将参数值发送给Listener。ROS元功能包三、ROS运行管理完成ROS中一个系统性的功能,可能涉及到多个功能包,比如实现了机器人导航模块,该模块下有地图、定位、路径规划...等不同的子级功能包。那么调用者安装该模块时,需要逐一的安装每一个功能包吗?显而易见的,逐一安装功能包的效率低下,在ROS中,提供了一种方式可以将不同的功能包打包成一个功能包,当安装某个功能模块时,直接调用打包后的功能包即可,该包又称之为元功能包(metapackage)。ROS元功能包三、ROS运行管理(1)元功能包概念元功能包MetaPackage是Linux的一个文件管理系统的概念。是ROS中的一个虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来,我们可以认为它是一本书的目录索引,告诉我们这个包集合中有哪些子包,并且该去哪里下载。ROS元功能包三、ROS运行管理(2)实现首先新建一个功能包,然后修改package.xml,内容如下:<exec_depend>被集成的功能包</exec_depend>…..<export><metapackage/></export>ROS元功能包三、ROS运行管理(2)实现最后修改CMakeLists.txt,内容如下:cmake_minimum_required(VERSION3.0.2)project(demo)find_package(catkinREQUIRED)catkin_metapackage()ROS节点运行管理launch文件三、ROS运行管理(1)launch文件概念launch文件是一个XML格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。起到简化节点的配置与启动,提高ROS程序的启动效率的作用。launch文件是通过roslaunch功能包运行的,命令行格式如下:$roslaunchpackage_namefile.launchROS节点运行管理launch文件三、ROS运行管理(2)launch标签<launch>标签是所有launch文件的根标签,充当其他标签的容器。1)属性deprecated="弃用声明":告知用户当前launch文件已经弃用。2)子级标签所有其它标签都是launch的子级。ROS节点运行管理launch文件三、ROS运行管理(3)node标签<node>标签用于指定ROS节点,是最常见的标签,需要注意的是:roslaunch命令不能保证按照node的声明顺序来启动节点(节点的启动是多进程的)。1)属性表属性说明pkg=“包名”节点所属的包type=“nodeType”节点类型(与之相同名称的可执行文件)name=“nodeName”节点名称(在ROS网络拓扑中节点的名称)args=“xxxxxxxxx”(可选)将参数传递给节点machine=“机器名”在指定机器上启动节点ROS节点运行管理launch文件三、ROS运行管理续上表2)子级标签env环境变量设置;remap重映射节点名称;rosparam参数设置;param参数设置。respawn=“true|false”(可选)如果节点退出,是否自动重启respawan=_delay=“N”(可选)如果respawn为true,那么延迟N秒后启动节点required=“true|false”(可选)该节点是否必须,如果为true,那么结果该节点退出,将杀死整个roslaunchns=“xxx”(可选)在指定命名空间xxx中启动节点clear_params=“true|false”(可选)在启动前,删除节点的私有空间的所有参数output=“log|screen”(可选)日志发送目标,可以设置为log日志文件,或screen屏幕,默认是logROS节点运行管理launch文件三、ROS运行管理(4)include标签include标签用于将另一个xml格式的launch文件导入到当前文件。

1)属性表属性说明file=“$(find包名)/xxx/xxx.launch”要包含的文件路径ns=“xxx”(可选)在指定命名空间导入文件ROS节点运行管理launch文件三、ROS运行管理(4)include标签include标签用于将另一个xml格式的launch文件导入到当前文件。

1)属性表如下2)子级标签env环境变量设置。arg将参数传递给被包含的文件。属性说明file=“$(find包名)/xxx/xxx.launch”要包含的文件路径ns=“xxx”(可选)在指定命名空间导入文件ROS节点运行管理launch文件三、ROS运行管理(5)remap标签remap标签用于话题重命名。

属性表属性说明from=“xxx”原始话题名称to=“yyy”(可选)目标名称ROS节点运行管理launch文件三、ROS运行管理(6)param标签<param>标签主要用于在参数服务器上设置参数,参数源可以在标签中通过value指定,也可以通过外部文件加载,在<node>标签中时,相当于私有命名空间。

属性说明name=“命名空间/参数名”参数名称,可以包含命名空间value=“xxx”(可选)定义参数值,如果此处省略,必须指定外部文件作为参数源。type=“str|int|double|bool|yaml”(可选)指定参数类型,如果未指定,roslaunch会尝试确定参数类型,规则如下:①如果包含‘.’的数字解析为浮点型,否则为整型②“true”和“false”是bool值(不区分大小写)③其他事字符串ROS节点运行管理launch文件三、ROS运行管理(7)rosparam标签<rosparam>标签可以从YAML文件导入参数,或将参数导出到YAML文件,也可以用来删除参数,<rosparam>标签在<node>标签中时被视为私有。

属性说明command=“loda|dump|delete”(可选,默认load)加载、导出或删除参数file=“$(findxxxxx)/xxx/yyy….”加载或导出到的yaml文件param=“参数名称”ns=“命名空间”(可选)ROS节点运行管理launch文件三、ROS运行管理(8)group标签<group>标签可以对节点分组,具有ns属性,可以让节点归属某个命名空间。

属性表属性说明ns=“名称空间”(可选)clear_params=“true|false”(可选)启动前,是否删除组名臣空间的所有参数(慎用….此功能危险)ROS节点运行管理launch文件三、ROS运行管理(9)arg标签<arg>标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性。1)属性name="参数名称";default="默认值"(可选);value="数值"(可选):不可以与default并存;doc="描述":参数说明。ROS节点运行管理launch文件三、ROS运行管理(9)arg标签2)示例Launch文件传参语法实现,hello.lcaunch。命令行调用launch传参。TF坐标变换四、ROS常用组件TF(TransFormFrame),就是坐标变换,包括了位置和姿态两个方面的变换,在ROS中用于实现不同坐标系之间的点或向量的转换。ROS中是通过坐标系来标定物体的,确切的是通过右手坐标系来标定的。注意区分坐标转换和坐标系转换。坐标转换是一个坐标在不同坐标系下的表示,而坐标系转换是不同坐标系的相对位姿关系。TF工具四、ROS常用组件坐标系统虽然是一个基础理论,但是由于涉及多个空间之间的变换,不容易进行想象,所以TF提供了丰富的终端工具来帮助开发者调试和创建TF变换。(1)tf_monitor:Tf_monitor工具的功能是将当前的坐标系转换关系打印到终端控制台;(2)tf_echo:tf_echo工具的功能是查看指定坐标系之间的变换关系;(3)static_transform_publisher:tf_transform_publisher工具的功能是发布两个坐标系之间的静态坐标变换,这两个坐标系不发生相对位置变化。TF工具四、ROS常用组件(4)view_framesview_frames是可视化的调试工具,可以生成pdf文件,显示整棵TF树的信息。(5)rvizrviz是一种可视化工具,可以借助rviz显示坐标系关系,具体操作:1)新建窗口输入命令:rviz;2)在启动的rviz中设置FixedFrame为base_link;3)点击左下的add按钮,在弹出的窗口中选择TF组件,即可显示坐标关系。坐标msg消息四、ROS常用组件订阅发布模型中数据载体msg是一个重要实现,在坐标变换中,需要使用坐标系的相对关系(geometry_msgs/TransformStamped)以及坐标点信息(geometry_msgs/PointStamped)。前者用于传输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论