近期,在汽车通信圈讨论较火的话题中,DDS绝对排得上号。而对于面向服务的通信协议,DDS与SOME/IP各自的优劣?DDS能否替换SOME/IP等问题也随之而来。孰优孰劣,今天暂且不探讨这些问题,我们先来了解下什么是DDS?

DDS简介

DDS定义:Data Distribution Service 数据分发服务,是新一代分布式实时通信中间件协议,采用发布/订阅体系架构,强调以数据为中心,提供丰富的QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

DDS最早应用在美国海军系统,用于解决军舰系统复杂网络环境中大量软件升级的兼容性问题。在汽车领域,2018年Adaptive AUTOSAR引用了DDS,作为可选择的通信方式之一。目前国内已有主机厂开始研究,主要针对自动驾驶相关需求,工具方面,在汽车电子领域常用的工具厂商也在开发这部分内容。不仅是汽车领域引入DDS,在机器人开发领域,最新升级的ROS2也引入了DDS中间件来传递信息。

AP Development Workflow

(图片来源AUTOSAR_EXP_Introduction)

DDS规范

DDS规范是由OMG(Object Management Group)对象管理组织发布的。OMG组织是一个国际性、开放性、非盈利性技术标准联盟,由供应商、终端用户、学术机构、政府机构推动,已经有31年的历史;OMG工作组针对各种技术和行业制定企业集成标准,并开发可为数千个垂直行业提供现实价值的技术标准。

OMG制定的标准

