使用生成式人工智能使机器人能够通过 ReMEmbR 进行推理和行动

将基础 LLM 的强大语言理解能力与视觉转换器(ViT) 的视觉功能相结合,将文本和图像投影到同一嵌入空间中。它们可以获取非结构化的多模态数据,对其进行推理,并以结构化格式返回输出。基于广泛的预训练基础,它们可以通过提供新的提示或参数高效的微调,轻松适应不同的视觉相关任务。

它们还可以与实时数据源和工具集成,以便在不知道答案时请求更多信息,或在知道答案时采取行动。LLM 和 VLM 可以充当代理,推理数据以帮助机器人执行可能难以定义的有意义的任务。

在之前的文章《利用 NVIDIA Jetson 将生成式 AI 带入生活》中,我们演示了您可以在 NVIDIA Jetson Orin 设备上运行 LLM 和 VLM,从而实现一系列新功能,例如零样本物体检测、视频字幕和边缘设备上的文本生成。

但是,你如何将这些进步应用于机器人的感知和自主性?在将这些模型部署到现场时,你面临哪些挑战?

在这篇文章中,我们讨论了 ReMEmbR,这是一个结合了 LLM、VLM 和检索增强生成(RAG) 的项目,使机器人能够根据在数小时到数天的长期部署期间所看到的内容进行推理并采取行动。

ReMEmbR 的记忆构建阶段使用 VLM 和矢量数据库来高效构建长期语义记忆。然后,ReMEmbR 的查询阶段使用LLM 代理对该记忆进行推理。它是完全开源的,可在设备上运行。

ReMEmbR 解决了在机器人应用中使用 LLM 和 VLM 时面临的许多挑战:

如何处理大背景。
如何推理空间记忆。
如何构建基于提示的代理来查询更多数据,直到用户的问题得到解答。
为了更进一步,我们还构建了一个在真实机器人上使用 ReMEmbR 的示例。我们使用 Nova Carter 和NVIDIA Isaac ROS实现了这一点,并分享了我们采用的代码和步骤。有关更多信息,请参阅以下资源:

ReMEmbR网站
/NVIDIA-AI-IOT/remembr GitHub 存储库
ReMEmbR:为机器人导航构建和推理长视界时空记忆论文

视频 1. 使用 LLM Agent ReMEmbR 增强机器人导航

ReMEmbR 用于长期空间和时间记忆、推理和行动

人们越来越希望机器人能够长时间感知周围环境并与之互动。机器人每次部署的时间长达数小时甚至数天,它们会偶然感知不同的物体、事件和位置。

为了使机器人能够在长期部署的场景中理解和回答需要复杂的多步骤推理的问题,我们构建了 ReMEmbR,一种用于具身机器人的检索增强记忆。

ReMEmbR 为机器人构建可扩展的长视界记忆和推理系统,以提高其感知问答和语义行动的能力。ReMEmbR 包括两个阶段:记忆构建和查询。

在记忆构建阶段,我们利用 VLM 使用向量数据库构建结构化记忆。在查询阶段,我们构建了一个 LLM 代理,它可以循环调用不同的检索函数,最终回答用户提出的问题。

该图显示了将图像和提示输入到视频字幕生成器中。然后,字幕被嵌入并输入到矢量数据库中,同时输入位置和时间信息。查询阶段包括用户向 LLM 查询“最近的电梯在哪里?”的问题。LLM 使用矢量数据库的文本、位置和时间查询对矢量数据库进行推理。当 LLM 代理准备好回答问题时,它会调用应答函数,生成响应,并回答用户的问题,包括可导航的 xyz 位置。
图 1.完整的 ReMEmbR 系统

建立更聪明的记忆

ReMEmbR 的记忆构建阶段就是让记忆为机器人服务。当您的机器人已经部署了数小时或数天时,您需要一种有效的方式来存储这些信息。视频很容易存储,但很难查询和理解。

在构建记忆的过程中,我们拍摄短视频片段,使用NVIDIA VILA字幕 VLM 为其添加字幕,然后将其嵌入到 MilvusDB 矢量数据库中。我们还将来自机器人的时间戳和坐标信息存储在矢量数据库中。

这种设置使我们能够高效地存储和查询机器人内存中的各种信息。通过使用 VILA 捕获视频片段并将其嵌入 MilvusDB 矢量数据库,系统可以记住 VILA 可以捕获的任何内容,从动态事件(例如走动的人和特定的小物体)一直到更一般的类别。

使用矢量数据库可以轻松添加新类型的信息以供 ReMEmbR 考虑。

ReMEmbR 剂

由于数据库中存储了如此长的记忆,标准的 LLM 很难对长上下文进行快速推理。

ReMEmbR 代理的 LLM 后端可以是NVIDIA NIM 微服务、本地设备上的 LLM 或其他 LLM API。当用户提出问题时,LLM 会生成  对数据库的查询,以迭代方式检索相关信息。LLM 可以根据用户提出的问题查询文本信息、时间信息或位置信息。此过程重复进行,直到问题得到解答。

我们为 LLM 代理使用这些 亚马逊数据库 不同的工具,使机器人不仅能够回答如何前往特定地点的问题,还能进行空间和时间推理。图 2 显示了此推理阶段可能的样子。

