谷歌发布RT-2大模型,让机器人像人类那样思考

原创 | 文 BFT机器人 

图片

大语言模型是指基于深度学习技术的大规模预训练模型,它能够通过学习大量的文本数据来生成人类类似的语言表达,机器人可以通过对大量的语言数据进行学习,从中掌握人类的语言表达方式,进而能够更好地与人进行交流和理解。

通过学习举一反三的能力,机器人可以不仅仅是单纯地根据输入做出回应,还能够具备一定的推理和判断能力,从而更好地适应复杂的交流场景。

7月28日,谷歌DeepMind推出了一款新的机器人模型Robotics Transformer 2(RT-2),它是全球第一个控制机器人的视觉-语言-动作(VLA)模型,它可以使机器人能够直接通过拍摄或者感知环境的方式获取视觉信息,通过语言理解模块理解人类的语言指令,然后通过动作执行模块进行相应的动作操作。现在不再用复杂指令,机器人也能直接像ChatGPT 一样操纵了。

图片

RT-2的架构和训练:对一个预训练的VLM模型在机器人和网络数据上进行共同微调

RT-2的突出之处在于,它可以通过对少量机器人训练数据的处理,不仅使单个模型能够执行基础模型中的复杂推理,还能够输出机器人动作。

为了展现RT-2的能力,谷歌通过机械臂进行演示,在这次演示中,展示了其卓越的机器学习和人工智能技术,例如,对AI说“捡起已灭绝的动物”,机械臂会在一堆塑料玩具中精准的选择恐龙。

图片

搭载RT-2的机器人能按人类指令行事

在此之前,机器人无法可靠地理解那些它们从未接触过的物品,也不能做到把“灭绝的动物”和“塑料恐龙玩具”联系在一起。

谷歌DeepMind机器人技术主管Vincent表示,以往让机器人丢垃圾必须经过专门的训练,让其理解垃圾的概念,并学会如何捡起和丢掉垃圾。然而,现在有了RT-2,它可以从网络数据中学习识别和处理垃圾的方法,这意味着我们不再需要针对不同场景逐一进行训练了。

图片

在所有类别中,与之前的基线相比(例如之前在大规模视觉数据集上预训练的RT-1模型和Visual Cortex(VC-1)等模型),RT-2的泛化性能提高到了3倍以上。RT-2在机器人数据中保持了对原始任务的性能,并提高了机器人在之前未曾见过的情景上的性能,从RT-1的32%提高到62%,显示了大规模预训练的显著好处。

图片

思维链推理可以学习一个独立的模型,既可以规划长期技能序列,又可以预测机器人的动作

真实的世界复杂且没有规律,机器人往往需要通过非常复杂的指令才能做到人类简单的事情,这个过程就像人类婴儿从无知无能逐渐成长为能够独立思考和行动的成年人一样,机器人也需要通过不断的学习和训练来提高自己的能力,而借助 RT-2 的强大功能,机器人可以自己分析更多信息,自行推断下一步该做什么。简而言之,RT-2 的能力在于将信息转化为行动,这显示了其快速适应新环境和情况的潜力。

随着技术的不断发展,RT-2将为我们带来更多的惊喜和改变,让我们期待着机器人技术在未来的发展中发挥更大的作用。

作者 | 音音

排版 | 居居手

更多精彩内容请关注公众号:BFT机器人
(公众号后台回复“优惠活动”查看BFT机器人年终钜惠福利内容)