(图片来源OMG官网:https://www.omg.org/index.htm)

DDS的相关标准包括核心协议(DDSI-RTPS,DDS-XTypes,DDS-Security,Interface Definition Language (IDL)…),API(DDS C++ API,DDS Java API),拓展协议(DDS-RPC,DDS-XML…)等13份协议集合。

在分布式系统中,DDS位于操作系统和应用程序之间,支持多种编程语言以及多种底层协议。这便是我们常说的跨平台。

DDS中间件

(图片来源DDS-The Proven Data Connectivity Standard for IoT)

DDS发布订阅模型DCPS

讲具体协议之前,我们先熟悉下几个专有名词:

  • Domain:代表一个通信平面,由Domain ID唯一标识,只有在同一个域内的通信实体才可以通信;如果考虑车内通信,可以只划分1个Domain,也可以按照交互规则或其他规则,定义多个Domain;

  • Domain Participant:代表域内通信的应用程序的本地成员身份,简单来说,就是说明同一数据域内的通信成员;

  • Topic:是数据的抽象概念,由TopicName标识,关联相应数据的数据类型(DataType),如果把车内所涉及的所有Topic集合在一起,这样就形成一个虚拟的全局数据空间“Global Data Space”,进一步弱化了节点的概念,所以域参与者已经不是节点的概念了;

  • DataWriter:数据写入者,类似缓存,把需要发布的主题数据从应用层写入到DataWriter中;

  • DataReader:数据读取者,同样可以理解为一种缓存,从订阅者得到主题数据,随之传给应用层;

  • Publisher:发布者,发布主题数据,至少与1个DataWriter关联,通过调用DataWriter的相关函数将数据发出去;

  • Subscriber:订阅者,订阅主题数据,至少与1个DataReader关联。当数据到达时,应用程序可能忙于执行其他操作或应用程序只是等待该消息时,这样就会存在两种情况,同步访问和异步通知。

接下来,我们看一下DDS的通信模型。

根据前面介绍,我们清楚了DDS是一个以数据为中心的中间件协议和API标准,意为用户只关心自己想要的数据,数据通过Topic进行标识,这样发布者根据主题发布数据,订阅者根据自己感兴趣的主题订阅数据。这便是DDS的核心,以数据为中心的发布-订阅模型DCPS(Data-Centric Publish-Subscribe)

如果是熟悉的以服务为中心的SOME/IP中间件,我们需要做的是把数据打包成服务,之后服务的消费方向服务提供方通过SD订阅服务中的事件组,当数据发生变化后,相应的事件报文便会发到总线上。相比之下,DDS确实很直接,直接与数据沟通。

QoS服务质量

DDS的另一重要的知识点是支持QoS(Quality of Service),目前共支持22种QoS策略,每种策略都可以应用在不同的角色上,而针对同一角色,可单独使用一种QoS,也可以组合使用多种QoS策略。试想一下,QoS应该如何应用呢?具体能起到什么作用?

RELIABILITY (可靠性)

参数定义:

Kind = RELIABLE ,如果当网络发生错误, DataReader可能无法收到DataWriter的样本数据时,会对样本数据进行重发,保证DataReader能够收到数据;

Kind = BEST_EFFORT,如果当网络发生错误, DataWriter不会重新发送丢失的样本数据,这样,无法保证DataReader能够收到数据;

如果在DataWriter上应用此QoS策略,设置Kind = RELIABLE,这样保证了DataWriter发布的数据都能被DataReader收到。

LIFESPAN (生命周期)

参数定义:

该QoS的作用是避免交付“过期”的数据,参数为时间duration,默认为无穷大,表示数据样本永远不会失效;如果duration设置为有限数值,同时发送方和接收方的时钟同步,通过在发送端的源时间戳添加定义的duration字段,这样接收方根据时间戳信息计算出数据是否已失效,如果失效了,可以直接删除数据。

以上是对DDS的介绍。总结起来,DDS更针对的是数据本身,去建立各种机制。DDS目前已经广泛应用于国防、民航、工业控制等领域,成为分布式实时系统中数据发布/订阅的标准解决方案。想了解更多关于DDS的内容,请持续关注我们呦!

【自动驾驶】4.分布式实时通信——DDS技术相关推荐

  1. 智能汽车之分布式实时通信DDS技术基本概念介绍

    在车载领域使用的通信协议中,DDS绝对排的上号. 对于面向服务的通信协议中,DDS与SOME/IP各自的优劣. DDS能否替换SOME/IP等问题也随之而来.今天来介绍下什么是DDS? DDS DDS ...

  2. 自动驾驶与汽车安全电子技术

    自动驾驶与汽车安全电子技术 Veoneer,Inc.是汽车安全电子产品设计.开发.销售和制造领域的全球领导者25,专注于创新.质量和卓越制造.维奥尼尔作为奥托立夫(以下简称"电子" ...

  3. 自动驾驶行业内时间表和技术解析

    自动驾驶行业内时间表和技术解析 行业内的时间表 图1. 行业内的时间表 自动驾驶和ADAS技术解析 图2. 自动驾驶和ADAS技术解析

  4. 自动驾驶汽车硬件与软件技术介绍

    来源:知乎 概要:本文详细介绍了自动驾驶汽车的硬件和软件,以及所需要做的准备工作,每个研发者或者准备投身于无人驾驶领域的人都应该好好看一下. 全球有数不清的公司在忙着研发自动驾驶汽车,他们的产品也千奇 ...

  5. 2020自动驾驶年度盘点:L4技术降维应用,自动驾驶由布道走向赶考

    来源 | 搜狐汽车.北京市高级别自动驾驶示范区 推荐 | 焉知自动驾驶 摘要: 1. 政策持续鼓励自动驾驶产业发展,各地积极配合相关测试与应用落地,2025年将实现有条件自动驾驶规模化生产: 2. R ...

  6. 自动驾驶安全及相关的技术白皮书和安全标准

    自动驾驶安全及相关的技术白皮书和安全标准  汽车和自动驾驶技术领域的 11 家行业领导者宣布发布"自动驾驶安全第一"或 SaFAD(Safety First For Automat ...

  7. 索尼将开发应用于机器人和自动驾驶汽车的新型传感器技术

    据外媒报道,索尼方面宣布称,截至3月份的营业利~润预计同比增长近一倍,主要由图像传感器业务组成的芯片部门则成为了集团最大的增长动力. 近年来,索尼在消费电子产品领域连年亏损,然而图像传感器领域销售势头 ...

  8. 百度语音+自动驾驶感知+深度学习平台技术解析

    HIEV快讯(文/戒僧)本文将解析三部分技术内容,出自百度2023 Create大会-技术开放日: •百度如何用"手机全双工语音交互"改善使用导航应用的体验 •如何用"上 ...

  9. 解析 | 自动驾驶视觉定位与导航技术的研究与应用

    视觉定位与导航技术是智能体具备的基础能力之一,随着无人驾驶的发展,基于低成本摄像头及人工智能算法的视觉定位与导航技术成为了无人驾驶的主流技术路线之一.在传统工作方式中,视觉定位与导航技术通常采用SLA ...

最新文章

  1. Jenkins构建Maven聚合工程,指定构建子模块
  2. (C++)1010 一元多项式求导 --需二刷
  3. Linux之vim中翻页的命令
  4. 漫画:腾讯面试题(盛最多水的容器)
  5. Apache 2,4版本 编译与安装 RedHat enterprises 6.2
  6. 唯一标识 微信小程序_微信小程序获取用户唯一标识(不用授权)
  7. 【干货】同步与互斥的失败例子
  8. 为什么 Facebook 活得春风得意,而人人网却半死不活?
  9. 人工智能-baidu-aip语音识别(语音转文字)
  10. CodeForces 27A Next Test(简单hash)
  11. 好用的论文翻译工具集锦
  12. MTK Android 修改权限读取IMEI
  13. Lync客户端更新联系人通讯簿
  14. 2021-2027全球与中国乳胶机械稳定性测试仪市场现状及未来发展趋势
  15. django_models_外键应用
  16. sqlserver之远程访问配置
  17. 实数截断式保留两位小数
  18. Nvidia Jetson Agx Xavier 在Ros中调用GMSL2相机
  19. C#无法修改“List<T>.this[int]“的返回值,因为它不是变量
  20. 谷歌AI助NASA发现第二个太阳系;传快手完成新一轮融资;摩拜起诉小广告公司丨价值早报

热门文章

  1. 自底向上构建知识图谱全过程
  2. 不想参加无聊的团队分享, 我们这样玩
  3. spring控制并发数的工具类ConcurrencyThrottleSupport和ConcurrencyThrottleInterceptor
  4. 深入redis内部之redis启动过程之二
  5. kill -3 获取threaddump信息---转载
  6. 剑桥加密资产研究的主要发现 金评媒JPM 09-19 00:00 金评媒(https://www.jpm.cn)编者按:研究发现,全球有 1876 人在加密资产行业中工作。其中最多的是在亚太地区工作,
  7. 288家众筹平台正常运营 43家停运或倒闭
  8. Java8 - 避免代码阻塞的骚操作
  9. 白话Elasticsearch20-深度探秘搜索技术之使用rescoring机制优化近似匹配搜索的性能
  10. Spring-基于Java类的配置