GIF 显示 LLM 代理被问及如何上楼。它首先确定必须在数据库中查询楼梯,但结果却显示室外楼梯不够。然后,它查询并返回电梯,电梯可能足够了。然后,LLM 查询数据库以查找室内楼梯。它发现电梯是一个足够好的答案,并将其作为问题的答案返回给用户。
图 2. ReMEmbR 查询和推理流程示例

特殊数据

在真实机器人上部署 ReMEmbR

为了演示如何将 ReMEmbR 集成到真实机器人中,我们使用 ReMEmbR 与 NVIDIA Isaac ROS 和 Nova Carter 构建了一个演示。Isaac ROS 建立在开源ROS 2 软件框架之上,是加速计算包和 AI 模型的集合,为世界各地的 ROS 开发人员带来 NVIDIA 加速。

在演示中,机器人回答问题并引导人们在办公环境中活动。为了揭开应用程序构建过程的神秘面纱,我们想分享我们采取的步骤:

构建占用网格图

运行内存构建器
运行 ReMEmbR 代理
添加语音识别
构建占用网格图
我们采取的第一步是创建 财务文件的最佳云存储 环境地图。为了构 建矢量数据库,ReMEmbR 需要访问单目相机图像以及全局位置(姿势)信息。

图中箭头指向的 Nova Carter 机器人 3D 激光雷达 + 里程表被输入到 Nav2 2D SLAM 管道中,用于构建地图。
图 3. 使用 Nova Carter 构建占用网格图
根据您的环境或平台,获取全局姿势信息可能具有挑战性。幸运的是,使用Nova Carter时这很简单。Nova Carter 由 Nova Orin 参考架构提供支持,是一个完整的机器人开发平台,可加速下一代自主移动机器人 (AMR) 的开发和部署。它可能配备 3D LIDAR 来生成准确且全局一致的度量地图。

GIF 显示了使用 Nova Carter 在线构建的 2D 占用网格。随着机器人在环境中移动,地图会随着时间的推移逐渐填满。
图 4. FoxGlove 使用 Nova Carter 构建的占用网格地图可视化
通过遵循Isaac ROS 文档,我们通过遥控机器人快速构建了占用地图。该地图随后用于构建 ReMEmbR 数据库时的定位以及最终机器人部署的路径规划和导航。

运行内存构建器

创建环境地图后,第二步是填充 ReMEmbR 使用的矢量数据库。为此,我们遥控机器人,同时运行AMCL进行全局定位。有关如何使用 Nova Carter 执行此操作的更多信息,请参阅教程:使用 Isaac Perceptor 和 Nav2 进行自主导航。

系统图显示运行 ReMEmBr 演示内存构建器。占用网格图用作输入。VILA 节点为来自摄像头的图像添加字幕。字幕和定位信息存储在矢量数据库中。
图 5. 运行 ReMEmBr 内存构建器
在后台运行定位功能的情况下,我们启动了两个专门用于记忆构建阶段的附加 ROS 节点。

第一个 ROS 节点运行VILA模型来为机器人摄像头图像生成字幕。此节点在设备上运行,因此即使网络不稳定,我们仍然可以构建可靠的数据库。

使用NanoLLM进行量化 cg 线索 和推理,可以更轻松地在 Jetson 上运行此节点。该库以及许多其他库都包含在Jetson AI Lab中。甚至还有一个最近发布的 ROS 包 ( ros2_nanollm ),可轻松将 NanoLLM 模型与 ROS 应用程序集成。

第二个 ROS 节点订阅 VILA 生成的字幕以及 AMCL 节点估计的全局姿势。它为字幕构建文本嵌入,并将姿势、文本、嵌入和时间戳存储在矢量数据库中。

运行 ReMEmbR 代理

该图显示,当用户有问题时,代理节点会利用 AMCL 中的姿势信息,并循环生成对矢量数据库的查询。当 LLM 有答案时,如果答案是机器人的目标位置,则会在目标姿势主题上发送一条消息,该消息使用 Nav2 导航机器人。
图 6. 运行 ReMEmbR 代理来回答用户查询并导航到目标姿势
在我们填充矢量数据库之后,ReMEmbR 代理就拥有了回答用户查询和产生有意义的操作所需的一切。

第三步是运行现场演示。为了使机器人的记忆保持静态,我们禁用了图像字幕和记忆构建节点,并启用了 ReMEmbR 代理节点。如前所述,ReMEmbR 代理负责接受用户查询、查询矢量数据库并确定机器人应采取的适当操作。在本例中,操作是与用户查询相对应的目的地目标姿势。

然后,我们通过手动输入用户查询对系统进行了端到端测试:

“带我去最近的电梯”
“带我去可以吃点东西的地方”

ReMEmbR 代理确定最佳目标姿势并将其发布到/goal_pose主题。然后,路径规划器会生成一条全局路径,供机器人遵循以导航至该目标。

添加语音识别

在实际应用中,用户可能无法使用终端输入查询,需要一种直观的方式与机器人交互。为此,我们通过集成语音识别来为代理生成查询,从而使应用程序更进一步。

在 Jetson Orin 平台上,集成语音识别非常简单。我们通过编写一个包装最近发布的WhisperTRT项目的 ROS 节点来实现这一点。上的低延迟推理。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注