首页 > 其他分享 >中间件_ROS2和CyberRT

中间件_ROS2和CyberRT

时间:2024-04-03 14:26:05浏览次数:31  
标签:协议 AUTOSAR DDS CyberRT 中间件 通信 基于 ROS2

中间件

 中间件的主要任务,是负责各类应用软件模块之间的通信以及对系统资源的调度。
  进程间通信的机制(IPC:inter-process communiction)
  内容都是与具体应用逻辑无关的,包括数据通信、通信安全、系统资源调度等
1.Ros
2.iceoryx「冰羚」
   RouDi 的名称由来是’‘Rou’‘ting 和’‘Di’'scovery,其是冰羚系统的核心,
   一种基于 「 零拷贝 」 (zero-copy)和 「 共享内存 」 (shared memory)技术来优化 
   「 进程间通信 」 (IPC)的 「中间件」(Middleware)
 3.Cyber RT 是百度Apollo推出的代替ROS的消息中间件

 4.AUTOSAR(又分为AUTOSAR CP和AUTOSAR AP)	
     AUTOSAR CP基于C语言,而AUTOSAR AP基于C++语言
	 AUTOSAR CP 采用的是FOA架构(function-oriented architecture),而AUTOSAR AP采用的则是SOA架构(service-oriented architecture);

通信协议

应用层协议

IT界和物联网(IoT)领域的协议
 应用层负责应用进程间的通信,提供各种网络应用服务。它利用下层TCP或UDP实现传输功能,同时实现特定应用领域的通信协议
 DDS也使用了发布-订阅模式,但是没有中央代理,同时使用TCP和UDP作为传输协议
 SOME/IP与DDS类似,利用单播和组播通信,并通常基于UDP。
 MQTT(Message Queue Telemetry Transport):MQTT是一种轻量级的、基于发布-订阅模型的通信协议和中间件
   一种基于TCP(Transmission Control Protocol)的协议。它是一种轻量级的、发布-订阅模式的消息传输协议,广泛应用于物联网(IoT)和传感器网络中
 WebSocket:用于浏览器和服务器全双工通信,基于TCP 
 HTTP(超文本传输协议): 用于Web应用,基于TCP协议工作	

传输层协议

传输层,除了TCP(传输控制协议)和UDP(用户数据报协议)
     SCTP(流控制传输协议) DCCP(数据报内容连接协议) RUDP(可靠的用户数据报协议)
	 
专用传输协议,如RTP(实时传输协议)、RTCP(实时控制传输协议)等,用在特定的应用场景中。

