当前位置: 首页 > 软件库 > 其他开源 > 开源硬件 >

ROS

机器人操作系统
授权协议 BSD
开发语言 Python
所属分类 其他开源、 开源硬件
软件类型 开源软件
地区 不详
投 递 者 仉明知
操作系统 Linux
开源组织
适用人群 未知
 软件概览

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。ROS 遵守 BSD 开源许可协议。

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”类似的“机器人框架”有:PlayerYARPOrocosCARMENOrcaMOOS Microsoft Robotics Studio

ROS 运行时的“蓝图”是一种基于ROS通信基础结构的松耦合点对点进程网络。ROS实现了几种不同的通信方式,包括基于同步RPC样式通信的服务(services)机制,基于异步流媒体数据的话题(topics)机制以及用于数据存储的参数服务器(Parameter Server)。想更加深入的解释这些概念,请参见概念综述

ROS并不是一个实时的框架,但ROS可以嵌入实时程序。Willow Garage的PR2机器人使用了一种叫做pr2_etherCAT的系统来实时发送或接收ROS消息。ROS也可以与Orocos实时工具包无缝集成

ROS不是一个集成了大多数功能或特征的框架。事实上,ROS 的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程(也就是节点)框架,这些进程被封装在易于被分享和发布的程序包功能包集中。ROS也支持一种类似于代码储存库的联合系统,这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策(不受ROS限制)。同时,所有的工程都可以被ROS的基础工具整合在一起。

为了支持分享和协作的主要目的,ROS框架也有其它几个目标:

  • 小型化:ROS尽可能设计的很小 -- 我们不封装您的 main() 函数 -- 所以为ROS编写的代码可以轻松的在其它机器人软件平台上使用。 由此得出的必然结论是ROS可以轻松集成在其它机器人软件平台:ROS已经可以与OpenRAVE,Orocos和Player集成。
  • ROS不敏感库:ROS的首选开发模型都是用不依赖ROS的干净的库函数编写而成。
  • 语言独立:ROS框架可以简单地使用任何的现代编程语言实现。我们已经实现了Python版本C++版本 Lisp版本。同时,我们也拥有Java 和 Lua版本的实验库。

  • 方便测试:ROS内建一个了叫做rostest的单元/集成测试框架,可以轻松安装或卸载测试模块。

  • 可扩展:ROS可以适用于大型运行时系统和大型开发进程。

ROS目前只能在基于Unix的平台上运行。ROS的软件主要在Ubuntu和Mac OS X 系统上测试,同时ROS社区仍持续支持Fedora,Gentoo,Arch Linux和其它Linux平台。

与此同时,Microsoft Windows端口的ROS已经实现,但并未完全开发完成。

  • ROS 是 Robot Operating System 的缩写,通常称为“机器人操作系统”。但它并不是一个真正的操作系统,而是一个面向机器人的开源的元操作系统(meta-operating system),提供类似传统操作系统的诸多功能:硬件抽象、底层设备控制、常用功能实现、进程间消息传递、程序包管理等。并且提供相关工具和库,用于获取、编译、编辑代码以及在多个计算机之间运行程序完成分布式计算。

  • ROS wiki:http://wiki.ros.org/ ROS API:https://docs.ros.org/en/api/roscpp/html/index.html ROS单线程与多线程处理:http://wiki.ros.org/roscpp/Overview/Callbacks%20and%20Spinning 在ros应用中可以根据自己的需要使用线程;ros内部在后台使用线程管理

 相关资料
  • ROS 机器人操作系统 近几年发展迅速,国内也有相当一部分开发人员有意向涉足ROS,但是苦于没有低门槛的系统性教程,只能望之兴叹,基于此我们设计了一套免费、零基础、理论与实践相结合的教程,以帮助有志于机器人开发的童鞋方便快捷的上手ROS,继而推动整个行业的进步。

  • 数据概览 1.机器人问答界面 机器人问答是系统中重要的组成部分,能够帮助企业回答用户高重复、高频、无人或忙碌阶段的问答问题,较好的使用机器人问答能够回复80%以上的客户问题,通过知识维护和学习还将不断提高问答率,节省企业人工,提升准确率。 机器人问答界面包括几种类型: 单独网页标签页界面:单独网页咨询界面是一个独立网页,包含较为全面的页面信息 独立咨询控件窗口界面:单独的咨询控件窗口界面是一个悬浮

  • 计算机操作系统

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表

  • #软件开发笔面经# 二面和一面相比更是抽象,感觉字节系的面试官都是不愿意说话,具体体现在面试中就是多余的一个字都不说,项目也不怎么问,导致我一度以为一面挂了,也许这就是字节风格吧 项目: 介绍完之后又是象征性地问了问之前自驾工程侧的开发内容,参考一面 面试官直接表示了对算法侧的东西不太感兴趣,表示工程是这样的,算法那边只要实现就完事了,但是工程要考虑的就很多了 手撕: “给你40分钟做下这个啊”

  • 问题内容: 我不确定我在问正确的问题…但是当我阅读所有可以接触到的docker时,我发现可以在Ubuntu 12.04上安装Docker(例如),然后安装一个Fedora容器还是其他版本的ubuntu?(有一个示例,其中用户在容器中安装了busybox。) 当然,我可能完全错了。 但是,我希望基本系统与容器之间存在短暂的连接。 重述:主机操作系统和容器基础映像的操作系统之间是什么关系? 问题答案:

  • 编译系统 静态链接 目标文件 动态链接 编译系统 以下是一个 hello.c 程序: // c #include int main() { printf("hello, world\n"); return 0; } 在 Unix 系统上,由编译器把源文件转换为目标文件。 // bash gcc -o hello hello.c 这个过程大致如下: 预处理阶段:处理以 # 开

  • 概述 进程管理 死锁 内存管理 设备管理 链接 参考资料 Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014. 汤子瀛, 哲凤屏, 汤小丹. 计算机操作系统[M]. 西安电子科技大学出版社, 2001. Bryant, R. E., & O’Hallaron, D. R. (2004). 深入理解