• 290查看
  • 0回复

[软件工程] DDS通讯机制研究

[复制链接]


该用户从未签到

发表于 2-3-2024 14:19:58 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


DDS是一种分布式数据架构,旨在实现实时数据的可靠、高效、安全的传输。它采用了发布/订阅模型,允许各个系统组件之间以分布式的方式进行通信。在自动驾驶中,DDS的出色表现让它成为了理想的通信解决方案。

1.基于DDS的Ros2

很多自动驾驶公司,在前期研发过程中,使用的都是ROS作为中间件,因为其生态比较完善,具备很多现成的工具和包。比如用于可视化的Rviz和用于播包的Plotjuggler等等,能够较快的推进研发进度,使项目跑出demo效果。

在ROS2中,基于DDS(Data Distribution Service)的通信架构代替了ROS1中基于master节点的通信模式,这为系统带来了更高的容错性和灵活性。DDS作为一种用于实时和嵌入式系统发布-订阅式通信的行业标准,采用了RTSP(Real-Time Publish-Subscribe)协议,与ROS1的中间层通信模式相似,但无需借助master节点来实现节点间通信。

在ROS2中,DDS的引入为系统提供了以下优势:
    实时性和可靠性:DDS以其出色的实时性和可靠性而闻名。在自动驾驶项目等对通信延迟和数据传输可靠性要求极高的领域,DDS通过RTSP协议确保了高效的数据传输,使得系统能够实时响应和处理海量的实时数据。容错性:ROS2中使用DDS作为通信中间层,无需依赖master节点,使系统更加容错。即使某个节点失效,其他节点仍然能够进行通信,提高了整个系统的稳定性。延用性:ROS Msg消息定义格式简单,保留消息的格式和内存表示具有很大的价值。ROS2保留ROS1风格的消息定义和内存表示,并将这些文件转换为DDS文件。ROS2 API将专门使用内存中的ROS1消息对象,并在发布之前将其转换为DDS对象。
    DDS通讯机制研究w1.jpg


2.DDS通讯机制

笔者之前看了很多关于通讯机制的科普文章,但总是云里雾里,理解的没有通透。在亲自接触项目到一定程度的时候,回过头去再研读一遍当初的文章,才觉得豁然开朗。下面就通过汽车做个比喻,将DDS通讯机制阐述一下,就像是讲了个故事。
    主题(Topic):想象一下主题就是一场盛大的汽车展览会。每辆车都有自己的展台,这就是主题。制造商(发布者)在展台上展示最新款车型,而车迷们(订阅者)可以选择自己感兴趣的展台,不错过任何精彩瞬间。发布者(Publisher)和订阅者(Subscriber):发布者就像是汽车制造商,他们负责把最新的汽车信息发布到展会上。而订阅者就是狂热的车迷,他们通过关注发布者的展台,第一时间获取最新鲜的汽车资讯。数据写入者(DataWriter)和数据阅读者(DataReader):数据写入者就好比汽车设计师,他们将设计图纸(数据)制作成汽车(DDS消息)。而数据阅读者就是车手,他们通过阅读设计图纸(消息),了解汽车的性能和特点。域(Domain):域就像是车展的展馆,不同的展馆展示不同类型的车辆。你要是对越野车感兴趣,就去越野车展馆。域就是为了让车迷们更有针对性地选择他们感兴趣的车型。QoS(Quality of Service):QoS就像是选购汽车时的配置选择。你想要更快的速度,就选择高速公路模式;你更注重省油,就选择经济模式。QoS就是根据你的需求,定制数据传输的“车辆配置”。服务发现(Discovery Service):发现服务就好比车展的导览图,告诉你每个展台都展示了哪些车型。当你迷路时,导览图就是你的“车展地图”。实时性和可靠性:DDS支持实时数据传输,就像车迷们在现场一样,能够第一时间感受到每台车的动态。而可靠性就是保证你看到的每辆车都是真实可靠的,不会出现虚假广告。

DDS通讯机制研究w2.jpg

3.DDS应用场景

目前DDS在自动驾驶领域得到了广泛的应用,已经有了众多的量产项目。因为DDS是面向数据的访问系统,适合多节点、大数据交互的应用场景;并且DDS的功能丰富性,能够满足复杂系统中节点间实时通信的需求,这都是自动驾驶项目所需要的。

与此不同的是,之前我们讲到的SOMEIP更适用于整车领域(比如ADCU与DHU之间的数据交互),专注于模块化设计和高度可复用性。而ADCU域内片间或片内的通讯方式则可以选择DDS。

以上纯属个人愚见,如有错漏,请不吝指正。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-12-2024 16:41 , Processed in 0.395666 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.