前文:

人形机器人 —— Figure 01机器人亮相 | OpenAI多模态能力加持 | 与人类流畅对话交互 | 具身智能的GPT-4时刻


所需的AI技术:

人形机器人的软件层面其实有:

  1. 视觉模块/导航模块;
  2. 语言模块;
  3. 决策模块;

视觉模块,可以有3D点云(计算机视觉)、NeRF(Neural Radiance Fields)、全景分割技术,等等;导航模块,如:SLAM等等,但是由于导航模块可以和视觉模块耦合在一起,,并且导航模块往往可以和决策模块或规划模块耦合在一起,所以导航模块可以不单独列成一个模块。

语言模块,这里是指大模型,但是往往语言模块和视觉模块也有很强的耦合,比如都交给多模态大模型模块处理。人形机器人的直接输入输出并不是语言而是语音,因此我们还需要语音与语言转换模块。

决策模块,根据视觉模块和语言模块提供的信息,也包括从导航系统提供的模块,也包括从多模态模糊提供的信息,得到下一步动作,该动作往往不是对电机的扭矩的直接控制,而是电压等信息,这个动作还需要交给电子控制器转为扭矩控制信息,最终的扭矩信息交给电机进行具体执行。

人形机器人所需实现的功能:

  1. 识别周围环境,并进行准确描述;
  2. 推理决策下一步的行动;
  3. 将模棱两可的请求翻译为符合上下文的请求;
  4. 用语言解释推理的过程;

人形机器人的输入数据在chatGPT3.5出现之前是只有图像数据的,但是在ChatGPT3.5出现后就实现了自然语言的高度拟人化,这样有就有了人形机器人的多模态数据输入了,也就是将图像数据和语音数据一并作为输入了。其实准确的来说语音数据并不是人形机器人直接使用的数据,我们需要将语音数据转换为文字数据,也就是将图像和语音转换为文本输入到OpenAi预训练的多模态大模型中,而多模态大模型输出的数据再和图像数据一并输入到强化学习模型中,获得决策动作。

人形机器人的动作控制和常见的强化学习控制场景中的一样存在action repeation的现象,比如一般的人形机器人的视觉图像的输入(相机拍照)的频率为10hz,强化学习模型的动作输入为200hz,实际的电机控制器的制动频率为1000hz,也就是说机器人接受到一个图像后会输出20个重复的动作,而这20个重复的动作发送给电机控制器后会具体形成1000个重复的制动控制(可以理解为保持某个电压值的频率为1000hz),也可以理解为机器人接收到一个图像数据后会使电机保持1000个时长的相同的制动控制。

大致形式:

10hz采集图像 -> OpenAI大模型 -> 强化学习模型 -> 产生200hz的控制动作(24自由度的动作的电压值) -> 动作执行控制器(动作执行的电机) -> 产生1000hz的执行控制器的动作(电机的扭矩等等)

可以看到,机器人接采集一帧图像后给电机的具体执行东西要保持100倍的图像采集时间,也就是说明电机具体执行时的动作要重复100次。

正如OpenAI的模型其实并不是一个模型一样(OpenAI的大模型由多个大模型组成,具体执行时会根据任务的具体情况选择具体的大模型进行执行),人形机器人的模型也不是只有一个的,而是多个模型联合工作的。

比如,机器人的视觉模块,一般需要使用SLAM算法、3D点云算法、NeRF算法、物体识别算法、人体动作捕捉和识别算法,等等,多个算法组成。照比视觉模块相比语言模块会相对显得少些,一般只用一个或两个大模型就可以解决,但是由于大模型难以在终端上直接运行,因此语言模块往往采用远端调用云资源的方式来进行解决,这也导致了未来的一个研究,那就是边缘计算和云计算的均衡负载问题。

虽然当所有的模型训练好后联合在一起使用时是一个end-to-end的结构,但是这些模型往往在训练时是存在先后顺序和分开训练的问题的,因此一个人形机器人的AI模型往往是多个研究方向的组合,单一方向的研究是难以使其真正工作的,可以说人形机器人的研发工作更偏向于一种系统工程,即使在不考虑硬件(电机、电池、机械控制、传感器,等等)的前提下只考虑软件层面的AI算法就已经包含了多个方向的研究。虽然最终做决策的算法是强化学习算法,但是其上游的视觉算法和语言算法也是十分关键和重要的,可以说如果没有很好的视觉算法和语言算法,单独的强化学习算法只能运行在仿真环境下而无法运行在真实的实体(实体机器人)上的。

而且,在完成了视觉模型和语言模型后这时的强化学习模型也并不能保证仿真环境下的决策算法可以很好的运行在实体机器人上的,这时候还存在一个sim2real的问题,而这个问题是仿真环境下无法解决的,也就是说仿真环境和实体的实际运行情况之间的这个gap是需要单独算法来进行处理的,而这又属于一个独立的研究方向。

可以说人形机器人是多个领域的联合的一个场景,并不是单一领域、单一研究方向就可以解决的,如何完成单个方向的研发很重要,但是最后决定这个机器人最终的performance的还在于将这些单独模块/算法组合在一起的算法,而这个最终的组合也是一个难点,如何可以使多个部件/模型更好的联合在一起工作也是需要不断调整和优化的。

相关资料:

https://www.youtube.com/watch?v=vO1wnHA0tZg

https://www.youtube.com/watch?v=_HjGppyK0Po

