可集成多模型的机器人开发框架 dora:让机器人编程走向大众

作者 | 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

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51107.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL手工注入漏洞测试(MongoDB数据库)

此次靶场地址为:墨者学院 ⼀. 如下给出的源码...可以看到数据库查询的语句如下..构造回显测试... new_list.php?id1});return ({title:1,content:2 ⼆.成功显示“ 1” 和“ 2” 。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询 当前数据库。通过…

C# 中 ScrapySharp 的多线程下载策略

引言 在现代互联网应用中,数据抓取是一个常见的需求,无论是为了数据分析、内容聚合还是自动化测试。ScrapySharp 是一个基于 .NET 的轻量级、高性能的网页抓取库,它提供了丰富的功能来简化网页内容的抓取和处理。然而,当面对大量…

使用python实现3D聚类图

实验记录,在做XX得分预测的实验中,做了一个基于Python的3D聚类图,水平有限,仅供参考。 一、以实现三个类别聚类为例 代码: import pandas as pd import numpy as np from sklearn.decomposition import PCA from sk…

静力水准仪的基本工作原理:解析磁致伸缩式水准仪

静力水准仪作为一种高精度的测量设备,广泛应用于桥梁、隧道、地铁、大坝、大型储罐等工程结构的沉降监测中。其中,磁致伸缩式静力水准仪以其独特的测量原理和技术优势,成为沉降监测领域的重要工具。本文将详细解析磁致伸缩式静力水准仪的基本…

67 H3C SecPath F1000 (网络大致介绍)

一 VRF VRF(Virtual Routing and Forwarding,虚拟路由和转发)用来实现不同VPN的路由隔离。每个VRF都有相对独立的路由表和LFIB(Label Forwarding Information Base,标签转发信息库),确保VPN数据…

MySQL基础:事务

💎所属专栏:MySQL 💎1. 事务 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,这些操作要么同时成功,要么同时失败 例如转账…

C++第四十弹---从零开始:模拟实现C++中的unordered_set与unordered_map

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1 哈希概念 2 哈希冲突 3 哈希函数 4 哈希冲突解决 4.1 闭散列 4.1.1. 线性探测 4.1.2. 二次探测 4.2 开散列 4.2.1. 开散列概念 4.2.2…

C语言一笔画迷宫

目录 开头程序程序的流程图程序游玩的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <Windows.h> void printmaze(const char strmaze[11][11]) {int ia 0;…

智慧环卫与智慧城市:以人文本的创新发展之路

智慧环卫与智慧城市&#xff1a;以人文本的创新发展之路 前言智慧环卫与智慧城市 前言 智慧环卫和智慧城市的建设是当今社会发展的重要趋势&#xff0c;它们对于提升城市管理水平、改善居民生活质量具有至关重要的意义。随着国家政策对新型城市建设的大力推动&#xff0c;智慧…

Android13 app后台无法启动Abort background activity starts from

总纲 android13 rom 开发总纲说明 目录 1.前言 2.log分析 3.代码查找分析 4.修改方法 5.编译测试 6彩蛋 1.前言 Android13 用户app后台无法启动,提示Abort background activity starts from 10111 2.log分析 08-07 21:37:36.703: W/ActivityTaskManager(440): Back…

保护网站安全,了解常见的几种网络攻击

随着互联网技术的迅猛发展&#xff0c;网站作为信息展示和交互的重要平台&#xff0c;面临着日益复杂的网络攻击威胁。从简单的口令入侵到复杂的分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;网络攻击手段层出不穷&#xff0c;给网站所有者带来了巨大的挑战。今…

完成控制器方法获取参数-@RequestParam

文章目录 1.将方法的request和response参数封装到参数数组1.SunDispatcherServlet.java1.根据方法信息&#xff0c;返回实参列表2.具体调用 2.测试 2.封装Http请求参数到参数数组1.自定义RequestParam注解2.MonsterController.java 增加参数3.SunDispatcherServlet.java1.resol…

正则表达式备查

一、常用 符号内容\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如&#xff0c;“n”匹配字符“n”。“\n”匹配换行符。序列“\”匹配“\”&#xff0c;“(”匹配“(”。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性&#xff0c;^ 还…

ARM工作模式

ARM ARM架构ARM七个工作模式寄存器异常向量表存储格式&#xff08;内存大小端&#xff09;汇编指令 ARM架构 RAM&#xff1a;随机访问存储器 ROM&#xff1a;只读访问存储器 AHB&#xff1a;先进高速总线 APB&#xff1a;先进外设总线 USB&#xff1a;统一串行总线 norflash&am…

基于Vue.js+Express的夕阳红养老院管理系统的设计与实现--附源码98650

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 相关技术介绍 2.1 Express框架介绍 2.2 Vue.js 2.3 MySQL数据库 2.4 Node.js主要功能 3系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据新增流程 3.2.2 数据修改流程 3.2.3数据删除…

AWS SAM CLI 备忘单!

安装 AWS SAM CLI brew tap aws/tap brew 安装 aws-sam-cli 验证安装 $ sam --version 升级 SAM $ brew upgrade aws-sam-cli 您需要 AWS 凭证才能在 AWS 上工作。 构建并部署简单应用程序 $ sam init→ 下载示例应用程序 $ sam build→ 构建您的应用程序 $ sam deploy --guid…

Java学习_18_Stream流

文章目录 前言一、不可变集合二、Stream流思想第一步&#xff1a;得到Stream流第二步&#xff1a;Stream流的中间方法Stream流的终结方法 总结 前言 博客仅记录个人学习进度和一些查缺补漏。 学习内容&#xff1a;BV17F411T7Ao 一、不可变集合 不可变集合就是长度和内容都不可…

希尔排序,详细解析(附图解)

1.希尔排序思路 希尔排序是一种基于插入排序的算法&#xff0c;通过将原始数据分成若干个子序列&#xff0c;然后对子序列进行插入排序&#xff0c;逐渐减小子序列的间隔&#xff0c;最后对整个序列进行一次插入排序。 1.分组直接插入排序&#xff0c;目标接近有序--------…

C语言贪吃蛇之BUG满天飞

C语言贪吃蛇之BUG满天飞 今天无意间翻到了大一用C语言写的贪吃蛇&#xff0c;竟然还标注着BUG满天飞&#xff0c;留存一下做个纪念&#xff0c;可能以后就找不到了 /* 此程序 --> 贪吃蛇3.0 Sur_流沐 当前版本&#xff1a; Bug满天飞 */ #include<stdio.h> #includ…

【补充篇】AUTOSAR多核OS介绍(下)

文章目录 前文回顾1 AUTOSAR OS1.1 AUTSOAR OS元素1.1.1 操作系统对象1.1.2 操作系统应用程序1.1.3 AUTOSAR OS裁剪类型1.1.4 AUTOSAR OS软件分区1.2 AUTOSAR OS自旋锁1.3 AUTOSAR OS核间通信1.4 AUTOSAR OS多核调度前文回顾 在上篇文章【补充篇】AUTOSAR多核OS介绍(上)中,…