什么是ROS?
随着科技的发展,机器人产业分工开始走向细致化、多层次化,如今电机、激光雷达、摄像头、机械臂等元器件都有不同厂家专门生产。社会分工加速了机器人行业的发展。而把各个模块集成到一起就需要一个统一的平台,在机器人领域,这个平台就是ROS。
ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在一起,并且提供了通信框架。ROS虽然叫做操作系统,但并非Windows、Mac、Linux那样通常意义下的操作系统,它只是连接了操作系统和你开发的ROS程序,所以也算一个中间件。基于ROS的应用程序之间建立起了沟通的桥梁,因此机器人的感知、决策、控制算法可以更好的组织运行。
ROS的特点
-
分布式、点对点
分布式框架,通过点对点的设计让机器人的各个进程(节点)可以分别运行,便于模块化的修改和升级,提高了系统的容错能力。
-
多种语言支持
ROS支持多种语言。C++和Python已经可以在ROS中编译。Lisp、C#、Java等语言的测试库也已经实现。为了支持多语言编程,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。通俗的理解就是,ROS的通信格式和用哪种编程语言来写无关(message机制),它使用的是自身定义的一套通信接口。
-
开源社区
ROS具有一个庞大的社区ROS WIKI,这个网站将会始终伴随着你ROS开发,无论是查阅功能包的参数、搜索问题还是。当前使用ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款。此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费。这也促进了ROS的流行。
ROS的优缺点
优点 | 缺点 |
---|---|
提供框架、工具、功能 | 通信实实时能力有限 |
方便移植 | 系统稳定性尚不能满足工业级别 |
庞大的用户群体 | 安全性上没有防护措施 |
免费开源 | 仅支持Linux(Ubuntu) |
接口与编程语言无关 |
总体来说,ROS更适合科研和开源用户使用,如果在工业场景应用(例如无人驾驶)还需要做优化和定制。