· Documentation · 27 min read
DORA-rs:使用现代人工智能构建机器人的友好指南
使用DORA快速高效构建你自己的机器人
欢迎来到机器人技术的精彩世界
机器人技术和人工智能(AI)正日益塑造着我们的世界,其应用范围涵盖从家用智能设备到复杂的工业自动化以及自动驾驶汽车等领域。这一快速发展令人着迷,但对于该领域的新手而言,开发机器人系统往往看似是一项艰巨的任务,通常与复杂的底层编程和陡峭的学习曲线相关联。这种认知可能会成为有抱负的机器人专家和人工智能从业者将创新想法付诸实践的障碍。
DORA-rs 应运而生,它是机器人开发领域的一股清新之风。DORA-rs 定位为一种现代解决方案,旨在显著降低这些入门门槛。其核心理念是“使构建机器人应用程序变得快速而简单”[1],为机器人应用开发注入急需的“现代元素”[1]。这一点尤为重要,因为尽管人工智能发展迅速,但机器人技术的基础框架“多年来变化不大”[1]。DORA-rs 的出现正是对这种差距的直接回应;它认识到 2024 年“蓬勃发展的人工智能”格局以及机器人框架现代化的历史滞后[1]。“这就是我们创建 dora-rs 的原因!”[1]这句话强调了一种刻意的努力,旨在弥合先进人工智能能力与机器人开发实际需求之间的差距,从而使这一过程更易于参与,尤其是对人工智能社区而言。这种方法为将复杂的人工智能集成到更广泛的机器人应用中提供了途径,使开发实践与当代软件工程标准保持一致。
那么,DORA-rs 究竟是什么?
DORA-rs 代表面向数据流的机器人架构(Dataflow-Oriented Robotic Architecture)[2]。它是一种“中间件”,即位于软件层,用于促进构成机器人“大脑”(处理单元)和“感官”(传感器)的各个组件之间的顺畅通信和协调[2]。这种中间件对于管理机器人系统内的复杂交互至关重要。
DORA-rs 的核心概念是数据流。想象一下,构建一个复杂的机器人就像设置一条装配线。这条线上的每个工位都执行特定的任务:一个工位(在 DORA-rs 术语中称为“节点”)可能是一个摄像头,用于捕捉视觉信息;另一个工位可能是一个人工智能算法,用于处理这些图像;还有一个工位可能是一个电机,根据人工智能的决策执行动作。DORA-rs 提供了工具,用于定义信息(即数据)如何以结构化和有组织的方式从一个工位流向另一个工位。这个定义了数据流的整个装配线被称为“管道”或“图”[2]。在这个架构中,任务被系统地“分配到称为节点的独立进程中”[3],确保了模块化和清晰性。
DORA-rs 的主要目的是“简化和加速基于人工智能的机器人应用程序的创建”[2]。它将重点从处理复杂的底层细节转移到使开发人员能够实现他们的机器人愿景,特别是在人工智能集成是关键组成部分的情况下。DORA-rs 的“面向数据流”特性是其简单性和有效性的基础。通过抽象进程间通信的复杂性,它使开发人员能够专注于各个组件(节点)的逻辑以及它们之间的交互方式。这种抽象是一个显著的优势,因为明确定义的数据流路径和“称为节点的独立进程”所提供的模块化特性,从本质上简化了复杂机器人系统的设计、理解和调试过程,这对该领域的新手来说是一个巨大的好处。
为什么 DORA-rs 是机器人技术领域的新挚友
DORA-rs 具有几个令人信服的优势,使其成为任何涉足机器人技术领域的人的有吸引力的选择,特别是那些具有人工智能背景或兴趣的人。
A. 使用你熟悉的语言:Python 占据核心地位
大量现代人工智能开发工具和库都是基于 Python 的。DORA-rs 充分顺应了这一趋势,提供了出色的 Python 支持[1]。这是一个重大变革,因为它使人工智能从业者能够过渡到机器人开发领域,而无需面对学习新的专业语言这一通常令人望而却步的要求。这种强大的 Python 集成对于那些“因该领域缺乏对 Python 的支持而受限”的人来说,意义重大[1]。
虽然 Python 是主要关注点,但 DORA-rs 也为需要或更喜欢其他语言的开发人员提供了灵活性。它为 Rust 提供了强大的支持(在其支持矩阵中被标记为一流支持 ⭐✅),并且还尽力支持 C/C++ 和 ROS2(机器人操作系统 2)(🆗)[3]。这种多语言能力确保了更广泛的开发人员能够利用该框架的优势。
B. 为机器人的大脑带来超高速
机器人通常需要即时对其环境做出反应,这要求其处理管道具有“低延迟”[2]。DORA-rs 在设计上注重速度。它采用了诸如专用“共享内存服务器”和“Apache Arrow”数据格式等复杂技术,以实现其组件之间的高效信息传输[1]。“零拷贝”消息传递原则是这种性能的核心;这意味着数据可以直接访问,而无需不必要的复制,从而节省了关键的处理时间和资源[1]。这种优化带来了“令人印象深刻的性能!”[1],这对于实时机器人操作至关重要。
C. 像专业人士一样构建:可组合和模块化
DORA-rs 提倡采用可组合的方法进行应用程序开发。它允许通过连接较小的独立“节点”来构建复杂的系统[2]。这些节点可以被视为乐高积木:每个积木(节点)都被设计为有效地执行特定功能,并且这些积木可以以多种配置组合,以创建复杂的机器人行为。这种模块化(“可组合的……数据流功能”[2])使项目更易于管理、更新,甚至允许在不同的机器人应用程序中重用组件[3]。
D. 快速启动项目:现成的节点
开发人员并不总是需要从头开始构建每个组件。DORA-rs 通过其节点中心等概念提供对“现成节点”的访问[1]。这些预打包的节点适用于常见的机器人任务,包括摄像头输入(例如,使用 PyOrbbeckSDK 或 PyRealsense)、人工智能处理(如 YOLO 目标检测或 Whisper 语音转文本)和电机控制[3]。这些节点的可用性促进了“快速原型开发”,使开发人员能够更快地让他们的机器人执行有意义的任务[1]。
E. 简单的指令:使用 YAML 轻松配置
所有这些节点之间的连接和通信路径是使用用 YAML(另一种标记语言)编写的简单文本文件定义的[1]。这种“声明式”配置方法意味着开发人员只需描述他们希望系统实现的目标,而 DORA-rs 会处理底层的实现细节[1]。YAML 文件易于人类阅读,使设置机器人数据流的过程直观且简单[6]。
强大的 Python 支持、用于低延迟的零拷贝性能以及丰富的预打包特定于人工智能的节点(如用于 YOLO 和 Whisper 的节点[3])的结合,为人工智能驱动的机器人技术创造了特别强大的协同效应。DORA-rs 不仅对 Python 友好,而且从战略上被设计为一个“以人工智能为先”的机器人框架。这从其起源故事中可以明显看出,它是因为“人工智能正在蓬勃发展”以及为了解决“该领域缺乏对 Python 的支持”这一问题而创建的,以满足“人工智能从业者”的需求[1]。高性能特性,如通过共享内存和 Apache Arrow 实现的零拷贝消息传递[1],对于实时执行计算密集型人工智能模型至关重要。特定人工智能功能节点的直接可用性[3]进一步简化了将先进人工智能集成到机器人中的过程。因此,DORA-rs 有可能显著降低人工智能开发人员进入机器人领域的门槛,可能会引发一波新的人工智能驱动的机器人应用创新浪潮,而这些应用在以前使用旧框架时过于复杂或缓慢而难以实现。这实际上使更广泛的人工智能社区能够更轻松地使用高性能机器人技术。
以下表格总结了 DORA-rs 对新学习者的关键优势:
| 特性 | 对新学习者的意义 |
|---|---|
| 对 Python 友好 | 允许使用熟悉的语言;非常适合人工智能集成。 |
| 数据流和节点 | 允许通过连接简单、可重用的部件来构建复杂的机器人。 |
| 零拷贝性能 | 确保机器人应用程序运行得更快、更流畅。 |
| YAML 配置 | 提供了一种简单的方法来定义机器人组件如何协同工作。 |
| 快速原型开发 | 便于快速迭代想法并快速观察结果。 |
| 预打包的节点 | 减少样板代码,使开发人员能够更专注于独特的功能。 |
| 可扩展的架构 | 支持项目从简单到复杂的发展,甚至可以跨机器扩展。 |
| 可观测性工具 | 通过日志和指标帮助理解机器人的行为。 |
IV. DORA-rs 如何发挥神奇作用:揭开其底层机制的简化面纱
了解一些核心架构概念有助于理解 DORA-rs 是如何实现其高效性和易用性的。
A. 可视化数据流:节点、图和管道
如前所述,DORA-rs 应用程序被构建为相互连接的系统,被建模为“有向图”或“管道”[2]。这个图中的每个“节点”都作为一个独立的工作单元——一个“独立的进程”[3]——专注于其特定的任务。例如,一个摄像头节点可能会捕获图像。然后,这些图像作为数据被发送到一个目标检测节点。该节点处理这些图像以识别目标,并随后将这些识别出的目标的位置发送到一个绘图节点,该节点可以将这些信息可视化[3]。这种数据流反映了示例配置(如 yolo.yml 文件)中定义的结构[3]。
B. 速度的秘诀:共享内存和 Apache Arrow
节点之间的高效通信,特别是当它们位于同一台机器上时,是通过“共享内存”实现的[1]。这可以被想象成一个公共的数字白板,节点可以在上面即时发布和读取消息,从而消除了多次复制数据的缓慢且繁琐的过程。为了提高这种速度并确保通用的数据表示,DORA-rs 使用了“Apache Arrow 数据格式”[3]。Apache Arrow 是一种高度高效、标准化的内存数据结构语言,支持“零拷贝读取”[3]。这意味着一个节点可以访问和使用另一个节点提供的数据,而无需进行任何耗时的复制或数据转换(序列化)过程[3]。
将共享内存与 Apache Arrow 相结合的架构决策不仅带来了速度上的提升,还显著促进了语言无关性并减少了开发障碍。Apache Arrow“定义了一个 C 数据接口,这意味着 DORA 除了所选语言的原生编译器之外,无需额外的编译步骤”[3]。这个 C 数据接口是一个关键的技术细节。它意味着任何能够与 C 风格数据结构进行交互的编程语言——包括大多数现代语言——都有可能与 DORA-rs 节点集成。这一特性是该框架多语言支持(Python、Rust、C/C++[3])的基础,并增强了其通用性。因此,采用 Apache Arrow 不仅实现了高效的零拷贝操作,还促进了更流畅的跨语言通信,降低了来自不同编程背景的开发人员的入门门槛,并减少了多语言机器人系统中通常需要的“粘合代码”。
C. 拓展视野:分布式数据流
DORA-rs 并不局限于在单台计算机上运行。它“设计为可跨机器和机器人进行扩展!”[1]这意味着一个 DORA-rs 数据流可以进行分布式部署,允许一些节点在一台机器上运行,而其他节点在不同的机器上运行,并通过网络进行有效通信。DORA-rs 通过标准的 TCP 通信支持这一点,并且还具有实验性的“Zenoh 集成”,以实现更高级的远程数据流功能,这可以简化复杂网络中的通信并处理诸如 NAT 穿透等挑战[3]。这种可扩展性对于开发复杂的机器人系统或协作式多机器人应用至关重要。
V. 准备好深入探索了吗?DORA-rs 的入门步骤
开始使用 DORA-rs 的过程设计得易于上手。
A. 在机器上安装 DORA-rs
安装 DORA-rs 通常很简单。针对各种操作系统和架构,通常都有预构建的二进制文件可供从官方发布页面下载。或者,用户可以使用 Docker 或 Nix 等工具进行安装[1]。官方网站 dora-rs.ai 提供了全面的安装指南[1]。一般过程包括获取 dora 二进制文件并确保其在系统路径中可用[6]。
B. 编写第一个“节点”:构建模块
DORA-rs 中的“节点”本质上是一个小程序,用于在整个应用程序中执行特定任务[3]。开发人员可以使用 Python 或 Rust 编写节点,例如,从传感器读取数据、处理图像或向执行器发送命令。“入门”文档通常会引导新用户创建一个简单的节点,例如一个定期发送当前时间作为输出的节点[6]。
C. 定义“数据流”:连接节点
一旦开发了各个节点,就需要创建一个 dataflow.yml 文件[6]。这个 YAML 文件用于定义节点之间的连接——指定哪些数据从哪个源节点流向哪个目标节点。它就像机器人信息流的蓝图或地图,概述了每个节点的输入和输出以及它们用于通信的主题[6]。
D. 让它运行起来:运行数据流
编写好节点并在 YAML 文件中定义好数据流后,可以使用诸如 dora-daemon --run-dataflow dataflow.yml 这样的命令来启动机器人应用程序[6]。然后,DORA 守护进程将接管,根据定义的管道协调所有节点的执行并管理它们之间的数据交换[6]。
根据其文档[6],使用 DORA-rs 的入门体验是有意设计为渐进式且大量采用示例驱动的。这种方法对初学者非常有效。从创建单个节点,到在 YAML 文件中定义它们的交互,再到使用像 cargo build --all --release(针对基于 Rust 的组件)和 dora-daemon --run-dataflow 这样的简单命令运行完整的数据流,这种清晰的流程简化了初始学习曲线[6]。这种结构化的方法,结合实用的实践示例,如用于自动驾驶汽车的 dora-drives 教程[8],使机器人开发不再那么令人生畏。它旨在使该领域更易于进入,有可能吸引一批新的开发人员,他们可能之前因陡峭的学习曲线而望而却步。
E. 探索与学习:教程和示例
学习的最有效方法往往是实践。DORA-rs 提供了出色的文档,包括详细的“入门”指南[6],以及特定的教程,如“dora-drives”,它提供了对自动驾驶汽车编程的逐步介绍[4]。此外,还有大量涵盖各种任务的示例,如音频处理、视觉系统和 ROS2 集成,可帮助用户探索该框架的不同方面[3]。
VI. 加入 DORA-rs 运动:社区与资源
开启 DORA-rs 之旅并不一定是孤军奋战。该项目积极倡导“社区驱动项目”的理念[1]。这意味着有既定的渠道和平台,用户可以在其中提问、分享他们的项目、进行协作,并从其他开发人员的集体经验中学习。
想要深入了解的人可以探索官方的 DORA-rs GitHub 组织[4]。这个组织托管了主 dora 仓库[3],其中包含核心框架,以及众多示例项目和相关工具。其中值得注意的有 dora-lerobot,一个用于机器人操作的管道[4],以及 dora-drives,自动驾驶汽车教程项目[4]。官方网站 dora-rs.ai[1]是文档、指南[6]和博客文章的中心枢纽。对于实时交互和支持,DORA-rs Discord 服务器(在[1]中提及)是一个非常宝贵的资源。
dora-rs GitHub 组织下众多的仓库(目前列出了 27 个仓库[4])表明了其致力于构建一个全面的生态系统,而不仅仅是一个独立的工具。这个生态系统包括核心 dora 框架、特定应用的示例(如 dora-lerobot[9])、教育资源(如 dora-courses,一个关于 Rust 软件工程的指南[4])以及基准测试工具(如 dora-benchmark[4])。这种多样性展示了一种协同努力,旨在提供广泛的工具、实用的工作示例和学习材料,以满足 DORA-rs 范式下机器人技术和软件开发的各个方面。这样丰富的生态系统大大加速了学习和采用过程。新手不仅可以找到核心框架本身,还能找到功能性示例和教育内容,从而显著减少了启动新项目和学习新环境中最佳实践时通常遇到的障碍。这种整体方法对于围绕该框架培育一个强大、活跃和支持性的社区至关重要。
VII. 机器人冒险之旅现在开始!
DORA-rs 为机器人开发提供了一条极具吸引力的途径,尤其适合新学习者和人工智能从业者。其关键优势——设计简单、对 Python 友好、支持低延迟的高性能架构以及新兴的支持性社区——共同降低了传统的入门门槛。
机器人技术领域充满了令人兴奋的可能性,从创建智能助手到为复杂的工业挑战开发新颖的解决方案。DORA-rs 被定位为一种工具,可帮助人们更轻松、高效地探索这些可能性。围绕简化[1]、速度[1]、Python 支持[1]和社区参与[1]的一致信息都指向一个核心使命:使先进的机器人开发更易于实现。对“基于人工智能的机器人应用程序”[1]的具体关注直接满足了现代快速发展的开发者群体的需求。如果这种方法获得关注,DORA-rs 可能在机器人开发的民主化进程中发挥重要作用,使更多不同背景的创作者能够参与其中,并可能导致更快的创新周期,因为更多的人有能力构建和试验机器人系统。邀请已经发出:深入研究文档,尝试示例,开始构建由 DORA-rs 驱动的机器人之旅。一场机器人冒险正在等待着你。
参考文献
- dora-rs | dora-rs,于 2025 年 5 月 13 日访问,https://dora-rs.ai/
- dora-rs - Program Organization | Google Summer of Code,于 2025 年 5 月 13 日访问,https://summerofcode.withgoogle.com/programs/2025/organizations/dora-rs-tb
- dora-rs/dora: DORA (Dataflow-Oriented Robotic … - GitHub,于 2025 年 5 月 13 日访问,https://github.com/dora-rs/dora
- dora-rs - GitHub,于 2025 年 5 月 13 日访问,https://github.com/dora-rs
- Dora-rs: simplifying robotics stack for next gen robots - FOSDEM 2024,于 2025 年 5 月 13 日访问,https://archive.fosdem.org/2024/schedule/event/fosdem-2024-3225-dora-rs-simplifying-robotics-stack-for-next-gen-robots/
- Getting started - dora-rs,于 2025 年 5 月 13 日访问,https://dora-rs.ai/dora/getting-started.html
- Guides | dora-rs,于 2025 年 5 月 13 日访问,https://dora-rs.ai/docs/guides
- readme | dora-rs,于 2025 年 5 月 13 日访问,https://dora-rs.ai/docs/guides/dora-drives/
- dora-rs/dora-lerobot - GitHub,于 2025 年 5 月 13 日访问,https://github.com/dora-rs/dora-lerobot
- dora-rs/dora-rs.github.io: Dataflow-Oriented Robotic Application is middleware that streamlines and simplifies the creation of AI-based robotic applications. - GitHub,于 2025 年 5 月 13 日访问,https://github.com/dora-rs/dora-rs.github.io