面向信号的CAN CAN(Controller Area Network


发布订阅(Publish/Subscribe,P/S)模型是专为简化一对多的数据传输要求而设计的
 RTPS(Real-Time Publish-Subscribe)是一种基于发布-订阅模式的实时通信协议,
       它是一种可靠的、低延迟的、可扩展的、可传输多种数据类型的通信协议	

具体介绍

DDS Data Distribution Service 数据分发服务
   DDS是由对象管理组织(Object Manage- ment Group, OMG)制定的一种面向服务的通信中间件协议。
   采用发布订阅模型,强调以数据为中心,提供多种服务质量策略(Quality of Service, QoS),
   以保障数据实时、高效、灵活地分发,可满足各种分布式实时通信的应用需求[3-5]。
   提供了发布-订阅模型,允许分布式系统中的实体以实时和可靠的方式共享数据。
   而在DDS生态系统中,Fast DDS和OpenDDS是两个备受关注的开源实现
   ROS 2和Cyber RT的底层都使用了开源的DDS,将DDS作为最重要的通信机制
  ROS 2 的大多数版本使用 Fast DDS 作为中间件
  CyberRT中的DDS

DDS基于实时发布订阅协议(Real-Time Publish-Subscribe, RTPS)可以有多种实现	
     OpenDDS是一个基于C++的DDS实现
      DDS 是一个 DCPS (Data-Centric Publish Subscribe) 模型,
     其中包括Participant, Publisher, Subscriber, DataWriter, DataReader, Topic等概念
  
SOME/IP主要采用远程过程调用(Remote Procedure Call,RPC)的通信方式  

闭源的通信中间件主要有Vector公司的SOME/IP、RTI公司的DDS等;
     RTI公司 DDS产品为为RTI Connext DDS
开源的通信中间件主要有OPEN DDS、FAST DDS、Cyclone DDS等
    Apollo提供的Cyber RT

现状

  AUTOSAR产品
  Xaver、Orin等面向自动驾驶的SOC芯片上也都预留了DDS接口

CyberRT

 Cyber RT删除了master机制,用自动发现机制代替,这个通信组网机制和汽车网络CAN完全一致。
         DAG拓扑 通过有向无环图(DAG, Directed Acyclic Graph)配置任务间的逻辑关系

安装和使用

1.自定义镜像
 Apollo安装需要如下操作:
   下载源码
   执行脚本启动docker环境
   进入docker容器
   构建
2.使用官方镜像


3.CyberRT Standalone
    将CyberRT从Apollo拆分,使用Cmake编译, 不依赖Apollo独立运行

构建工具

 大型C++工程的构建技术:  CMake vs Bazel
   小型项目编译手写Makefile
   CMake 通过执行CMakeLists生成makefile/ninja等,构建C++项目
   采用client/server运行模式,为云编译而生。
       Bazel工具将编译过程分三个阶段:Load Phase/Analysis Phase/Execution phase。
       研发人员实现workspace/build/.bzl三种文件,Bazel执行这些文件生成action graph,执行action来构建项目

标签:协议,AUTOSAR,DDS,CyberRT,中间件,通信,基于,ROS2
From: https://www.cnblogs.com/ytwang/p/18112592

相关文章

  • Windows如何优雅的运行ROS2/linux
    Windows如何优雅的运行ROS2/linux前言在ROS/ROS2开发过程中,大家普遍使用到的分布式开发方法都是基于虚拟机/双系统进行,本质上是希望基于Ubuntu良好的生态环境进行,但是两种方式各有各自的好处,也有各自的弊端,例如虚拟机很大而且并不能运行GPU;又比如双系统会导致个人数据碎片化(......
  • postgresql主从部署、pgpool代理中间件部署
    目录一、安装postgresql准备工作1.配置节点间postgres普通用户免密登录2.执行初始化脚本二、主从部署1.master执行2.slave执行三、查看主从数据库状态1.master执行2.slave执行五、配置pgpool中间件1.编译安装pgpool2.配置准备3.启动服务六、pgsql定时备份和监控shell脚本1.pgsql定......
  • 中间件之Mycat
    一、概念介绍Mycat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在Mycat不负责存储数据,只是逻辑上多数据进行分处理,实际存储数据的为后端数据库。Mycat拦截了用户发送过来的SQL语句,对SQL......
  • C#中的消息中间件(RabbitMQ 和 Redis)
    消息中间件是一种用于在分布式系统中进行异步通信的技术,常用于解耦应用程序的不同组件、实现消息传递、提高系统的可伸缩性和可靠性等。以下是关于消息中间件的知识点以及可能会在面试中被问到的一些问题和答案:消息中间件的知识点:消息队列(MessageQueue):消息中间件通常基于消......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-5 同步异步删除zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12721 1重点关注1.1本节内容javaapi客户端删除节点,包含同步修改和异步修改,只做了异步,同步不通用(因为没有回调函数,不知道是否删除成功)也可以参照视频看下 1.2javaapi删除节点......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-4 修改zk节点数据
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12720 1重点关注1.1本节内容javaapi客户端修改节点,只做了同步修改,异步修改方式如1.3,可以参考6-3异步新增 1.2javaapi修改节点同步修改/***参数:......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-3 同步异步创建zk节点
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12719 1重点关注1.1本节内容javaapi客户端新增临时节点和永久节点 1.2javaapi新增节点同步调用/***同步或者异步创建节点,都不支持子节点的递归......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-2 zk会话重连机制
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12718 1重点关注1.1本节内容验证了使用sessionid和sessionPassword重连的session和之前的session一致,详见3.1   2课程内容2.1扩展之:echodump|nclocalhost2181......
  • 中间件 ZK分布式专题与Dubbo微服务入门 6-1 建立客户端与zk服务端的连接
    0课程地址https://coding.imooc.com/lesson/201.html#mid=12717 1重点关注1.1本节内容使用STS开发工具作为客户端连接zk服务端,详见3.1  1.2连接方式参数说明如下段zk原生class标注:connectString:连接zk服务端的ip和端口(比如案例......
  • 中间件和Auth模块
    中间件1.Django中间件介绍【1】什么是Django中间件Django中间件是一个轻量级、可重用的组件,用于处理Django请求和响应的过程。它提供了对请求和响应进行全局处理的机制,可以在请求达到视图之前进行预处理或在响应返回给客户端之前进行后处理。中间件是按照顺序依次执行的,每......