ROS学习(1)——ROS1和ROS2的区别

news2024/12/28 6:08:41

        因为机器人是一个系统工程,它包括了机械臂结构,电子电路,驱动程序,通信框架,组装集成,调试和各种感知决策算法等方面,任何一个人甚至是一个公司都不可能完成机器人系统的研发工作 。但是我们又希望自己能造出一个机器人跑一跑,验证一下自己的算法,所以我们就需要一个软件平台能够把机器人的各个部件做一个集成,这个平台就是ROS。那么至于机器人的每个部件(摄像头,电机等)就交给专业的人去做。

        最开始出现的是ROS1,是2007年机器人公司Willow Garage和斯坦福人工智能实验室合作开发的,每年都在Ubuntuxx.04版本发布一个月之后的五月份发布新版本。比较有意思的是ROS的发布日期刚好是在5月23号,这一天是世界乌龟日(World Turtle Day),用过ros的小伙伴应该都了解ros的每个版本的海报都是一只别具特色的小乌龟,ros的官方仿真教程turtlesim就是一只小乌龟在跑啊跑(会心一笑)。

       OS

       在ROSCon2014上,ROS正式发布了新一代的ROS设计架构,2018年正式推出ROS2的第一个正式版本。可以说ROS2是ROS1脱胎换骨之后的样子。那么我们已经有ROS1了,为什么还要发布ROS2呢,把ROS1一直改进改进不就好了么?接下来我们就来了解一下为什么一定要推出ROS2,以及ROS1和ROS2的区别在哪里。

ROS1的介绍

ROS1采用分布式框架,其架构可以分为三个层次:基于Linux系统的OS层,实现ROS核心通信机制以及众多机器人开发库的中间层;在ROS Master的管理下保证功能节点的正常运行的应用层。

ROS1的通信机制是每个节点通过ROS Master发送和接收话题消息。

 

 但是ROS1存在以下几个问题:

  • 无实时性(real-time)
  • 嵌入式设备不友好
  • 对于网络通信的重依赖(需要高带宽且稳定的网络连接)
  • 多用于学术应用
  •  原生的 ROS 仅支持单机器人
  •  超高的灵活性带来的不规范的编程模式

总的来说,ROS1比较适用于单个机器人,很多方面存在一些限制,对于多机器人系统,跨平台,实时性强,网络安全要求高,产品化的场景下(如自动驾驶汽车,多机械臂协同),ROS1就不能很好的胜任了。

 ROS2

ROS2和ROS1的系统框架对比如下图所示,最大的区别就在于ROS2没有Master了。

ROS1中Master相当于一个团队的核心成员,如果没有了Master或者是Master出现了问题,就会无法实现节点中的通信,这样这个系统很不稳定。所以采用类似去中心化的方式,ROS2中就没有了Master节点,ROS2中采用discovery——自发现机制,让节点和节点之间无需通过Master,互相找到彼此,从而建立稳定的通信连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【黑科技】基于GPT开发的4款免费AI办公神器,实用又强悍!

今天给大家推荐4个非常实用且非常强悍的工具,基于GPT开发的AI工具 ,每一款都能够大大提升我们的学习和工作效率 ,希望你能看到并在收藏的同时点个赞或关注,万分感谢 。 Chat2doc 这是一个对学生党和打工人都特别有用的AI工具 &a…

西米支付:数字人民币常识普及

