没有合适的资源?快使用搜索试试~ 我知道了~
首页开源机器人操作系统ROS-操作系统的入门资料
开源机器人操作系统ROS-操作系统的入门资料

开源机器人操作系统ROS,入门级资料;高清,带书签 一、操作系统探索总结(一)ROS 简介 二、操作系统探索总结(二)ROS 总体框架 三、操作系统探索总结(三)ROS 新手教程 四、操作系统探索总结(四)简单的机器人仿真 五、操作系统探索总结(五)创建简单的机器人模型smartcar 六、操作系统探索总结(六)使用smartcar 进行仿真 七、操作系统探索总结(七)smartcar 源码上传 八、操作系统探索总结(八)键盘控制 九、操作系统探索总结(九)操作杆控制 十、操作系统探索总结(十)语音控制 十一、操作系统探索总结(十一)机器视觉 十二、操作系统探索总结(十二)坐标系统 十三、操作系统探索总结(十三)导航与定位框架 十四、操作系统探索总结(十四)move_base(路径规划) 十五、操作系统探索总结(十五)amcl(导航与定位)
资源详情
资源评论
资源推荐

目录
一、操作系统探索总结(一)ROS 简介
二、操作系统探索总结(二)ROS 总体框架
三、操作系统探索总结(三)ROS 新手教程
四、操作系统探索总结(四)简单的机器人仿真
五、操作系统探索总结(五)创建简单的机器人模型 smartcar
六、操作系统探索总结(六)使用 smartcar 进行仿真
七、操作系统探索总结(七)smartcar 源码上传
八、操作系统探索总结(八)键盘控制
九、操作系统探索总结(九)操作杆控制
十、操作系统探索总结(十)语音控制
十一、操作系统探索总结(十一)机器视觉
十二、操作系统探索总结(十二)坐标系统
十三、操作系统探索总结(十三)导航与定位框架
十四、操作系统探索总结(十四)move_base(路径规划)
十五、操作系统探索总结(十五)amcl(导航与定位)

操作系统探索总结(一)
ROS
简介
一、历史
随着机器人领域的快速发展和复杂化,代码的复用性和模块化的需求原来越强烈,而已
有的开源机器人系统又不能很好的适应需求。2010 年 Willow Garage 公司发布了开源机器
人操作系统 ROS(robot operating system),很快在机器人研究领域展开了学习和使用 ROS
的热潮。
ROS 系统是起源于 2007 年斯坦福大学人工智能实验室的项目与机器人技术公司 Willow
Garage 的个人机器人项目(Personal Robots Program)之间的合作,2008 年之后就由 Willow
Garage 来进行推动。已经有四年多的时间了 (视频)。随着 PR2 那些不可思议的表现,譬如
叠衣服,插插座,做早饭,ROS 也得到越来越多的关注。Willow Garage 公司也表示希望借
助开源的力量使 PR2 变成“全能”机器人。
PR2 价格高昂,2011 年零售价高达 40 万美元。PR2 现主要用于研究。PR2 有两条手臂,
每条手臂七个关节,手臂末端是一个可以张合的钳子。PR2 依靠底部的四个轮子移动。在 PR2
的头部,胸部,肘部,钳子上安装有高分辨率摄像头,激光测距仪,惯性测量单元,触觉传
感器等丰富的传感设备。在 PR2 的底部有两台 8 核的电脑作为机器人各硬件的控制和通讯中
枢。两台电脑安装有 Ubuntu 和 ROS。
二、设计目标
ROS 是开源的,是用于机器人的一种后操作系统,或者说次级操作系统。它提供类似操
作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的
消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机
整合的程序。

ROS 的首要设计目标是在机器人研发领域提高代码复用率。ROS 是一种分布式处理框架
(又名 Nodes)。这使可执行文件能被单独设计,并且在运行时松散耦合。这些过程可以封装
到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS 还支持代码库的联合系统。
使得协作亦能被分发。这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作
成为可能。上述所有功能都能由 ROS 的基础工具实现。
三、主要特点
ROS 的运行架构是一种使用 ROS 通信模块实现模块间 P2P 的松耦合的网络连接的处理架
构,它执行若干种类型的通讯,包括基于服务的同步 RPC(远程过程调用)通讯、基于 Topic
的异步数据流通讯,还有参数服务器上的数据存储。但是 ROS 本身并没有实时性。
ROS 的主要特点可以归纳为以下几条:
(1)点对点设计

