《鸿蒙机器人编程》课件-2.2 ROS起源与特色_第1页
《鸿蒙机器人编程》课件-2.2 ROS起源与特色_第2页
《鸿蒙机器人编程》课件-2.2 ROS起源与特色_第3页
《鸿蒙机器人编程》课件-2.2 ROS起源与特色_第4页
《鸿蒙机器人编程》课件-2.2 ROS起源与特色_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

©NXROBO2023ROS起源及特色SmoothingTheROSLearningCurve本课目的:给出学习ROS的有效路径,加快学习速度内容:WhatisROS?WhyisROS?Whattolearn?HowtoLearn?©NXROBO20232什么是ROS?RobotOperatingSystem(ROS)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。松耦合点对点进程网络,一个分布式的通信框架,帮助程序进程之间更方便地通信。。支持的操作系统ROS主流在基于Unix的平台上运行。ROS的软件主要在Ubuntu和MacOSX系统上测试,同时ROS小区仍持续支持Fedora,Gentoo,ArchLinux和其它Linux平台。MicrosoftWindows已开始支时ROS,功能尚待完善。©NXROBO20233什么是ROS?©NXROBO20234从计算图视角理解ROSROS中可执行程序的基本单位叫节点(node)节点之间通过消息、服务、动作等机制进行通信这样就组成了一张网状图,也叫计算图什么是ROS?©NXROBO20235从文件系统视角理解ROSROS程序的不同组件放在不同的文件夹中文件夹根据不同的功能对文件进行组织这就是ROS的文件系统结构什么是ROS?©NXROBO20236从开源社区视角理解ROSROS是开源软件,全球机器人专家分享、贡献自己的智慧在网络社区分享和贡献软件及教程形成了强大的ROS开源社区ROS的起源©NXROBO20237脱胎于斯坦福的STAIR项目成长于PR2机器人项目,ROS是该项目的软件部分遵循OS理念:为了提高机器人设计和开发的效率避免机器人领域工作者重复造轮子,统一了开发标准ROS的历史©NXROBO20238为什么学习ROS?机器人开发:软件开发的比重越来越大软件框架选择:是软件架构设计中一个重要的决策ROSPlayerYARPOrocosCARMENOrcaMOOSMicrosoftRoboticsStudio©NXROBO20239ROS的优势1,松散耦合的机制方便机器人软件框架的组织2,最丰富的机器人功能库方便快速搭建原型3,便利的数据记录、分析、仿真工具,方便调试4,学界和产业界的标准方便学习和交流©NXROBO202310对于开发者:快速搭建机器人原型©NXROBO202311对于企业:License许可ROS的核心是BSD许可证。这是一个非常宽松的开放许可证。允许在商业和闭源产品使用。/licenses/BSD-3-Clause/wiki/BSD_licenses©NXROBO202312对于研究人员:丰富的资源,最新的成果目前学术领域大部分最新成果都会发布ROS的版本“ROS:anopensourceRobotOperatingSystem”(Quigleyetal.,2009):论文引用量9869Source:GoogleScholar2022-07-13

©NXROBO202313最庞大的使用者群体,事实上的机器人标准2018年数据:目前在使用操作系统做开发的人员用户超过60万。(个人用户中国第二)©NXROBO202314官方支持ROS的机器人100+产品:目前已经有很多机器人公司采用了ROS系统来开发一些应用于全新市场的产品,如ClearPath,Rethink,Unbounded,Neurala,BlueRiver,BIG-i,最典型的就是WillowGarage的PR2机器人。大公司的支持:Nvidia、博世、高通、英特尔、宝马以及大疆等。投资机构的热捧:仅2015年,相关风险投资机构就在基于ROS操作系统的机器人公司投资了超过1.5亿美元。©NXROBO202315代码统计Thetotallinecountisover14millionlinesofcodeTherehavebeen2477authorsAnd181509commitsAveraging73.3commitsperauthor©NXROBO202316代码语言cpp:2608592(63.98%)python:553332(13.57%)ansic:297629(7.30%)xml:280615(6.88%)lisp:149439(3.67%)java:135343(3.32%)ruby:26484(0.65%)sh:21120(0.52%)ROS的不足目前基于Ubuntu系统,移植嵌入式系统困难无实时性设计体积较大系统整体运行效率低总的来说,ROS不擅长开发对实时性及成本要求严苛的产品。©NXROBO202317一句话概括ROS帮助你快速制作机器人的众多软件库和工具的集合规定了统一通信接口的松耦合分布式开源软件框架。最大的好处:即插即用,提供统一软件接口,事实上的机器人研究的统一平台。有了统一的平台,我们才有共同交流的可能,以上也是我们学习ROS的主要原因。©NXROBO202318ROS10YearMontage©NXROBO202319/245826128ROS应该学什么?©NXROBO202320入门起步设计思想核心概念核心模块核心工具©NXROBO202321设计思想:分布式架构©NXROBO202322核心概念Nodes(节点)MessagesandTopics(消息与话题)Services(服务)ROSMaster(ROS管理器)Parameters(参数)Stacksandpackages(功能包集与功能包)©NXROBO202323ROSNodes节点是各自独立的可执行文件,能够通过话题、服务或参数服务器与其他进程(节点)通信。ROS通过使用节点将代码和功能解耦,提高了系统容错能力和可维护性,使系统简化。同时,节点允许了ROS系统能够布置在任意多个机器上并同时运行。节点在系统中必须有唯一的名称。节点可以使用不同的库进行编写,如roscpp和rospy。roscpp基于C++rospy基于Python。©NXROBO202324ROSTopics话题是节点间用来传输数据的总线。

