ROS1和ROS2的区别

本文探讨了ROS1的局限性,如单点故障、平台依赖和安全性问题,然后介绍了ROS2如何通过移除master节点、采用DDS协议、增加跨平台支持和改进编程模型来提升系统的可靠性和扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

有句话说的好,ROS2的出现就是为了解决ROS1现有的问题。
没毛病,不然开发者也不会闲的没事瞎折腾搞个二代。
显而易见,ROS1和ROS2的区别就是解决的这些问题。


一、ROS1有哪些局限?

  1. 有一个master节点管理所有的节点,一旦它挂了,就都崩了。系统可靠性不高。
  2. ROS1只能在linux上跑,在其他平台上使用不友好。也限制了自身发展。
  3. 节点的通讯方式是基于TCP/IP,不能进行数据加密,网络安全性不高。
  4. 等……

二、ROS2是如何改进的?

  1. 取消了master节点,采用分布式通讯方式,专业点叫做DDS,自我发现机制,相当于各个节点自己和需要沟通的节点进行连接即可,不需要通过master这个“大媒人”。
  2. ROS2支持的操作系统更多,linux,windows,Mac甚至嵌入式板子也可以。
  3. 通讯协议换成了DDS系统,它是物联网中广泛应用的一种通讯协议。
  4. ROS2的编程更倾向于面向对象的实现方法和语言特性,使得程序更具可读性和可移植性。

内容总结于古月居网站,仅用于学习总结。

ROS (Robot Operating System) 是一个为机器人开发设计的开源操作系统,它提供了一套丰富的软件框架,用于处理传感器数据、控制通信。ROS 分为两个主要版本:ROS 1 ROS 2。 **ROS 1(Eloquent Elks)**: - 发布于2009年,是ROS的第一个稳定版本,主要用于科研教育领域。 - 使用了主/从架构,即节点之间通过发布/订阅机制进行通信。 - 采用的是Transport层的TCP/IP协议,导致网络延迟较高,不适合大规模部署实时性要求高的应用。 - 语言绑定丰富,支持C++、Python等,但不支持动态类型加载,可能导致代码冗余。 **ROS 2(Dashing Diademata)**: - 发布于2017年,作为对ROS 1的重大改进,旨在提供更好的性能、可靠性安全性。 - 改用了DDS (Data Distribution Service for Real-Time Systems) 作为底层通信机制,提供了更低的延迟更高的吞吐量。 - 使用了现代C++标准包管理工具,提高了开发效率。 - 引入了服务(Services)动作(Actions),增强了交互性并发处理能力。 - 通过Node.js支持动态类型加载,更利于模块化开发。 **主要区别**: 1. **通信机制**:ROS 2的DDS协议提供了更好的实时性能,而ROS 1的TCP/IP有较大延迟。 2. **语言API**:ROS 2主要使用C++,并通过Node.js支持动态类型,ROS 1则以C++为主,Python也有广泛支持。 3. **设计哲学**:ROS 2更加注重系统性安全性,适合工业级应用。 4. **迁移成本**:虽然ROS 2有许多变化,但通过Ros2Bridge可以一定程度上与ROS 1进行互通,但全面迁移可能需要较大的工作量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值