车载应用编程接口(onboardapi)9.10.0 是由莱茵金属(Rheinmetall)所发布的版本,该版本号标识了此套接口文档的迭代序号,厂商名称表明了开发归属。这一主页内容起始部分即呈现上述产品名、版本号与公司的对应关系,未附带额外叙述文字。
正文
onboardapi 接口库和中间件专为传感器系统与软件组件之间的无缝通信而设计。它提供标准化的数据模型,确保复杂软硬件环境中的互操作性。
该库基于 ddkit 软件开发套件构建,采用对象管理组织(OMG)的 Data Distribution Service(DDS)标准。这种以数据为中心的发布-订阅架构,为高需求应用保障了可靠、低延迟的数据交换。
借助 DDS XTypes 与 XCDR2 编码,该库实现完全向后兼容。即便数据模型演进,不同软件版本也能共存并无缝通信。
核心库以 C++ 提供,但 API 通过 Java、C# / .NET 和 Python 的封装器支持多语言集成。
入门:
- 概念:探索客户端/服务架构及底层逻辑
- 示例:
- C++
- Python
- C# / .NET
- Java
- 配置:了解如何配置该库
- 接口:浏览数据模型与所有接口
- 更新日志:掌握最新功能
许可与免责声明:

- 接口描述:EPL v2.0
- 运行库:EULA-RME-SDK-1.0
评论
讨论从最初的期待迅速转向质疑:核心分歧在于这套东西到底算不算新东西——多数人一看到底层基于 DDS 就降温,认为它只是把成熟消息协议重新包装;少数人更关心它在嵌入式实时场景下是否真能用得起来,同时还有一批人在纠结只发文档不开源、以及从示例代码里挑毛病。
认为底层是 DDS 本身就浇了冷水
- 从兴奋到失望的转折点就是发现它构建在 DDS 之上;有人直接把它类比成「导弹版 ROS2」,而 ROS2 的底层同样是 DDS,等于落回同一套生态。(较多人) > 一开始很兴奋,然后看到它是基于 DDS 的。(@j-pb)
认为这是在重新发明别的协议几十年前就有的东西
- 质疑者怀疑它大部分只是把其他协议和系统早已提供多年的标准消息原语重做了一遍,只是套上了军工场景的外壳,并非全新发明。(较多人) > 如果我对军工技术不算太无知,那这个是不是在很大程度上把别的协议几十年来就有的标准消息原语又造了一遍?(@9dev)
关注 DDS 在嵌入式实时系统上过于笨重
- 有观点指出 DDS 用在嵌入式系统上太重,很难实现得好;理想方案是既能满足实时保证、又能在无动态内存分配的条件下保持简单协议层面的可用性,同时还要能和普通非实时系统协同工作。(较多人) > DDS 的问题在于,放到嵌入式系统上显得太笨重,很难实现得好。(@alhirzel)
只公开文档却不开源,动机成谜
- 有人指出官方 GitHub 组织下并没有真正开源任何东西,只是发布了规范文档,觉得这种做法很奇怪,质疑其意义所在。(少数人) > 他们什么都没开源,只是发布了文档,很奇怪,这到底图什么?(@throw1234567891)
有价值的补充
- 有人翻 C++ 示例时发现使用 std::endl 而非换行符,指出这会强制刷新、带来不必要的性能开销,而程序结束时输出本就会刷新;还半开玩笑地猜测,是不是担心「武器把自己炸了」导致异常终止、缓冲区来不及输出。
- 有人提到军工领域已有同样基于 DDS 的 TMS(MIL-STD-3071),说明这类选型在军用系统里并不罕见,只是大家对「为什么不换个更适合嵌入式的协议」仍有共鸣。
- 社区情绪的一条玩笑:有人设想用 AI 给自家战斗服写一个 Home Assistant 插件,只允许读取数据、禁止执行动作,还要求慢速顺序调用、每次间隔一分钟——把军用设备当成比廉价玩具还脆弱的接口来接智能家居,算是这批评论里最有代表性的一种调侃。