本文为原创文章,版权归BFT机器人所有,如需转载请与我们联系。若您对该文章内容有任何疑问,请与我们联系,将及时回应。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RT-Thread作品秀】写字机器人作者:乔城阳 概述(说明应用产生的背景、实现功能)写字机器人在实际生产线上由于效率赶不上打印机,应用不是很广,然而由于其结构简单,成本低,并且符合人手写风格,在学习阶段很有价值。写字机器人设计上包含了路径规划、直线插补、加减速控制等常用电机运动控制算法,在软件上也会用到DXF文件解析、openCV图像处理等G代码生成工具,对后期深入研究激光切割机、雕刻机、3D打印机等大型设备有很好的铺垫作用。因此我的作品以写字机器人为题目分享我的制作过程和学习体验,希望对各位小伙伴的学习有所帮助。 开发环境(所采用的软、硬件方案)硬件:ART-PI、arduino、TM4C123GXL RT-Thread版本:3.14 开发工具及版本:MDK-ARM5.31、VSCode RT-Thread使用情况概述(简要总结下应用中RT-Thread使用情况:内核部分、组件部分、软件包部分、内核、其他)内核部分:线程调度,资源分配、同步通信、设备驱动框架 组件:DFS文件系统、UART串行异步通信、CAN通信 其他:UDP通信、cJSON编解码 硬件框架(概述应用所采用的硬件方案框图,并对核心部分做介绍)软件框架说明(介绍应用所采用的软件方案框图、流程图等,并加以解说)在写字机器人设计上我将其分为三个部分: 图像处理模块 运动控制模块 G代码生成模块 图像处理模块负责把文本图像和照片等图像文件做预处理,去除杂点,然后以合适的算法将图像二值化,突现主要信息,然后提取轮廓骨架以适合机器书写。 G代码生成模块将图像轮廓序列化后进行路径规划,选取一个适合的加工精度,然后按数控加工常用的G代码规范生成NC加工文件。另外对于标准的DXF文件则通过文件解析的方法生成G代码。 运动控制模块是写字机器人中最杂的一个模块,负责各个运动机构的精准快速移动。收到G代码指令后需要结合前后指令信息生成当前指令的合适初速度、最大运行速度,根据运动轨迹进行直线插补点,最后按SPTA梯形加减速算法向电机发出脉冲。 软件模块说明(介绍应用软件关键部分的逻辑、采用的实现方式等)Grbl是一种高性能低成本的开源CNC控制器,基于ATmega328型芯片输出高速精准的电机控制脉冲,完美支持各种标准G代码,并包含了完整的前瞻性加速控制,可以实现平稳的加速和无冲击的转弯动作。 正是由于grbl的前瞻性速度控制功能,所以要保证grbl控制器内一直保持着16-20个G代码指令。这需要ART-PI通过读取grbl控制器缓冲区状态,及时发送G代码指令,避免出现缓冲溢出和缓冲区为空等现象出现。 因此需要运行RT-thread实时操作系统,通读读取SD卡上的NC文件,并与grbl控制器通信,控制设备正常运行。另外RT-thread也可提供丰富的人机交互功能,将设备工作路径、进度等状态实时显示在屏幕上,也可以增加暂停续写等功能。 演示效果(演示效果请采用3张高清图片,并录制一段不少于1min视频解说应用所实现的效果,视频上传至B站或者腾讯视频或其他视频平台,给出链接即可)演示视频 比赛感悟同样是C代码,为什么别人写得那么好,这次比赛用到两个开源软件,一个是RT-thread,负责人机交互和发送控制指令,另一个是grbl,用来完成运动控制。两款软件都设计的非常精巧,只需在2kB大小的RAM上运行,而功能却又非常强大,实现了很多复杂的功能,所有的代码封装的很好,模块启用只需打开对应的宏定义即可。这次专门去图书馆借阅了RTT相关的图书,了解线程是如何调度,设备驱动应该怎么实现,但是内部还是有很多内容不理解,后期需要继续不断充实自己。运动控制一直是我的兴趣所在,这次也终于有机会把它实现,看着电机在一行行指令的控制下乖乖地转动,听着不断变化着频率的电机声音,真正体会到了伺服servo的含义,非常开心~
RT-Thread中,可以使用定时器或者软件定时器来实现线程周期执行。 1. 定时器方式: RT-Thread中有三种定时器:硬件定时器、软件定时器和周期定时器。你可以根据具体的需求选择不同的定时器。 以硬件定时器为例,可以使用`rt_timer_init`函数初始化一个硬件定时器,并设置定时器的回调函数和定时时间。当定时器计时到指定时间时,回调函数就会被执行。 在回调函数中,你可以实现需要周期执行的功能,并重新启动定时器以进行下一次执行。下面是一个简单的例子: ```c #include <rtthread.h> static rt_timer_t timer; void timer_callback(void *parameter) { // 执行需要周期执行的功能 rt_kprintf("Hello, world!\n"); // 重新启动定时器以进行下一次执行 rt_timer_start(timer, 1000); } int main(void) { // 初始化定时器 timer = rt_timer_create("timer", timer_callback, RT_NULL, 1000, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_HARD_TIMER); if (timer != RT_NULL) { // 启动定时器 rt_timer_start(timer, 1000); } return 0; } ``` 2. 软件定时器方式: RT-Thread中的软件定时器是基于系统时钟实现的,可以通过`rt_timer_start_soft`函数启动一个软件定时器,并设置定时器的回调函数和定时时间。当定时器计时到指定时间时,回调函数就会被执行。 在回调函数中,你可以实现需要周期执行的功能,并重新启动定时器以进行下一次执行。下面是一个简单的例子: ```c #include <rtthread.h> static rt_timer_t timer; void timer_callback(void *parameter) { // 执行需要周期执行的功能 rt_kprintf("Hello, world!\n"); // 重新启动定时器以进行下一次执行 rt_timer_start_soft(timer, 1000, RT_TIMER_FLAG_ONE_SHOT); } int main(void) { // 初始化定时器 timer = rt_timer_create("timer", timer_callback, RT_NULL, RT_TICK_PER_SECOND, RT_TIMER_FLAG_ONE_SHOT); if (timer != RT_NULL) { // 启动定时器 rt_timer_start_soft(timer, 1000, RT_TIMER_FLAG_ONE_SHOT); } return 0; } ``` 以上是两种常用的实现方式,你可以根据具体的需求选择使用哪种方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值