当前位置: 首页 > news >正文

车载以太网之要火系列 - 番外篇5:DDS学完回头看,入门容易精通难

五十多篇DDS,从Topic到QoS,从RTPS报文到发现阶段,从发布订阅到与SOME/IP分工,一路写下来,终于到了可以“回头看”的时候。

学DDS之前,老是听人说“DDS是自动驾驶的标配”“DDS比SOME/IP强大”“DDS有QoS,SOME/IP没有”……听多了,心里痒痒的,觉得这东西一定很厉害。

现在学完了,不敢说精通,但至少——它是什么,能干什么,怎么干,心里有底了。

这种感觉,比光听别人说强太多了。

一、如果只用一句话介绍DDS

DDS = 数据分发服务 = 让一个数据同时发给多个接收方,还能按需配置服务质量。

传统通信是你问他答(SOME/IP),DDS是我发你收。

摄像头拍到的图像,不需要等域控来问,直接往Topic里扔,谁订阅谁收。域控收了做感知,座舱收了做显示,记录仪收了做保存——一个数据,三个用途,摄像头只发一次。

这就是DDS最核心的价值。

二、学完DDS,我最想说的三件事

第一,DDS的“自动发现”不是魔法。

以前听人讲DDS,总说“自动发现”“自动匹配”,听起来很玄乎。学完之后才知道,就是SPDP广播“我上线了”,SEDP广播“我要发什么”“我要收什么”,本地一对比,暗号对上了就自动连。

不是魔法,是提前约定好的暗号。

第二,QoS是DDS的灵魂,但不是万能的。

刹车指令配RELIABLE+HIGH+1ms,摄像头图像配BEST_EFFORT+NORMAL+100ms。QoS搞错了,轻则性能差,重则根本连不上。

但QoS不是万能的。它只能在DDS协议栈的能力范围内优化,网络带宽不够、硬件性能不足,QoS也救不了。

第三,DDS和SOME/IP不是竞争对手。

以前以为DDS要干掉SOME/IP,学完才知道,它们各管一摊。自动驾驶大数据用DDS,车身控制RPC用SOME/IP。一个域控制器同时跑DDS和SOME/IP,不打架,不冲突。

不是谁取代谁,是谁更适合什么。

三、那些学的时候“迷迷糊糊”,现在“有点明白”的地方

关于Topic

以前觉得Topic就是“话题”,很抽象。现在理解就是“数据的名字”。摄像头图像叫/camera/front,刹车指令叫/brake/cmd。名字定好了,发和收对得上就行。

关于RTPS报文

以前看到52 54 50 53(RTP S)就觉得头疼。现在看到,知道“哦,这是DDS的报文”,然后看里面是DATA还是Heartbeat还是AckNack。

关于发现阶段

以前觉得“自动发现”很智能。现在知道,就是SPDP→SEDP→匹配→单播。四步走完,连接建立。不智能,但可靠。

关于QoS

以前觉得QoS是“高级配置”。现在知道,就是告诉DDS“这个数据重要,那个数据可以随便”。刹车指令不能丢,摄像头图像丢了就丢了。

关于与SOME/IP的分工

以前觉得DDS和SOME/IP是竞争对手。现在知道,它们各管一摊,甚至可以同时跑在一个ECU上。

四、学完之后,我不得不承认的几个事实

DDS不是银弹,解决不了所有问题。配置复杂,资源消耗大,QoS不匹配就连不上。但它解决的问题——大数据分发、一对多通信、服务质量保证——是SOME/IP解决不了的。

DDS的报文比SOME/IP复杂得多,但复杂有复杂的道理。SOME/IP一个RPC调用,12字节头部就够了。DDS要传图像,需要分片、重传、确认。

学了DDS,不代表SOME/IP就没用了。车身控制还是SOME/IP顺手,自动驾驶才需要DDS。

五、下一步:TSN(时间敏感网络)

DDS学完了,下一步准备研究TSN

如果说DDS解决了“数据怎么分发给多个人”的问题,那TSN要解决的是“数据怎么准时到达”的问题。

刹车指令1ms内不到,车可能就撞了。摄像头图像100ms内不到,自动驾驶反应就慢了。普通以太网是“尽力而为”,不保证时间;TSN通过时间同步、流量整形、带宽预留,给关键数据开专用通道

