中间件
中间件的主要任务,是负责各类应用软件模块之间的通信以及对系统资源的调度。
进程间通信的机制(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