一个使用 ROS 的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程
中通过端对端的拓扑结构进行联系。虽然基于中心服务器的那些软件框架也可以实现多进程
和多主机的优势,但是在这些框架中,当各电脑通过不同的网络进行连接时,中心数据服务
器就会发生问题。
ROS 的点对点设计以及服务和节点管理器等机制可以分散由计算机视觉和语音识别等
功能带来的实时计算压力,能够适应多机器人遇到的挑战。
(2)多语言支持
在写代码的时候,许多编程者会比较偏向某一些编程语言。这些偏好是个人在每种语言
的编程时间、调试效果、语法、执行效率以及各种技术和文化的原因导致的结果。为了解决
这些问题,我们将 ROS 设计成了语言中立性的框架结构。ROS 现在支持许多种不同的语言,
例如 C++、Python、Octave 和 LISP,也包含其他语言的多种接口实现。
ROS 的特殊性主要体现在消息通讯层,而不是更深的层次。端对端的连接和配置利用
XML-RPC 机制进行实现,XML-RPC 也包含了大多数主要语言的合理实现描述。我们希望 ROS
能够利用各种语言实现的更加自然,更符合各种语言的语法约定,而不是基于 C 语言给各种
其他语言提供实现接口。然而,在某些情况下利用已经存在的库封装后支持更多新的语言是
很方便的,比如 Octave 的客户端就是通过 C++的封装库进行实现的。
为了支持交叉语言,ROS 利用了简单的、语言无关的接口定义语言去描述模块之间的消
息传送。接口定义语言使用了简短的文本去描述每条消息的结构,也允许消息的合成,例如
下图就是利用接口定义语言描述的一个点的消息:
每种语言的代码产生器就会产生类似本种语言目标文件,在消息传递和接收的过程中通
过 ROS 自动连续并行的实现。这就节省了重要的编程时间,也避免了错误:之前 3 行的接口
定义文件自动的扩展成 137 行的 C++代码,96 行的 Python 代码,81 行的 Lisp 代码和 99 行
的 Octave 代码。因为消息是从各种简单的文本文件中自动生成的,所以很容易列举出新的

消息类型。在编写的时候,已知的基于 ROS 的代码库包含超过四百种消息类型,这些消息从
传感器传送数据,使得物体检测到了周围的环境。
最后的结果就是一种语言无关的消息处理,让多种语言可以自由的混合和匹配使用。
(3)精简与集成
大多数已经存在的机器人软件工程都包含了可以在工程外重复使用的驱动和算法,不幸
的是,由于多方面的原因,大部分代码的中间层都过于混乱,以至于很困难提取出它的功能,
也很难把它们从原型中提取出来应用到其他方面。
为了应对这种趋势,我们鼓励将所有的驱动和算法逐渐发展成为和 ROS 没有依赖性单独
的库。ROS 建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的
CMake 工具使它很容易的就实现精简的理念。ROS 基本将复杂的代码封装在库里,只是创建
了一些小的应用程序为 ROS 显示库的功能,就允许了对简单的代码超越原型进行移植和重新
使用。作为一种新加入的有优势,单元测试当代码在库中分散后也变得非常的容易,一个单
独的测试程序可以测试库中很多的特点。
ROS 利用了很多现在已经存在的开源项目的代码,比如说从 Player 项目中借鉴了驱动、
运动控制和仿真方面的代码,从 OpenCV 中借鉴了视觉算法方面的代码,从 OpenRAVE 借鉴了
规划算法的内容,还有很多其他的项目。在每一个实例中,ROS 都用来显示多种多样的配置
选项以及和各软件之间进行数据通信,也同时对它们进行微小的包装和改动。ROS 可以不断
的从社区维护中进行升级,包括从其他的软件库、应用补丁中升级 ROS 的源代码。
(4)工具包丰富
为了管理复杂的 ROS 软件框架,我们利用了大量的小工具去编译和运行多种多样的 ROS
组建,从而设计成了内核,而不是构建一个庞大的开发和运行环境。
剩余117页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论2