机器人操作系统(ROS)ROS初识1.1全套可编辑PPT课件
机器人操作系统(ROS)1.1.1ROS是什么ROS是机器人操作系统(RobotOperatingSystem)的英文缩写。ROS起源于2007年斯坦福大学人工智能实验室的STAIR项目与机器人技术公司WillowGarage的个人机器人项目(PR)之间的合作,2008年之后就由WillowGarage来进行推动。最初人们希望设计一个可以像人一样能够感知,并实现自我控制从而完成一些复杂工作的机器人。随着机器人领域的快速发展,代码的复用性和模块化的需求原来越强烈,急需一个能够整合现有资源的框架和接口。2010年WillowGarage公司发布了开源机器人操作系统ROS,很快在机器人研究领域展开了学习和使用ROS的热潮。ROS起源发展
机器人操作系统(ROS)1.1.1ROS是什么ROS是用于机器人编程的开放、灵活的软件框架。它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理等,它也提供一些可视化和调试机器人数据的软件工具。ROS框架的核心是消息传递,即使在不同的机器上运行,进程之间也可以相互通信和交换数据。ROS消息传递可以是同步的,也可以是异步的。事实上,ROS的主要目的就是为机器人研究和开发提供代码复用的支持。ROS是一种分布式处理框架,这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统,使得协作亦能被分发。上述所有功能都能由ROS的基础工具实现。设计者将ROS表述为“ROS=Plumbing+Tools+Capabilities+Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。ROS的表述
机器人操作系统(ROS)1.1.2ROS的特点点对点的设计:节点是ROS编程基础中一个重要的概念,在ROS中每个进程都以一个节点的形式运行,可以分布于多个不同的主机。节点间的消息通过一个带有发布和订阅功能的传输系统从发布节点传送到接收节点。这种点对点的设计可以分散实现复杂功能时带来的实时计算的压力。多语言支持:为了支持更多应用的移植和开发,ROS通信框架可以轻松地以各种现有的编程语言实现。ROS中使用简洁、中立的定义语言描述模块之间的消息接口,同时也允许消息接口的嵌套使用。目前已经支持Python、C++、Java、Octave和LISP等多种不同的语言。库集成:ROS具有许多第三方机器人库的接口,如开源计算机视觉(Open-CV)、点云库(PCL)、Open-NI、Open-Rave和Orocos。开发人员可以没有顾虑的使用这些库。组件化工具包丰富:ROS可采用组件化方式集成一些工具和软件到系统中并作为一个组件直接使用,如RVIZ(3D可视化工具),开发者根据ROS定义的接口在其中显示机器人模型等,组件还包括仿真环境和消息查看工具等。协作开发:ROS是开源的,遵照的BSD许可给使用者较大的自由,允许修改和重新发布其中的应用代码,开发人员可以通过添加功能包来扩展ROS的功能。几乎所有的ROS包都在硬件抽象层上工作,可以轻松地为其他机器人所用。
机器人操作系统(ROS)1.1.3ROS的发行版ROS的发行版本ROS发行版是一组版本化的ROS包,这些类似于Linux发行版(例如Ubuntu)。ROS发行版的目的是让开发人员在相对稳定的代码库上工作,直到他们准备好推进所有事情。因此,一旦发布发行版,我们就会尝试限制对核心包(ros-desktop-full下的所有内容)的错误修复和非破坏性改进的更改。到2022年为止,ROS已经发布了如表1-1所示的多个版本。本书选择的ROS版本是2018年发布的长期支持版本ROSMelodicMorenia,这也是ROS发布的第12个版本,ROS官方称将为该版本提供长达5年的支持与服务,并保证其与Ubuntu1