ROS2 介绍
ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System)。但是ROS本身并不是一个操作系统,而是一个软件库和工具集。 Ros的出现解决了机器人各个组件的通信问题,后来越来越多的机器人算法也集成到了ROS中,ROS2继承了ROS,相比ROS更强大更优秀。
1 ROS2 的设计目标和特点
ROS2怀揣变革智能机器人时代的历史使命,在设计之初,就考虑到要满足各种各样机器人应用的需求。
- 多机器人系统: 未来机器人一定不会是独立的个体,机器人和机器人之间也需要通信和协作,ROS2为多机器人系统的应用提供了标准方法和通信机制。
- 跨平台: 机器人应用场景不同,使用的控制平台也会有很大差异,为了让所有机器人都可以运行ROS2,ROS2可以跨平台运行于Linux、Windows、MacOS、RTOS。
- 实时性: 机器人运动控制和很多行为策略要求机器人具备实时性,比如机器人要可靠得在100ms内发现前方的行人,或者稳定的在1ms周期内完成运动学、动力学的解算,ROS2为类似这样的实时性需求提供了基本保障。
- 产品化: 大量机器人已经走向我们的生活,未来还会越来越多,ROS2不仅可以用于机器人研发阶段,还可以直接搭载在产品中,走向消费市场,这对ROS2的稳定性、强壮性也提除了巨大挑战。
- 项目管理: 机器人开发是一个复杂的系统工程,设计、开发、调试、测试、部署等全流程的项目管理工具和机制,也会在ROS2中体现,更方便我们去开发一款机器人。
2 ROS和ROS2对比
ROS为简化机器人开发设计了一整套通信机制(话题、服务、参数、动作)。通过这套机制可以将机器人的各个组件连接起来。这套机制设计了一个叫做Ros Master的节点,其他所有组件的通信必须经过该主节点,一旦主节点挂掉,将会导致整个机器人系统通信崩溃!所以不能利用Ros的不稳定性不能用来做一些类似于自动驾驶等一些高风险的机器人。此外还有以下缺点:
- 基于TCP实现的通信、实时性差,系统开销大
- 对python3支持不友好
- 消息机制不兼容
- 无加密机制,安全性不高
ROS2首先去掉了ROS中存在的主节点。去掉主节点之后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,可以实现一对一、一对多、多对多进行互相通信。采用DDS进行通信之后,可靠性和稳定性都有了增强。