目前人工智能的进展,在诸多数据源和数据集(Youtube、Flickr、Facebook)、机器计算能力(CPU、GPU、TPU)的加持下,已经在CV、NLP上取得了许多任务(如目标检测、语义分割等)的重大进展。
但目前大部分深度学习模型训练时使用的数据来自于互联网(Internet AI),而并非来自现实世界的第一人称人类视角,这样训练得到的模型是旁观型的,它只能学习到数据中的固定模式并将其映射到标签层,并不能在真实世界中直接进行学习,也不能对真实世界作出直接影响。
而在自然界中,动物为了适应环境会不断地进化以更好的生存和生活。对于人类来说,从婴儿开始就扎根于真实世界,通过观察、移动、互动和与他人交谈来学习,因此人脑中的很多认知都依赖于主体物理身体特征与世界的连续型交互,而不是从混乱和随机的经验中学习,这才是人类感知世界的方式!智能体是在主体与环境的相互作用中出现的,并且是感觉活动的结果。
因此为了满足AI机器人能够像人类一样在真实世界中实践型学习,具身智能(Embodied AI)逐渐成为一个热门的讨论点,或许它就是通往通用人工智能的关键钥匙。具身的含义不是身体本身,而是与环境交互以及在环境中做事的整体需求和功能,这意味着机器人应该像人类一样通过观察、移动、说话和与世界互动来学习。
旁观型标签学习方式 v.s. 实践性概念学习方法
Internet AI从互联网收集到的图像、视频或文本数据集中学习,这些数据集往往制作精良,其与真实世界脱节、难以泛化和迁移。
Embodied AI通过与环境的互动,虽然以第一视角得到的数据不够稳定,但这种类似于人类的自我中心感知中学习,从而从视觉、语言和推理到一个人工具象( artificial embodiment),可以帮助解决更多真实问题。
一个Embodied AI中的经典任务如下图所示,智能体必须先理解问题“汽车的颜色是什么”,然后找到汽车,再回答问题是“橙色”。因此智能体必须根据其对世界的感知、潜在的物理约束以及对问题的理解,学习将其视觉输入映射到正确的动作。
Embodied AI一般需要测量、定位、导航、理解、实施、回答。主要有以下子任务:
虚拟环境模拟器将承担以前由监督数据集扮演的角色。数据集一般由房屋、实验室、房间或外部世界的 3D 场景组成,然后模拟器允许具身agent与环境进行物理交互,如观察、移动并与环境交互等等,甚至可以与其他agent或人类交谈。为了使虚拟环境更贴近现实,其一般需要构建以下特征:
具身智能研究任务主要类型分别是视觉探索、视觉导航和具身QA。
Embodied AI:集成 环境理解、智能交互、认知推理、规划执行于一体的系统方案
大语言模型通过包罗万象的各种tokens的训练,蕴含的知识和思维逻辑能力,可以作为面向机器人的总体规划师(General Planner)
人类给出自然语言指令,同时通过文本的形式给出关于robot具有的能力的API定义。将人类的指令和API文档给到大语言模型,大语言模型会根据API文档生成一段可以执行的代码,机器人根据该代码,自主完成相应的任务。
Meta 的 FAIR 实验室发布的Segment Anything Model (SAM),是一种最先进的图像分割模型,旨在改变计算机视觉领域。SAM 基于对自然语言处理 (NLP) 产生重大影响的基础模型(Foundation Model)。它专注于提示分割任务 (promptable segmentation tasks),使用提示工程来适应不同的下游分割问题。同时SAM3D可以将分割任务从二维转到三维的水平,可以在激光扫描下做分割任务。
https://openaccess.thecvf.com/content/CVPR2024/supplemental/Cheng_YOLO-World_Real-Time_Open-Vocabulary_CVPR_2024_supplemental.pdf
在YOLO-World模型中实现的开放词汇检测(Open-Voc Detection),可以从图片中找到某一个bonding box,使得其和用户的query匹配。同时也可以上升到三维,在点云中实现检测。
多模态大模型通过图像和文本的输入,获得图像中的基础的信息,实现像素级别的细粒度Grounding(相对于bonding box等信息密度更高),表征大语言模型的理解能力的大幅度提高。
上面第一个图可以看到模型很准确地对图像中的内容进行识别。虽然输入的图片是相同的,但是prompt的不同也会导致box圈出来的内容不同,prompt的多样性使得Grounding具有更好的针对性。
上升到3D,多模态,多任务的LLM,可以让机器人具有更加通用的场景理解能力。
对于具身智能来说,相应的数据集非常少。之所以叫做数据引导,是因为在该领域数据存在一个上限,很难到很大的规模。因此现在考虑使用已有的视频数据进行引导学习。用已有的视频引导机器人学习,因此不需要太多的数据,可以从广泛的互联网上筛选出来有用的数据。但是也有很大的缺陷,不仅是信息的表征完整度,还是内在的迁移能力等都有很大的局限性。
轻量级的硬件:没有包含庞大的躯干和双臂,只是对末端进行处理。
在一比一的假爪上安装摄像头,采集各种数据,采集完数据后部署到机器上面。(二指的开合假具)
人带上五指手套,通过深度摄像头对末端进行追踪,从而精确地捕捉到人在操作的时候末端的位置在3D环境中位置的表示,最后映射在四指的机器臂上。
和上面两种不太一样,上面两种都会有数据格式的转换,但是HIRO Hand是人在手上佩戴抓环和指套,相当于人手把手带着机械臂进行一些操作、抓取,这样收集的数据没有转换。
重量级硬件,VR显示器+VR手套方案,成本很高,但是采集的信息的含量很高。
但是在硬件中采集,采集到的数据总归是有限的。
Propose- generate- learn cycle
先假设一个任务,然后基于提出的任务来生成环境,构建出来环境之后再进行学习。通过这样的闭环,实现针对不同任务的数据的大规模的收集。但是有一些问题,在propose和generate环节中可控性难以把握。
demonstrations augmentation
基于之前收集到的一组展示,先进行MimicGen的分割分段,然后对其进行多样化,从而可以把一条数据扩展到很多条。相对于RoboGen,在数据收集的可控性上得到了一定的提升。
重点是怎么去用神经网络的输出结果
直接把状态放到模型中,当作时间序列去处理,最后输出的也是时间序列。
把时间序列拆解到每一步,每一步进行diffusion。
图片经过Affordances model之后生成出来两张图,第一张标出可以用来接触的像素点,第二张图标出可以接触的矢量方向。后续进一步对灵巧手可以做的动作更细一步划分。之后进一步上升到3D,直接在3D的点云上做的描述。
直接利用大语言模型做QA。
利用大语言模型的理解和推理能力得到机器人要走的位置。用户输入Query,ManipLLM输出对应的文本,随后在文本中提取出contact的点和移动的具体方向。
通过将用户的Prompt做拆解,从而把hard的任务转化为多个simple的任务,针对简单的方法调用API库等方式进行执行
机器人在执行的过程中不可避免的会犯错,通过人的观察来阻止或者纠正犯错,从而更好地完成任务。
在机器人完成任务的过程中,给出语言或文本的提示,帮助机器人更好地完成任务。
Understanding the world in terms of objects and the possible interplays with them is an important cognition ability, especially in robotics manipulation, where many tasks require robot-object interactions.
输入模型一个点云,告诉模型要执行的操作,模型直接预测出下一个状态的点云。
在图像层面预测当一个物体上下左右移动后,环境会变得怎么样,可以直接基于环境作出模型的预测。如果能有一个非常健全的模型预测,可以由此设计各种各样的控制器,也可以在完成各种操作时可以做到矫正,选择一个优的操作。
机器人操作系统(Robot Operating System, ROS)自2007年诞生以来,已经极大地推动了机器人技术的发展。ROS提供了一套软件库与工具集,使得机器人的不同组件之间可以通信,并允许开发者在现有的操作系统(如Linux、Windows、Mac)上进行机器人研发。随着机器人技术的不断进步与复杂化,传统的ROS开始显示出其设计和架构的局限性,特别是在满足当今机器人技术发展中的稳定性、生命周期管理、多机协同以及数据加密等方面的需求。这些局限促成了ROS2的诞生。
ROS2不仅仅是传统ROS的升级版,而是一次彻底的革新和重新设计,它旨在解决随着机器人应用场景的不断扩展而出现的新挑战。ROS2在继承了ROS强大的功能和灵活的通信机制的基础上,对架构进行了全面的优化与改进,以适应更加多样化和高要求的机器人研发项目。
ROS2的主要特点和优势:
ROS2的应用领域:
凭借以上特点,ROS2在多个领域都展现出了广泛的应用潜力,包括但不限于:
ROS2作为新一代的机器人操作系统,不仅继承了ROS的优良传统,还在性能、安全性、可用性等方面做了全面的提升。其全新的设计理念和丰富的功能,将为未来机器人技术的发展带来更广阔的空间。
在机器人技术领域,创建高效、灵活的机器人应用程序一直是一个挑战,其中涉及到硬件的集成、算法的开发以及人工智能模型的应用,这些组件之间的高效通信尤为关键。为了简化机器人应用的创建流程并提升性能,Dataflow-oriented Robotic Application(dora-rs)框架应运而生,dora-rs旨在快速而简便地构建机器人应用程序。
dora-rs 的核心特点:
尽管 dora-rs 还处于实验阶段,可能存在一些bug,但其开发团队正致力于提高稳定性,目标是打造一个高效且易用的机器人应用开发框架。
dora-rs的具体细节:
相比于当前使用 Python 的 ROS2,dora-rs的速度可提高多达 17 倍。这得益于其自有的共享内存服务器和Apache Arrow 实现的零拷贝数据传输。
dora-rs 通过在同一机器上使用共享内存,在分布式机器上使用 TCP 进行节点间的通信。其共享内存实现能够跟踪跨进程的消息,并在消息过时时丢弃它们。此外,共享内存槽被缓存,避免了新的内存分配。
节点间的通信采用 Apache Arrow 数据格式。Apache Arrow 是一种为平面和层级数据设计的通用内存格式,支持零拷贝读取,无需序列化开销即可实现快速数据访问。
dora-rs 使用 OpenTelemetry 进行日志、指标和追踪记录,实现了数据和遥测信息之间的链接,使得 dora-rs 的遥测数据可以被大多数如 Elasticsearch、Prometheus、Datadog 等后端收集。
dora-rs 为 Python 实现了热重载功能,这意味着你可以在运行时更改 Python 代码,同时保持状态不变。通过使用特定的功能标记,dora-rs 会监视代码变更并重载已修改的节点,确保系统的灵活性和持续性能。
之所以使用dora-rs:让机器人程序的构建更加的简单,不需要c或者C++对底层进行开发,只需要使用python进行构建即可。
什么是机器人应用程序:
关键:多个循环并行运行,并且相互通信。例如,网络摄像头循环以一定的频率推送新图像。有一个独立的AI模型的循环,来进行计算。并且他们直接的操作是非阻塞的。关键是将他们绑定在一起,并以一种非常高效的方式去进行通信,这是dora-rs可以完成的事情。dora-rs引入节点的概念。节点是可以并行运行的独立主循环。边是进行数据交流的内容。节点之间是通过订阅/发布的模式进行通信的。完成这样的通信循环只需要YAML配置文件即可完成。
为了让数据的交换效率极高,需要一个统一的消息分享的方式。因为不可能每一种循环用一种语言进行交流,彼此之间无法快速沟通。在这里,dora使用的是arrow,它定义了一种统一的方式,例如定义数组。如果从C,C++转化到python,可以正常地进行沟通。在这种统一的内存布局的方式下,数据的传输就可以在不进行复制的情况下进行传输。可以将其看成是一个指针。在机器人上每个时刻都会有大量的数据,比如视频流,音频流等,如果需要复制,开销是非常大的。
在如此高性能通信的情况下,可以将大语言模型部署进行相互之间的通信,实现具身智能的demo
图生文:从图片中理解内容,并生成文字。可以将人说的话转换成文字进行输入,多模态大模型根据画面和人类的语言,生成文字,然后转成语音表达出来。
dora-rs还可以进行热启动,在修改某一行代码的时候,不需要关闭机器人,然后重新启动,重制各种不同的传感器。
https://mp.weixin.qq.com/s/ASjDUxOw0puiRfucdpK40g
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有