ROS系统是编写机器人软件的灵活框架,方便在各种平台上创建复杂的机器人。

一、历史
ROS是一个有许多贡献者的开源大型项目。斯坦福大学在二十世纪二十年代中期进行了各种努力,涉及Stanford人工智能机器人(STAIR)和个人机器人(PR)等一体化人工智能,创建了用于机器人使用的灵活动态软件系统的内部原型。2007年,机器人孵化器Willow Garage提供了大量资源来进一步扩展这些概念并创建经过充分测试的实现。无数研究人员为核心ROS理念及其基本软件包贡献了他们的时间和专业知识,推动了这一努力。在整个过程中,软件都是使用宽松的BSD开源许可进行公开开发的,并逐渐成为机器人研究界广泛使用的平台。
ROS系统是编写机器人软件的灵活框架,方便在各种平台上创建复杂的机器人。
文章图片


二、ROS的核心组件: 1、通信基础设施
ROS在底层提供了一个供进程间通信的消息传递接口,middleware.
ROS的middleware提供:
【ROS系统是编写机器人软件的灵活框架,方便在各种平台上创建复杂的机器人。】1).发布/订阅消息传递,通信系统是机器人实施应用程序的首要需求。ROS内置的消息系统通过管理分布式节点之间的通信细节,简便快速的进行发布/订阅机制。使用消息传递系统的另一个好处是系统中与节点之间的清晰的接口,改进封装并促进代码重用。
2).录制和播放信息,由于发布/订阅系统是匿名且异步的,因此可以轻松捕获和重放数据,而无需对代码进行任何更改。假设任务A从传感器读取数据,我们想要开发一个任务B处理由任务A读取的数据,ROS可以轻松地将任务A发布的数据捕获到文件,然后重新发布。消息传递抽象允许任务B读取任务A的日志文件。可以显着降低您的开发工作量,并提高系统的灵活性和模块化程度。
3).请求/响应远程过程调用,发布/订阅消息的异步特性适用于机器人中的许多通信需求,但ROS同样支持进程之间的同步请求/响应交互。
4).分布式参数系统,ROS的middleware通过参数服务器可以方便用户修改及共享配置信息。
2、机器人特有的功能 除了核心中间件组件外,ROS还提供了常见的机器人专用库和工具,可以让机器人快速启动并运行。以下是ROS提供的一些机器人特定功能:
1).机器人的标准信息定义,ROS有一套标准信息定义格式,包括集合概念信息定义,如位姿,变换,矢量等; 传感器信息定义,如激光扫描仪,声纳,相机等; 以及诸如odometry,路径和地图之类的导航数据等。通过在应用程序中使用这些标准消息,我们可以自主在ROS系统中添加我们自己的代码及开发工具。
2).机器人几何位置变换,许多机器人项目中的一个常见挑战是跟踪机器人的不同部分相对于彼此的位置。例如,想将摄像机的数据与激光器的数据组合在一起,则需要知道每个传感器相对于全体坐标系中心的位置。在ROS中则可以使用TF变换来帮助我们解决这个问题。
3).机器人描述语言,ROS提供了一套用于描述和建模机器人的工具,以便它可以被ROS系统的其余部分所理解,在ROS中描述机器人的格式是URDF(统一机器人描述格式),它由一个XML文档组成,其中描述了机器人的物理属性,从肢体的长度和轮子的大小到传感器的位置以及机器人各部分的视觉外观。一旦以这种方式定义,机器人可以以三维方式呈现,以实现良好的可视化效果,并可用于模拟器和运动规划器。
4).可抢占远程过程调用,可以在机器人运行过程中监控进展,实时监控机器人的下一步行动,并且返回成功状态。
3、与其他库集成 ROS与其他开源项目集成,例如GAZEBO机器人模拟器、OPENCV计算机视觉库、pointcloundlibrary点云库用于三位数据及深度图像操作、MoveIt运动规划库等。
三、ROS的版本: ROS分发版是一套版本化的ROS软件包。这些类似于Linux发行版(例如Ubuntu)。ROS发行版的目的是让开发人员对付相对稳定的代码库,直到他们准备向前推进一切。
1.、发行清单 ROS系统是编写机器人软件的灵活框架,方便在各种平台上创建复杂的机器人。
文章图片

2.、发布时间表 (1)发布规则: 1) 五月份每年都会有ROS发布。
2) 偶数年发行将是LTS发行,支持五年。
3) 奇数年的发布是正常的ROS发布,支持两年。
4) ROS发布将放弃对EOLUbuntu发行版的支持,即使仍然支持ROS发行版。
(2)特点: 1) 每个ROS发行版都将在一个UbuntuLTS上受支持。
2) 奇数年的发行版将与前一年的LTS ROS发行版共享一个常见的Ubuntu发行版。
3) LTS版本不会与任何以前的版本共享一个通用的Ubuntu版本。
4) 在发布日期之后,ROS发行版不会增加对新的Ubuntu发行版的支持。

天津联汇智造科技有限公司
了解更多ROS移动机器人开发平台请点击链接www.allians.com.cn

    推荐阅读