ROS入门介绍

📅 2026/8/8 17:00:24
ROS入门介绍
1. 什么是ROSROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务包括硬件抽象底层设备控制常用函数的实现进程间消息传递以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面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实时工具包无缝集成。2. 目的很多人都在问“ROS与其它机器人软件平台有什么不同”这是一个很难解答的问题。因为ROS不是一个集成了大多数功能或特征的框架。事实上ROS 的主要目标是为机器人研究和开发提供代码复用的支持。ROS是一个分布式的进程也就是节点框架这些进程被封装在易于被分享和发布的程序包和功能包集中。ROS也支持一种类似于代码储存库的联合系统这个系统也可以实现工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策不受ROS限制。同时所有的工程都可以被ROS的基础工具整合在一起。为了支持分享和协作的主要目的ROS框架也有其它几个目标小型化ROS尽可能设计的很小 -- 我们不封装您的 main() 函数 -- 所以为ROS编写的代码可以轻松的在其它机器人软件平台上使用。 由此得出的必然结论是ROS可以轻松集成在其它机器人软件平台ROS已经可以与OpenRAVEOrocos和Player集成。ROS不敏感库ROS的首选开发模型都是用不依赖ROS的干净的库函数编写而成。语言独立ROS框架可以简单地使用任何的现代编程语言实现。我们已经实现了Python版本C版本和 Lisp版本。同时我们也拥有Java 和 Lua版本的实验库。方便测试ROS内建一个了叫做rostest的单元/集成测试框架可以轻松安装或卸载测试模块。可扩展ROS可以适用于大型运行时系统和大型开发进程。所以“ROS与其它机器人软件平台有什么不同”很难得到一个适用于所有情况的答案但是如果你选择使用其它机器人软件平台我们希望你仍然可以使用到很多基于ROS发布的库函数。至于更多细节这封Brian Gerkey同时涉猎 Player 和 ROS向ROS用户所写的关于ROS和Player区别的电子邮件包括OpenCV 的集成可以为我们提供一些比较这个问题的答案和许多问题一样视情况而定。特别是取悦于你想要干什么。Player非常适合简洁的非铰接的移动平台。它的设计为那些激光雷达的先锋提供了简单的传感器和电机操作方法。然而ROS是围绕着基于驱动传感器倾斜式激光盘式/斜试头部传感器机械臂传感器的复杂移动处理平台设计的。与Player相比ROS可以更方便的借助分布式计算设备而且我可以肯定越高级的应用越适用于ROS而不是Player。换句话说Player提供了更多的硬件驱动而ROS提供了更多算法。我认为说ROS比Player更加灵活强大是公平的。但是现实情况是更加灵活强大意味着更加复杂。尽管我们很努力的使ROS更加简单易用ROS仍然需要一个很长的学习过程。当然熟悉Player会对学习ROS有很大帮助因为它们很多基本的方面都是相似的。关于你们针对OpenCV集成提出的问题我想你们会发现ROS集成OpenCV的代码要比Player多一点。未来当ROS和OpenCV团队明显重叠时你们会发现这种差异将变得更大。我发现ROS利用了大量的来自于Player工程的代码。ROS节点的代码重用了许多Player的驱动而且Stage和Gazebo可在ROS社区中得到广泛的支持和良好的应用。3. 操作系统ROS目前只能在基于Unix的平台上运行。ROS的软件主要在Ubuntu和Mac OS X 系统上测试同时ROS社区仍持续支持FedoraGentooArch Linux和其它Linux平台。与此同时Microsoft Windows端口的ROS已经实现但并未完全开发完成。4. 发布ROS核心系统及各种工具和库函数通常在ROS 发行版本中发布。ROS发行版本类似于Linux发行版本并提供了一系列兼容此版本的可被使用或开发的软件。5. 共献ROS是开源项目我们希望您可以考虑为ROS或兼容ROS的库函数做出贡献。请参考我们的贡献页面了解如何参与ROS社区。6. 原文链接cn/ROS/Introduction - ROS Wiki