ros2相关简介
ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System)。但是ROS本身并不是一个操作系统,而是一个软件库和工具集。
Ros的出现解决了机器人各个组件的通信问题,后来越来越多的机器人算法也集成到了ROS中,ROS2继承了ROS,相比ROS更强大更优秀。
ROS的设计目的:简化在各种机器人平台上创建复杂而强大的机器人行为的任务即不重复造造论子,即实现某一个功能时,可以直接使用现成或者进行改造。
在ROS之前,让机器人的各个部分协调通信起来是一件非常复杂的事情。例如一个简单的机器人包含感知(深度相机及传感器等)、决策(算法部分)、控制(硬件驱动)三大部分。ROS使上面几个部分合理的连接在了一起。
下图是ROS2的部分版本历史。
ROS和ROS2对比
ROS为简化机器人开发设计了一整套通信机制(话题、服务、参数、动作)。通过这套机制可以将机器人的各个组件连接起来。这套机制设计了一个叫做Ros Master的节点,其他所有组件的通信必须经过该主节点,一旦主节点挂掉,将会导致整个机器人系统通信崩溃!所以不能利用Ros的不稳定性不能用来做一些类似于自动驾驶等一些高风险的机器人。此外还有以下缺点:
1、基于TCP实现德通信、实时性差,系统开销大
2、对python3支持不友好
3、消息机制不兼容
4、无加密机制,安全性不高
ROS2首先去掉了ROS中存在的主节点。去掉主节点之后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,可以实现一对一、一对多、多对多进行互相通信。采用DDS进行通信之后,可靠性和稳定性都有了增强。
相比于ROS只支持Linux系统,ROS2还支持windows,mac,甚至RTOS平台;