• ros1 和 ros2的区别


     

    0.概述

    其实是为了解决ros1中的一些问题
    主要是从下面几个文章整过来

    1.基本概念

    基本概念:

    • ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。
    • ROS2系统的核心部分是ROS网络(ROS Graph)。
    • ROS网络是指在ROS系统中不同的节点间相互通信的连接关系。
    • ROS Graph这里翻译成了ROS网络,因为我觉得Graph更加抽象,而网络的概念更容易帮助理解其内涵。

    ROS网络(ROS Graph)概念简介:

    • 节点(Nodes): 一个节点是一个利用ROS系统和其他节点通信的实体
    • 消息(Messages): ROS中在订阅和发布主题时所用到的数据结构
    • 主题(Topics): 节点可以发布信息到一个主题,同样也可订阅主题来接收消息
    • 发现(Discovery): 一个自动运行的进程,通过这个进程不同的节点相互发现,建立连接

    节点(Nodes)

    • 一个节点就是一个在ROS网络中的参与者。
    • ROS节点通过ROS客户端程序库(ROS client library)来和其他节点进行通信。
    • 节点可以发布或者订阅主题 节点也可以提供ROS服务(Service)。
    • 节点有很多可以配置的相关参数。
    • 节点间的连接时通过一个分布式发现进程来建立的(即上面所说的发现)。
    • 不同的节点可以在同一个进程里面,也可以在不同的进程里面,甚至可以在不同的机器上。

    客户端程序库

    • ROS客户端程序库可以让不同的语言编写的节点进行通信。

    • 在不同的编程语言中都有对应的ROS客户端程序库(RCL),这个程序库实现了ROS的基本API。

    • 这样就确保了不同的编程语言的客户端更加容易编写,也保证了其行为更加一致。

    • 下面的客户端程序库是由ROS2团队维护的

      • rclcpp = C++ 客户端程序库
      • rclpy = Python 客户端程序库
    • 另外其他客户端程序也已经有ROS社区开发出来。 可以看[[ROS 客户端程序库]]来了解详细信息

    发现

    • 节点之间的互相发现是通过ROS2底层的中间件实现的。

    • 过程总结如下

      • 当一个节点启动后, 它会向其他拥有相同ROS域名的节点进行广播,说明它已经上线。
      • ROS域名(ROS domain, 可以通过设置ROS_DOMAIN_ID环境变量来设置)
      • 其他节点在收到广播后返回自己的相关信息,这样节点间的连接就可以建立了,之后就可以通信了。
      • 节点会定时广播它的信息,这样即使它已经错过了最初的发现过程,它也可以和新上线的节点进行连接。
      • 节点在下线前它也会广播其他节点自己要下线了。
      • 节点只会和具有相兼容的[服务质量]设置的节点进行通信。

    2. ros2 的目标

    在这里插入图片描述

    3. ros2 的架构

    ros1 和 ros2
    ros2 的api架构
    在这里插入图片描述

    4. ros1 和ros2的通信模型

    ros1:

    • talker 注册
    • listener 注册
    • ROS Master 进行信息匹配
    • listener 发送链接请求
    • talker 确认请求
    • 建立连接
    • talker 给 listener 发数据

    在这里插入图片描述

    ROS2:

    1. 参与者(Domain
      Participant):一个参与者Participant就是一个容器,对应于一个使用DDS的用户,任何DDS的用户都必须通过Participant来访问全局数据空间。

    2. 发布者(Publisher):数据发布的执行者,支持多种数据类型的发布,可以与多个数据写入器(DataWriter)相联,发布一种或多种主题(Topic)的消息。

    3. 订阅者(Subscriber):数据订阅的执行者,支持多种数据类型的订阅,可以与多个数据读取器(DataReader)相联,订阅一种或多种主题(Topic)的消息。

    4. 数据写入器(DataWriter):应用向发布者更新数据的对象,每个数据写入器对应一个特定的Topic,类似于ROS1中的一个消息发布者。

    5. 数据读取器(DataReader):应用从订阅者读取数据的对象,每个数据读取器对应一个特定的Topic,类似于ROS1中的一个消息订阅者。

    6. 主题(Topic):这个和ROS1中的Topic概念一致,一个Topic包含一个名称和一种数据结构。

    7. QoS Policy:Quality of Service,质量服务原则,这个模块在ROS1中可从没见过,看名称就猜测应该是负责数据质量的。QoS是DDS中非常重要的一环,控制了各方面与底层的通讯机制,主要从时间限制、可靠性、持续性、历史记录几个方面,满足用户针对不同场景的数据应用需求
      在这里插入图片描述

    ros2 17年就发布了,好好学习

     
     
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/weixin_36628778/article/details/104751581
  • 相关阅读:
    【系统安全性】一、背景、原理与解决思路
    Spring Boot使用阿里云证书启用HTTPS
    图片上传前先在本地预览
    gulp的使用以及Gulp新手入门教程
    bootstrap datetimepicker、bootstrap datepicker日期组件对范围的简单封装
    作为程序员,你关注哪些国外 IT 网站?
    sql server 2014安装后用sa登录问题
    win server2012r2上发布网站常见错误 "HTTP 错误 500.19 请求的页面的相关配置数据无效" 解决办法
    dapper使用时性能优化
    解决Web部署 svg/woff/woff2字体 404错误
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/15786986.html
Copyright © 2020-2023  润新知