ROS是什么?
随着人工智能技术的飞速发展与进步,机器人的智能化已经成为现代机器人发展的终极目标。机器人发展的速度在不断提升,应用范围也在不断拓展,例如自动驾驶、移动机器人、操作机器人、信息机器人等。机器人系统是很多复杂算法模块的集合,如障碍物检测、行为决策、智能控制、环境识别等,从零开始开发系统对技术人员要求非常高,而且工作量巨大。通用机器人框架的应用能把这一复杂的开发过程简单化,技术人员可以将更多的精力放在算法模块的迭代上,不需要关心具体配置管理、部署运行、底层通信等功能。而ROS就是一个比较强大、灵活的机器人编程框架。从软件架构的层面来说,它是一个基于消息传递的分布式多进程框架。ROS基于消息机制的通信,使开发者可以根据功能把软件拆分成独立的子模块,子模块通过不断的组合,建立起比较复杂的系统来完成复杂的功能,这些特点能很好地适应机器人操作系统框架的要求。
ROS目前推出了ROS1和ROS2两个版本,ROS1节点间的数据传递通过内存复制,大量的系统资源都浪费在通讯上,通信实时性也不能得到保障。除此之外,ROS1 通过一个核心的master 节点管理所有节点间的通信,master节点的崩溃将会导致整个系统运行错。ROS2在ROS1的基础上做了以下改进优化:
1.ROS2引入了数据分发服务(DDS)通信协议,它可以以零拷贝的方式传递消息,节省了CPU和内存资源,同时增加通信的实时性;
2.ROS2为托管启动,用户可以指定节点启动顺序;
3.ROS2还去除了ros master这个中心节点管理器,改进了ROS1对master节点的高度依赖的缺点;
总之,ROS2相较ROS1运行更可靠,持续性更好,更节省资源,消息传递实时性更佳,因此ROS2更适合应用在工业生产环境。基于ROS2的以上特点,该框架被广泛应用与工厂AGV作业机器人、智能立体仓库、送餐及快递等服务机器人、自动驾驶、机械手智能控制等新兴智能机器人领域。