ROS的诞⽣让机器⼈与智能网联汽车技术在共同的框架下快速发展,基于ROS诞⽣了多样化的智能⽣态及应⽤,机器⼈控制、感知和决策与智能网联汽车的感知,规划也得以更好的组织和运⾏。随着机器⼈与智能网联技术研究、设计及应⽤的逐步深⼊,ROS技术在低速机器人应用场景与高速机器人应用场景等多种应⽤环境下开启全面应用,伴随⾯对多样化的⾏业应⽤时,对机器⼈与智能网联汽车的导航、任务、调度、运⾏、系统稳定性及可拓展性乃⾄产品量化成本考核也有了越来越⾼的要求。
ROS1版本⾯对这些要求时,其单系统、单⼀平台、实时性、稳定性、通讯能力、保密性等前期底层架构问题也逐步显现出来,⽆法满⾜未来机器⼈与智能网联汽车⾯对复杂环境时的任务要求。
ROS2的推出与应⽤迭代,则为机器⼈与智能网联自动驾驶技术框架突破当前发展瓶颈提供了可能性及可⾏性。
接下来小y与大家一同讨论 ROS1 与 ROS 2 的差异与对比 。
01
操作系统差异
Ros 1:只能运行在linux/windows
Ros 2:可以运行在linux/windows/macos甚至嵌入式实时操作系统
02
系统架构差异
系统架构可以分为三层 :系统层、中间层、应用层
主要区别体现在中间层 :
(1)DDS = DDS实现层
DDS实现层,由各个厂商提供相应的DDS软件产品;
该层的目的是为了让用户可以根据自己实际需求选择不同厂商
(2)RMW = 抽象的DDS层
中间接口层,由C语言实现,直接和DDS交互,并向ros2 client层提供API接口;
该层的目的是让用户程序可以在不同供厂商的DDS之间进行无感移植
(3)RCL = ROS2 Client层
该层包含ROS2核心概念如Node、Action等的具体实现,以及不同编程语言如C++、Python和Java等API接口:rclcpp/rclpy/rcljava;
包含RCL库和不同的编程语言API,RCL库是一致的由C语言实现,编程语言API接口 是独立的,从而保证了不同编程语言下程序运行的一致性
03