作者 | Annie Xu
责编 | 何苗
出品 | GOSIM 开源创新汇
C 和 C++是机器人编程中常用的编程语言,但学起来存在一定难度。那些对机器人感兴趣,但没有精力花费数周时间学习 C 和 C++编程的用户只能望而却步。
为了让机器人技术变得更简单,陶海轩(Xavier Tao)与 Philipp Oppermann 共同主持开发了 dora:允许用户使用 Python 或 Rust 等更易上手的语言进行机器人编程,从而简化了开发过程,降低了学习门槛。
陶海轩在 2024 GOSIM 欧洲站现场
dora 全称 Dataflow Oriented Robotics Architecture,是一个新型开源自动驾驶及机器人中间件框架和数据流计算平台,借用 dora 框架可以使同台主机上的不同应用程序间实现 zero copy 的信息传递。dora 主要面向可以在亚马逊网站或者线下店中买到的机器人硬件的 DIY,而非大型、定制化的机器人。
他们希望机器人技术是人人都可参与的,将 dora 项目的内容全部开源。截至目前,该项目在 GitHub 上获得了 1,400 颗 Star。
dora 被 Hugging Face 的联合创始人 Thomas Wolf 所看好,同时与特斯拉 Optimus 人形机器人团队的 Remi Cadene 展开合作。
陶海轩:Dora-rs:大模型驱动的机器人执行代码变革
本次演讲的亮点内容:
-
在 Arrow 统一的存储布局下,所有消息可以在零拷贝的情况下传递。通过避免零拷贝,dora 的性能得到显著提升,这也成为 dora 的优势之一。
-
研究机器人技术的延伸领域机器臂时,在控制和精度方面都取得极大进展。仅用了一周时间,团队即实现了通过语音指令指挥机器臂执行“夹起桌边的一块巧克力”这一动作指令。这背后仅仅由短短 50 行 Rust 代码所控制。
-
陶海轩认为:机器人技术是人人都能使用的。同时也践行着这个理念,努力将机器人技术从闭源转向开源,公开闭源社区收集到的创意、降低机器人编程的学习门槛。
以下是陶海轩本次演讲的主要内容 :
Arrow:统一存储布局带来的高效通信
编程机器人程序与编写一般的应用程序不同,两者的关键区别之一前者涉及多个并行运行的循环,且要保证这些循环间的高效通信。例如,网络摄像头处于以一定频率推送新图像循环的同时,AI 模型循环也正进行一些计算。这些循环相互并行,彼此间也需要进行通信。为了通信的高效运行,dora 引入了“节点”和“边”。“节点”是并行运行的独立主循环,节点之间通过发布/订阅模式进行通信。“边”可以看作是定义了名称的主题。
构思这样的图表需用到 YAML 文件,和使用 Docker Compose 和 Kubernetes 的方式相类似,只需声明清楚输入、输出以及源代码,循环能够运行。
为了克服不同编程语言之间的兼容性问题,陶海轩在 dora 中采用了 Arrow。Arrow 不仅在机器人领域被广泛应用,在科学界也得到广泛使用。它定义了统一的存储布局方式,使得从 C 和 C++转换到 Rust 或 Python 时,存储布局不会发生改变。NumPy、Pandas、PyTorch、OpenCV 等许多库都是基于 Arrow 构建的。
在 Arrow 统一的存储布局下,所有消息可以在零拷贝的情况下传递。通过零拷贝,dora 的性能得到显著提升,这也成为 dora 的优势之一。
例如,在使用指针时,零拷贝或序列化避免了使用协议缓冲区或其他通信序列化类型时可能产生的延迟。这大大减少了处理大量数据时的计算开销。在传输庞大的视频流或激光雷达传感器数据时,可能会减少至少 20 毫秒的延迟。
集成多款开源大模型:机器人智能 up
基于这些技术,陶海轩进一步展示了如何通过 dora 集成在线模型来丰富机器人的功能,包括使用许多在线模型以及开源深度学习模型的数据集。例如,OpenAI 的 Whisper 可以实现语音转文字,VLM 模型可以根据图片生成文字描述,Hugging Face 的 Parler 模型可以将文字转换为语音。
陶海轩在现场演示了一个连接到 Whisper、VLM 和 Parler 模型的可视化工具 Rerun 的行动过程。通过语音指令,Rerun 实现了描述现场环境并移动功能。
此外,可以将文本映射到相应的功能上。例如,回家后只需挥一挥手,所有灯就能亮起来——这些都是可以实现的。此前的 AI 操作可能还需要某种形式的边界框、固定的结构化数据,而现在,机器人应用可以输入非结构化数据。
陶海轩表示这只是 dora 众多的功能之一。不过,也要做好心理准备,Rerun 只是依托电脑运行,并没有 GPT-4 视觉、深度学习视觉那么强大,运行过程中出现一些问题也是意料之中。
热重载:实时调试提升开发效率
过去,每当需要修改代码时,都得重新启动应用程序,十分耗时。而如果是机器人编程,还需要经过关闭机器人、重置不同的传感器、再重新启动一系列“耗时”过程。因此,dora 开发了“热重载”功能,其优势包括以下四点:
-
在运行时更改代码,为开发人员带来绝佳体验;
-
无需在每个迭代步骤中进行重置;
-
包含故障安全措施,避免大的未定义行为;
-
集成大语言模型(LLM)。
陶海轩展示了如何利用 LLM 来实现策略编码,将 Whisper 的视觉文本映射到语音指令,使得 Rerun 可以实时执行命令,如在提到“办公室”时,机器人会自动移动到办公室。Rerun 基本上可以实现你能想象到的任何类型的互动,不过目前这些只针对小型机器人。
机械臂:高效控制与精准操作
机械臂也是机器人技术应用的重要领域。陶海轩团队在成本和精度方面都取得了很大进展。他们利用 DRAW 的优势研究机械臂。记录每次的操作过程,随后进行回放,并将其映射给具体的语音命令。
仅用了一周时间,团队即实现了通过语音指令指挥机器臂执行“夹起桌边的一块巧克力”这一动作指令。这背后只是由短短 50 行 Rust 代码所控制。陶海轩认为这实现起来非常容易。
接下来,他们计划构建端到端的 LLM 模型。通过不同的语音指令实现机械臂的多样化操作。目前 dora 机械臂的改进结果如下:
-
将 SOTA aloha 机械臂的远程操作频率提高了 10 倍(从 50Hz 提高到 500Hz),将两个机械臂之间的通信延迟降低到 2 毫秒。2 毫秒的通信延迟听起来可能没有什么,但实际上非常重要。例如,打乒乓球时,如果手臂速度过慢,就无法接到球;
-
用于训练的细粒度遥操作数据提供更好的遥操作控制,提升遥操作性能并改善数据集和模型;
-
只需使用 cargo,无需复杂安装;
-
支持跨平台使用:Linux、MacOS 和 Windows 上的 Rust,C,C++,Python。
机器人领域有很多定制化的内容,过去编程机器人技术非常困难。不过现在,陶海轩正试图用不同领域更简单的工具来代替原本复杂的内容。
机器人技术没有门槛,人人都能使用的。他们同时也践行着这个理念,努力将机器人技术从闭源转向开源,积极搜集闭源社区的创意想法并公开,努力探索降低机器人编程学习难度的方法。
dora 项目体验:https://github.com/dora-rs/dora