1.1 什么是数字人民币? 数字人民币 (英文简称: e-CNY) 是由人民银行发行的数字形式的法定货币 ,由指定 运营机构参与运营 ,以广义账户体系为基础 ,支持银行账户松耦合功能 (意味着用户既可 以选择将数字人民币钱包与自…

GstOverlay 绑定多个gtk 窗口

主题说明 在spice stream 模式下,为了实现流畅的显示,利用gstvideooverlay 接口实现了gstreamer pipeline 的输出直接绑定到gtk 的窗口下。 然而spice客户端采用的是playbin 插件当前只能绑定一个窗口,当需要采用多窗口模式时,当…

VMware安装win10虚拟机教程及常见问题

win10虚拟机安装教程 一、前言 1. 准备VMware虚拟机(可自行到VMware官网 或 点击链接 下载正版VMware Workstation Pro)。 2. 准备需要安装的win10镜像,下载地址:下载 Windows 10。 3. 文章不一定合适每位安装虚拟机的人&#x…

代理模式及对startActivity的Hook应用

定义 简而言之,就是让代理类和目标类(被代理类)实现同一个接口,并让代理类持有一个目标类的对象,这样对代理类的访问,可以转移到目标类的访问中去。我们可以在不修改目标类的情况下,在代理类中实…

Cesium源码分享--标绘

Cesium标绘插件 在线api文档说明 在线体验地址1(三维框架内) 在线体验地址2 更多案例地址 免费gis数据 ps:如果可以的话,希望大家能给我个star,好让我有更新下去的动力; 实现原理: 其中实…

RSS订阅无需代码连接飞书自建的方法

RSS订阅用户使用场景: 公司为倡导员工阅读文化以及提高自身素质,通过RSS订阅一些书籍,然后由相关部分负责人每日推送到部门群,便员工们能够随时获取到最新的读书消息。但负责人时常会忘记,且人工手动复制粘贴多项信息比…

使用底层代码(无框架)实现卷积神经网络理解CNN逻辑

首先将数据集放入和底下代码同一目录中,然后导入一些相关函数的文件cnn_utils.py: import math import numpy as np import h5py import matplotlib.pyplot as plt import tensorflow as tf from tensorflow.python.framework import ops def load_data…

Win10搭建Docker Desktop并安装vim

Win10搭建Docker Desktop 1 介绍 Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行。它是一个本地 Windows 应用程序,为构建、交付和运行dockerized应用程序提供易于使用的开发环境。Docker Desktop for Windows 使用 Wi…

shell脚本基本操作及案例

本文介绍了shell脚本的基本建立过程,并举了4个案例。关键是例3的shell脚本检测局域网ip地址机器是否宕机,例4的shell脚本获取本机ip地址 一、第一个shell脚本 1、定义解释器 #!/bin/bash echo "hello world" #! 是一个约定的标记…

今天面了个京东拿28K 出来的,让我见识到了测试界的天花板

今年的春招基本已经结束了,很多小伙伴收获不错,拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的软件测试面试题和八股文,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。 俗话说得好&#…

【Android】基于Airtest实现大麦网app自动抢票程序

0x01 缘起 疫情结束的2023年5月,大家对出去玩都有点疯狂,歌手们也扎堆开演唱会。但演唱会多,票一点也不好抢,抢五月天的门票难度不亚于买五一的高铁票。所以想尝试找一些脚本来辅助抢票,之前经常用selenium和request做…

探索未来智能交通:网联汽车与汽车互联

网联汽车是指配备多种传感器和通信设备,并且能够接入互联网的汽车。这种汽车可以与外部环境进行交互,并利用各种技术(如 GPS 导航、娱乐系统、诊断传感器和通信工具等)实现数据的传输和接收。 网联汽车能够与其他车辆、交通基础设…

ChatGPT 引发AI服务器霸屏?AI服务器和普通服务器不同在哪?

​  近阶段,由于 ChatGPT 的横空问世,引发 AI 服务器再一次热潮来袭。随之而来的是,越来越多的企业和机构开始关注 AI 服务器和普通服务器之间的区别和对比。那么AI服务器到底是什么意思,它与普通服务器相比又有哪些差异呢? AI…

MySQL高级——第15章_锁

第15章_锁 1. 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一-些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何 时刻最多只…

动态规划进阶

文章目录 状压dp小国王玉米田炮兵阵地 状压dp 小国王 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter;public class Main{static BufferedReader br new Bu…

Day25力扣刷題

131.分割回文串 此題思維和前幾題不一樣,思維容量更大,主要在於返回的時候,還是會取值。 運行代碼: class Solution:def partition(self, s: str) -> List[List[str]]:result[]tt[]def backtrack(s,index):if len(s)index:res…

node.js PM2部署项目

pm2 是什么 pm2 是一个守护进程管理工具,它能帮你守护和管理你的应用程序。通常一般会在服务上线的时候使用 pm2 进行管理。本文围绕以下重点进行讲解:安装pm2;命令行部署到PM2;PM2查看日志等命令;PM2进行负载均衡;PM…

Python心经(4)

这节记录一些内置模块的使用 目录 hashlib模块,,加密用 json模块 os模块 一个实用的案例: os模块的找文件的操作 随机生成random模块 时间相关模块 time,datetime hashlib模块,,加密用 以md5加密…

什么是Spring Cache?Spring项目如何使用?

前言 目前Spring Cloud微服务在Web项目中占据了主流地位,如果去面试关于Spring Cloud的岗位时,面试官一般都会提问你的项目是如何优化的,从哪些方面入手去优化。而缓存技术绝对是项目必不可少的,所以我们必须掌握好Java项目的缓存…