1.2 为什么是 DORA:和 ROS2 比一比
上一节说到,DORA 是一套"数据流中间件"。其实它并不是第一个——机器人领域最有名的老前辈叫 ROS / ROS2。这一节我们把它俩放一起比一比,你就明白 DORA 好在哪了。
本节不假设你懂 ROS2,也不是要贬低它。ROS2 是了不起的老牌框架。我们只是借它当"参照物",帮你更快理解 DORA 为什么这样设计。
一个贯穿全节的画面:黑板 vs 传纸条
- DORA 的教室:墙上有一块大黑板,谁想让别人知道什么,直接写上去;需要的人抬头看一眼就行。
- ROS2 的教室:没有黑板,同学之间只能传纸条——写好、折起来、递过去、对方拆开、誊抄到自己本子上,才能用。
就这么一个差别,几乎解释了后面所有的不同。
核心三问
问题一:快不快?
我们把"传一条消息"这件事拆开看:
ROS2(传纸条)要 8 步:
- 把内容写在纸条上
- 把纸条折好
- 递给对方
- 对方接过纸条
- 拆开纸条
- 读一遍
- 誊抄到自己的本子上
- 要回信?再折、再传、再拆……
DORA(黑板)只要 2 步:
- 在黑板上写下来
- 需要的人抬头看一眼
那"折、拆、誊抄"在软件里叫什么?叫 序列化 / 反序列化——把数据打包再拆包。数据越大(比如一整张图片),这套折腾就越费时。DORA 直接省掉了它。
官方数据:同机传递下,DORA 延迟约 500 微秒,而 ROS2 约 1–10 毫秒;在 Python 场景下 DORA 可比 ROS2 快 10–17 倍。(数据来自官方,随版本可能变化。)
问题二:好不好学?
- DORA:用一份 YAML 文件,像写"值日表"一样声明"谁写黑板、谁看黑板",改完直接
dora run就跑起来。 - ROS2:往往需要先"编译生成"一堆代码、配置较多,改一次要折腾一轮。
对零基础的我们来说,DORA 的"值日表"方式显然更友好。
问题三:懂不懂 AI?
- DORA:天生亲和 Python 和 AI 模型,黑板上用统一格式写数据,视觉、语音、大模型都能直接接上。
- ROS2:更偏传统机器人,接现代 AI 模型时常常要额外费功夫。
一张总表看全貌
诚实地说一句
ROS2 并不"差"。打个比方:
- ROS2 像一所运营多年的老牌名校——资源多、什么都有、规矩也多;
- DORA 像一所新式学校——轻快、专注 AI、上手快。
选谁要看场景。而且好消息是:你在本课学会的"黑板思想",日后理解 ROS2 也会更容易;DORA 还提供了和 ROS2 互通的桥接,两者能协作。
进阶延伸(可跳过)
ROS2 底层用 DDS 中间件,消息按 CDR 格式序列化,并有一套 QoS(服务质量)策略来权衡可靠性与延迟。这些机制很强大,但也带来了配置复杂、在普通网络下偶发多播问题等成本。零基础阶段完全不必深究,知道"它更重、更全"即可。
打个比方:DDS 就像一辆运钞车——装箱、加密、派车、押运、签收,一整套流程。押运真正贵重的东西时它很值;可要只是"送一杯咖啡"(机器人本地那些高频、普通的数据),就显得又重又慢了。DORA 更像把咖啡直接放到公共吧台(共享内存 + 零拷贝),谁要谁拿,省掉了装箱押运。
需要说明的是:运钞车并不"差",只是用在了过轻的场景。当你真的需要强安全、强可靠、跨厂商互通时,DDS 那套"押运装备"反而是优势。
动手练习(思考题)
用你自己的话,向一个完全不懂技术的朋友解释:"为什么在黑板上写字,比互相传纸条更快?" 试着不用任何专业词。
参考答案
因为传纸条要一遍遍地写、折、递、拆、抄,人越多、内容越多就越慢;而黑板只要写一次,所有人抬头就能同时看到,不用重复抄写。DORA 就是给机器人配了这样一块"大家都看得见的黑板"。
小结
- 一句话记住:DORA = 给机器人配了一块共享黑板;ROS2 更像互相传纸条。
- DORA 的优势:更快(省去打包拆包)、更简单(YAML + 一条命令)、更懂 AI(原生亲和 Python 与模型)。
- ROS2 更成熟、生态更大;两者定位不同,可按场景选择。
下一节,我们正式认识黑板教室里的几位"主角"——节点、数据流、共享内存和 Arrow。