人形机器人的AI技术 —— 将一个大问题拆解为若干个小问题的更多相关文章

  1. Linux下的split 命令(将一个大文件根据行数平均分成若干个小文件)

    将一个大文件分成若干个小文件方法 例如将一个BLM.txt文件分成前缀为 BLM_ 的1000个小文件,后缀为系数形式,且后缀为4位数字形式 先利用 wc -l BLM.txt       读出 BL ...

  2. AI:机器人与关键技术--总是被科普

    AI:机器人与关键技术--总是被科普 原文链接:www.csdn.net/article/2014-04-22/2819430 机器人发展建议: 有需求才有生产,有更高的需求才有发展: 第一条:我们的 ...

  3. 四种 AI 技术方案,教你拥有自己的 Avatar 形象

    大火的 Avatar到底是什么 ? 随着元宇宙概念的大火,Avatar 这个词也开始越来越多出现在人们的视野.2009 年,一部由詹姆斯・卡梅隆执导 3D 科幻大片<阿凡达>让很多人认识了 ...

  4. IBM沃森会成为第一个被抛弃的AI技术吗?

    作者|William Vorhies 译者|姚佳灵 编辑|Debra 导读:IBM 的沃森问答机(Question Answering Machine,简称 QAM),因 2011 年参加综艺节目&l ...

  5. 福利:42套AI技术视频免费领取

    <福利:33套AI技术视频免费领取> 视频获取方式:请加机器学习和自然语言(QQ群号:436303759)群后,私信群主获取(备注上自己想要获取是视频名称),仅限本群公众号粉丝成员,多套视 ...

  6. 如今领占主导地位的19种AI技术!

    如今领占主导地位的19种AI技术! http://blog.itpub.net/31542119/viewspace-2212797/ 深度学习的突破将人工智能带进全新阶段. 2006 年-2015 ...

  7. 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创

    小蚂蚁说: 11月8日,在第五届世界互联网大会-<人工智能:融合发展新机遇>论坛上,蚂蚁金服副总裁.首席数据科学家漆远认为AI具有控制风险.降本增效和提升用户体验三大作用. 11月8日,第 ...

  8. (原创)我对未来的人类的发展,以及AI技术发展的一些思考。

    最近AI非常的火,不仅仅是阿尔法狗的成功,因为它击败了人类最强的大脑,颠覆了人类几千年来的对传统的认识,也让人类意识 到了一个问题:天外有天,人外有AI. 那么AI究竟会对人类的未来造成什么深远的影响 ...

  9. AI技术在智能海报设计中的应用

    背景 在视觉设计领域中,设计师们往往会因为一些简单需求付出相当多的时间,比如修改文案内容,设计简单的海报版式,针对不同机型.展位的多尺寸拓展等.这些工作需要耗费大量的时间.人力成本(5~6张/人日), ...

  10. AI 技术咖们说,进入未来世界首先需要一个“虚拟的我” | 科技生活节倒计时8天

    http://www.tmtpost.com/3367762.html 未来世界是什么样子? 斯皮尔伯格在<头号玩家>中构建了一个充满科技感.富有浓烈浪漫主义色彩的虚拟世界.戴上VR眼镜, ...

随机推荐

  1. LeetCode 688. Knight Probability in Chessboard “马”在棋盘上的概率 (C++/Java)

    题目: On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exact ...

  2. kettle从入门到精通 第三十五课 kettle 变量

    1.设置变量 a.可以通过转换中的"设置变量"步骤进行设置. b.手动通过kettle.properties文件或通过"编辑"菜单中的"设置环境变量& ...

  3. java 中 pop 和 peek 方法区别

    相同点:都返回栈顶的值. 不同点:peek 不改变栈的值(不删除栈顶的值),pop会把栈顶的值删除. 下面通过代码展现 /* * 文 件 名: TestPeekAndPopDiff.java */ i ...

  4. 手摸手教你把Ingress Nginx集成进Skywalking

    背景 在微服务大行其道的今天,如何观测众多微服务.快速理清服务间的依赖.如何对服务之间的调用性能进行衡量,成了摆在大家面前的难题.对此,Skywalking应运而生,它是托管在 Apache 基金会下 ...

  5. 从Purge机制说起,详解GaussDB(for MySQL)的优化策略

    本文分享自华为云社区<[华为云MySQL技术专栏]GaussDB(for MySQL) Purge优化>,作者:GaussDB 数据库. 在MySQL中,尤其是在使用InnoDB引擎时,P ...

  6. substr()函数用法

    substr()函数: 定义和用法: substr()返回字符串的一部分 如果start参数是负数且length小于等于start,则length为0 语法: substr(starting,star ...

  7. MYSQL中怎么查询LONGBLOB类型数据的大小

    在MySQL中,LONGBLOB 是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据.但是,LONGBLOB 数据类型本身并不直接存储数据的大小(长度).它存储的是二进制数据的实际内容. ...

  8. CF1854E Games Bundles

    乱搞题 设个 \(dp[i]\) 表示和为 \(i\) 的子序列个数,那么转移是容易的, \(dp[j]+=dp[j-i]\) ,然后就判下 \(dp[60]+dp[60-i]\) 是否大于 \(m\ ...

  9. 如何设置 QEMU 输出到控制台并使用 Shell 脚本自动化

    如何设置 QEMU 输出到控制台并使用 Shell 脚本自动化 原文:How to Setup QEMU Output to Console and Automate Using Shell Scri ...

  10. .NET CORE 部署提示 An error occurred while starting the application.

    错误提示: 解决方法 检查一下nuget引用包 是否更新了版本,如果升级或者降级了版本,需要将新的dll文件更新一下