N-to-NPublish/Subscribe模式:同一个话题也可以有很多个订阅者。使用TCP/IP传输,称为TCPROS,ROS默认。使用UDP传输,称为UDPROS,适合于远程操控任务。(低延迟高效率的传输方式,但可能产生数据丢失)。©NXROBO202325ROSMessages一个节点通过向特定话题发布消息。消息具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。消息的类型标准命名方式进行约定:功能包名称/.msg文件名。最常用的有geometry_msgs/Twist包括线速度和角速度Vectors三维向量©NXROBO202326ROSServices1-to-1Service/Client模型:当你需要直接与节点通信并获得应答时,将无法通过话题实现,这时需要使用服务。服务需要由使用者开发,节点并不提供标准服务。命令行工具:rossrv查看有关服务数据结构的信息rosservice列出服务清单和查询某个服务©NXROBO202327ROSMaster向ROS系统中其他节点提供命名和注册服务跟踪和记录话题的发布者和订阅者使ROS节点之间能够相互查找。一旦节点找到了彼此,就能建立一种点对点的通信方式。提供参数服务器©NXROBO202328ParameterServer参数服务器是可通过网络访问的共享的多变量字典。节点使用此服务器来存储和检索运行时的参数。©NXROBO202329ROSPackages功能包(Package):ROS中软件组织的基本形式,用于创建ROS程序。它包含源文件、脚本文件、配置文件、可执行文件等。本质就是一个特殊的文件夹,此文件夹中的文件和子文件夹按前面所说的文件系统的约定来编排,以方便管理、编译、使用此功能包。功能包管理:package.xml和CMakelists.txt文件,

其中package.xml用来描述此功能包的基本信息,

包括包名、作者、包之间的依赖等。CMakelists.txt

主要描述如何构建、编译此功能包程序。©NXROBO202330ROSPackageSystem©NXROBO202331核心模块©NXROBO202332ROS

Package种类©NXROBO202333ROS常用命令工具rostopic(Topics)rosservice(Services)rosnode(Nodes)rosparam(Parameters)rosmsg(Messages)rossrv(Services)roswtf(Generaldebugging)©NXROBO202334ROS常用可视化工具©NXROBO2023353D可视化工具Rviz|ROS常用可视化工具©NXROBO202336集成图形交互界面rqt|怎样学习ROS?©NXROBO202337两种教学模式InstructionismVs.Constructionism指导主义(

Instructionism):传统教学方式:老师讲,学生听。特点:开环,或是死循环周期过长,等到期末考试或若干年工作后。建造主义(

Constructionism):Learningbymaking,closetheloopofunderstandingAstepbystepguide©NXROBO202338学习步骤安装:/ROS/Installation官网教程:/ROS/Tutorials建议初学者认真学完整个“初级”20个教程!©NXROBO202339学习步骤听到最多的问题之一:问:老师,我tutorials做完了,接下来该干什么?答:运行真实的机器人、解决真实的问题!问:没有机器人怎么办?答:仿真环境©NXROBO202340仿真环境:由易至难Turtlesim一个QT开发的2D轨迹显示接口只能显示运动轨迹ArbotiX含有一个差速驱动机器人的rviz仿真器机器人运动及topic数据的3D显示Gazebo功能齐全的3D物理仿真工具非常重,对内存和显卡要求高,慎入!©NXROBO202341进阶部分结合硬件平台和具体应用学习使用各种packageOpenCV、PCL、MoveIt!、Control、Navigation、SLAM在开发过程中学习使用调试仿真工具rqt、rviz、Gazebo开发测试新的机器人算法集成各类package构建机器人原型©NXROBO202342ROS版本那么多,该用哪一个?下载使用统计Hydroandearlier:0.17%Indigo:14.50%(LongTermSupport)Jade:0.50%Kinetic:62.89%(LongTermSupport)Lunar:2.70%Melodic:6.49%(LongTermSupport)©NXROBO202343版本选择建议初学者:

KineticLinux程序设计能力比较强的:M

温馨提示

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

评论

0/150

提交评论