多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 1.3 什么是ROS ## 1.3.1 什么是ROS 机器人是一个系统工程,它涉及机械、电子、控制、通信、软件等诸多学科。以前,开发一个机器人需要花很大的功夫,你需要设计机械、画电路板、写驱动程序、设计通信架构、组装集成、调试、以及编写各种感知决策和控制算法,每一个任务都需要花费大量的时间。因此像电影《钢铁写》中那样,仅靠一个人的力量造出一个动力超强的人形机器人机甲是不可能的。 ![](https://img.kancloud.cn/ac/11/ac1111459033a298b47a511e9fbf64e7_835x522.jpeg) 然而随着技术进步,机器人产业分工开始走向细致化、多层次化,如今的电机、底盘、激光雷达、摄像头、机械臂等等元器件都有不同厂家专门生产。社会分工加速了机器人行业的发展。而各个部件的集成就需要一个统一的**软件平台**,在机器人领域,这个平台就是机器人操作系统ROS。 ROS是一个适用于机器人编程的**框架**,这个框架把原本松散的零部件耦合在了一起,为他们提供了**通信架构**。ROS虽然叫做**操作系统**,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个**中间件**,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的**运行时环境**,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。 以上几个关键词(框架、中间件、操作系统、运行时环境)都可以用来描述ROS的特性,作为初学者我们不必深究这些概念,随着你越来越多的使用ROS,就能够体会到它的作用。 ## 1.3.2 ROS特点 ROS具有这些特点: * **分布式 点对点** ROS采用了分布式的框架,通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,提高了系统的容错能力。 * **多种语言支持** ROS支持多种编程语言。C++、Pyhton和已经在ROS中实现编译,是目前应用最广的ROS开发语言,Lisp、C#、Java等语言的测试库也已经实现。为了支持多语言编程,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就是,ROS的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接口。 * **开源社区** ROS具有一个庞大的社区ROS WIKI(http://wiki.ros.org/ ),这个网站将会始终伴随着你ROS开发,无论是查阅功能包的参数、搜索问题还是。当前使用ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款。此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费。这也促进了ROS的流行。 ## 1.3.3 ROS优缺点 ROS为我们开发机器人带来了许多方便,然而它也确实存在一些问题: | 优点 | 缺点 | | :------: | :------: | | 提供框架、工具和功能 | 通信实时性能有限 | | 方便移植 | 系统稳定性尚不满足工业级要求 | | 庞大的用户群体 | 安全性上没有防护措施 | | 免费开源 | 仅支持Linux(Ubuntu) | 总体来说,ROS更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制。 为了解决实际应用的问题,ROS2.0做了很大的改进,目前正在开发之中,未来表现如何值得期待。