机器人通用软件框架,集成了大量的工具、库、协议,提供类似操作系统的功能,包括硬件抽象,底层驱动程序管理,共用功能执行、程序间消息传递、程序发行包管理。
最初应用于斯坦福与机器人技术公司(willow garage),08年后由willow garage维护。
1.ROS的缺点
1)节点间基于消息机制通信,通讯部分消耗了很多系统资源。尤其是当所有节点位于同一个处理器时,ROS仍然一直执行相应的消息分发,节点间的数据传递通过内存复制,大量的系统资源都浪费在通讯上,使得系统必须选用高性能的处理器和存储系统以弥补损耗
2)系统太过庞大、太过冗余。一方面是因为ROS系统内置的功能包太多,但其实企业在运用的过程中用不上这么多的功能包;另一方面是因为ROS系统内置的功能包会依赖于很多第三方的库和软件包,且依赖关系太过复杂
3)ROS系统的实时性差也是一个硬伤。ROS2.0版本也对实时性差的问题有一些改善,ROS 2.0版本采用DDS实现了消息的强实时性。对于机器人运动控制来说,ROS系统的实时性是不够的,还是必须搭配单独的运动控制器
XOR(Xenomai + OROCOS + ROS)是比较常用的一种ROS实时化方案。
https://blog.csdn.net/m0_37946085/article/details/82923014
4)跨平台,在Windows,macOS,RTOS等系统上功能有限
5)网络连接,分布式机制需要良好的网络环境才能保证数据完整性,且网络不具备数据加密、安全防护等功能
6)稳定性欠佳,master或部分节点易宕机
2.ROS的优点
ROS的核心——分布式网络,使用了基于TCP/Ip的通讯方式,实现模块间点对点的松耦合连接
ROS最大的贡献就是制定了机器人开发的统一接口标准。所以ROS的意义,相当于“书同文,车同轨”。
1)每一个进程都以一个节点的形式运行
2)多语言支持,语言弱相关的框架结构
3)模块化特定,可以使每个节点单独编译,