DDS + TSN,一个管分发,一个管准时——可能是自动驾驶通信的“黄金搭档”。

TSN的内容大概能写多少篇,现在还没想好。但估计不会少于DDS的篇幅。老规矩,一边学一边写,不赶进度,不给自己太大压力。

写在最后

从第50篇到第61篇,DDS系列写完了。

不敢说精通,只能说——入门了,心里有底了。

技术这个东西,学一遍是不够的。过段时间回头看,肯定又有新的理解。但至少,我不再是那个只听过DDS、说不出所以然的门外汉了。

学完DoIP、UDS、SOME/IP、DDS,车载以太网的几大块算是有了个框架。虽然每块都还有很多细节没摸透,但下一步的方向已经清楚了——TSN,让数据准时到达。

这篇番外,不是技术笔记,是一路学过来的真实感受。

如果你也在学DDS,学得有点迷糊,不妨停下来,回头看看。有些东西,不是一遍能搞定的。

温故而知新,可以为师矣,爬着爬着也学就成大咖了,嘿嘿。

打完收工,886。

http://www.jsqmd.com/news/947015/

相关文章:

  • Agentic AI自主智能体技术深度研究
  • 光伏电池片裂纹检测MATLAB工程包:含SVM模型、40组标注.mat图像与完整处理流程
  • 别再只玩ChatGPT了!手把手教你用AutoGen搭建你的第一个AI Agent(附完整代码)
  • 如何做微信投票链接,云帆投票小程序快速搭建教程 - 投票小程序
  • AI核心知识——蒸馏
  • ssm游戏美术外包管理信息系统(10152)
  • 别再只盯着M.2了!老设备升级4G上网,用MiniPCIe接口的4G模块真香(附AM400P实测)
  • 告别密码地狱:用Keycloak 18分钟搞定企业级单点登录与权限管理(Spring Boot实战)
  • 如何用PDFMathTranslate在30分钟内完成学术论文的精准翻译
  • OpenClaw ACPX 配置实战:打通 OpenCode 调用的上下文绑定关键路径
  • M2.7工程化落地:面向研发工程师的AI工作流闭环模型
  • 别再死磕OLED了!用STM32F103驱动HMI串口屏,5分钟搞定交互界面(附完整代码)
  • 手把手教你用Arduino UNO给ATmega168P烧录Bootloader(附USBasp备用方案)
  • EduCoder平台自动化运维小记:多账号签到与答案同步的实践与思考
  • 实战演练:基于快马AI构建高可靠kafka订单事件驱动微服务系统
  • CVE-2026-42945漏洞分析及复现
  • 告别串口打印:用STM32 HAL库+DS18B20做个OLED屏显温度计(Keil工程开源)
  • 树莓派新手必看:用手机热点替代电脑,户外也能玩转(附VNC配置)
  • 踩坑实录:poi-tl处理Word模板分页与图片时,我遇到的3个坑及解决方案
  • AI编程祛魅:从功能幻觉到零故障工作流的实战指南
  • 【Azure App Service】应用服务中的SNAT (Source Network Address Translation 源网络地址转化)
  • 【深入理解计算机系统】第一章(计算机系统漫游)笔记
  • 彻底理清 B+ 树页分裂与页合并对大批量写入 MySQL分库分表与分区表的设计抉择 数据时吞吐量的影响路径
  • ssm员工在线知识培训考试平台(10153)
  • 从Copilot到Agent:我的团队如何用ChatDev在3天内“自动化”了一个内部工具
  • AD软件大电流布线必备:一招把Top层铺铜“变成”阻焊开窗,告别焊盘锡量不足的烦恼
  • Python 爬虫进阶技巧:元数据 meta 标签提取辅助爬虫页面判重
  • 保姆级教程:在嵌入式Linux上实战I3C SDR模式的热加入与带内中断(附代码避坑)
  • 拆解Botsch经典算法:手写半边结构,一步步实现Isotropic Remeshing(附C++代码)
  • 深入GL3224固件升级工具:如何手动添加Flash芯片支持(以Winbond W25Q16为例)