视觉语言模型(VLM)通过将文本和图像投射到同一个嵌入空间,将基础大语言模型(LLM)强大的语言理解能力与视觉 transformer(ViT)的视觉能力相结合。VLM 可以处理非结构化的多模态数据、对其进行推理并以结构化的格式返回输出结果。由于经过大量预训练,只需要为这些模型提供新的提示或进行参数高效微调,它们就能轻松适应不同的视觉相关的任务。
这些模型还可以与实时数据源和工具集成,从而在不知道答案时请求获得更多信息或在知道答案时采取行动。LLM 和 VLM 可以作为智能体对数据进行推理,帮助机器人执行可能难以定义的有意义的任务。
在此前一篇的文章利用 NVIDIA Jetson 实现生成式 AI 中,我们展示了可以在 NVIDIA Jetson Orin 设备上运行 LLM 和 VLM,从而在边缘设备上实现零样本物体检测、视频字幕、文本生成等多种新功能。
但如何将这些先进技术应用于机器人的感知和自主运行?将这些模型部署到现场时又会面临哪些挑战?
本文将讨论 ReMEmbR。该项目结合了 LLM、VLM 和检索增强生成(RAG),使机器人能够在数小时至数天的长时程部署期间,对所看到的事物进行推理并采取行动。
ReMEmbR 在记忆构建阶段使用 VLM 和矢量数据库来高效构建长时程语义记忆,之后在查询阶段使用 LLM 智能体对该记忆进行推理。它完全开源,并且可在设备端运行。
ReMEmbR 解决了在机器人应用中使用 LLM 和 VLM 时所面临的诸多挑战:
- 如何处理大型上下文。
- 如何对空间记忆进行推理。
- 如何构建一个基于提示的智能体来查询更多数据,直到用户的问题得到解答。
我们还进一步构建了一个在真实机器人上使用 ReMEmbR 的示例。我们在这项工作中使用了 Nova Carter 和 NVIDIA Isaac ROS,并分享了我们所使用的代码和步骤。如需了解更多信息,请参见以下资源:
- ReMEmbR 网站
https://nvidia-ai-iot.github.io/remembr/
- /NVIDIA-AI-IOT/remembr GitHub 资源库
https://github.com/NVIDIA-AI-IOT/remembr
- 论文《ReMEmbR:构建适用于机器人导航的长时程时空记忆并进行推理》https://arxiv.org/abs/2409.13682
视频 1. 使用 LLM 智能体 ReMEmbR 增强机器人导航
链接:借助 ReMEmbR 利用生成式 AI 赋予机器人推理与行动能力
适用于长时程时空记忆、
推理与行动的 ReMEmbR
人们越来越期待机器人能够长时间感知环境并与之互动。机器人每次部署的时间长达数小时乃至数天,它们会偶然感知到不同的物体、事件和位置。
为了让机器人在长时间部署的场景中能够理解和回答那些需要复杂多步骤推理的问题,我们开发了 ReMEmbR 这一用于具身机器人的检索增强记忆。
ReMEmbR 为机器人构建了可扩展的长时程记忆和推理系统,提高了机器人的感知问题回答和语义行动能力。ReMEmbR 包含记忆构建和查询两个阶段。
在记忆构建阶段,我们借助 VLM,使用矢量数据库构建了结构化记忆。在查询阶段,我们建立了一个 LLM 智能体,它可以循环调用不同的检索函数,最终回答用户提出的问题。
图 1. 完整的 ReMEmbR 系统
构建更加智能的记忆
ReMEmbR 的记忆构建阶段就是让机器人的记忆工作。当机器人已被部署了数小时或数天时,就需要一种高效的方式存储这些信息。视频虽然易于存储,但却难以查询和理解。
在记忆构建过程中,我们会截取视频的短片段,使用 NVIDIA VILA 字幕生成 VLM 为其添加字幕,然后将它们嵌入到 MilvusDB 矢量数据库。我们还在该矢量数据库中存储时间戳和坐标信息。
该设置使我们能够高效地存储和查询机器人记忆中的各种信息。通过使用 VILA 捕捉视频片段,并将其嵌入到 MilvusDB 矢量数据库,该系统可以记住 VILA 能够捕捉到的任何内容,包括从四处走动的人等动态事件和特定的小物体,到更加普遍的内容类别。
使用矢量数据库可以轻松添加供 ReMEmbR 考虑的新信息。
ReMEmbR 智能体
鉴于数据库中存储的记忆如此之长,标准 LLM 很难对长上下文进行快速推理。
ReMEmbR 智能体的 LLM 后端可以是 NVIDIA NIM 微服务、本地设备上的 LLM 或其他 LLM API。当用户提出问题时,LLM 生成对数据库的查询并反复检索相关信息。LLM 可以根据用户提出的问题来查询文本信息、时间信息或位置信息。这个过程不断重复,直到问题得到解答。
我们为 LLM 智能体使用了这些不同的工具,使机器人不仅能够回答如何前往特定地点的问题,还能够进行空间和时间推理。图 2 展示了这一推理阶段的情况。
图 2. ReMEmbR 查询和推理流程示例
在真实机器人上部署 ReMEmbR
为了演示如何将 ReMEmbR 集成到真实机器人中,我们使用 ReMEmbR 与 NVIDIA Isaac ROS 和 Nova Carter 构建了一个演示。Isaac ROS 是一个基于开源 ROS 2 软件框架构建而成的加速计算软件包和 AI 模型集,它将 NVIDIA 加速技术带给了全球各地的 ROS 开发者。
在演示中,机器人回答问题并引导人们参观办公室环境。为了让大家了解如何构建该应用,以下是我们所采取的步骤:
- 构建占用栅格地图
- 运行记忆构建器
- 运行 ReMEmbR 智能体
- 添加语音识别
构建占用栅格地图
第一步是创建环境地图。为了建立矢量数据库,ReMEmbR 需要访问单目摄像头图像和全局位置(姿势)信息。
图 3. 使用 Nova Carter 绘制占用栅格地图
根据环境或平台的不同,获取全局姿势信息可能会具有一定的难度。幸运的是,在使用 Nova Carter 时,这项工作就会变得简单。由 Nova Orin 参考架构驱动的 Nova Carter 是一个完整的机器人开发平台,能够加速下一代自主移动机器人(AMR)的开发和部署。该平台在配备 3D 激光雷达后,可以生成精准且全局一致的度量地图。
图 4. 使用 Nova Carter 构建的 占用栅格地图的 FoxGlove 可视化图
按照 Isaac ROS 文档,我们通过遥控机器人,快速绘制出占用栅格地图。该地图之后在建立 ReMEmbR 数据库时被用于定位,并在最终部署机器人时被用于路径规划和导航。
运行记忆构建器
在创建环境地图后,第二步是填充 ReMEmbR 使用的矢量数据库。为此,我们在遥控机器人的同时,运行 AMCL 进行全局定位。有关如何使用 Nova Carter 实现这一操作的更多信息,请参见教程:使用 Isaac Perceptor 和 Nav2 进行自主导航:
https://nvidia-isaac-ros.github.io/reference_workflows/isaac_perceptor/tutorials_on_carter/demo_navigation.html
图 5. 运行 ReMEmBr 记忆构建器
在后台运行定位后,我们又启动了两个专门用于记忆构建阶段的 ROS 节点。
第 1 个 ROS 节点运行 VILA 模型,为机器人摄像头图像生成字幕。该节点在设备上运行,因此即便网络时断时续,我们也能建立一个可靠的数据库。
由于使用了 NanoLLM 进行量化和推理,在 Jetson 上运行该节点变得更加容易。Jetson AI Lab 中就有这个库和许多其他库。最近甚至还发布了一个 ROS 软件包(ros2_nanollm),用于将 NanoLLM 模型与 ROS 应用轻松集成。
第二个 ROS 节点获取 VILA 生成的标题以及 AMCL 节点估计的全局姿态。它为字幕建立文本嵌入,并将姿势、文本、嵌入和时间戳存储到矢量数据库中。
运行 ReMEmbR 智能体
图 6. 运行 ReMEmbR 智能体 以回答用户查询并导航至目标姿势
在填充了矢量数据库后,就满足了 ReMEmbR 智能体回答用户查询和生成有意义动作所需的一切条件。
第三步是运行现场演示。为了使机器人的记忆保持静态,我们禁用了图像字幕生成和记忆构建节点,并启用了 ReMEmbR 智能体节点。如前所述,ReMEmbR 智能体负责接收用户查询、查询矢量数据库,并确定机器人应采取的适当行动。在本例中,该行动是与用户查询相对应的目的地目标姿势。
然后,我们通过手动输入用户查询,对系统进行了端到端测试:
“带我去最近的电梯”
“带我去一个可以吃零食的地方”
ReMEmbR 智能体确定最佳目标姿势并将其发布到 /goal_pose 主题中。然后,路径规划器会生成一条全局路径,将机器人导航至该目标。
添加语音识别
在实际应用中,用户很可能无法使用终端来输入查询,因此需要一种直观的方式与机器人进行交互。为此,我们进一步开发了该应用,集成了语音识别功能来为该智能体生成查询。
在 Jetson Orin 平台上集成语音识别功能十分简单。为此,我们编写了一个 ROS 节点,该节点封装了最近发布的 WhisperTRT 项目。WhisperTRT 利用 NVIDIA TensorRT 优化了 OpenAI 的 whisper 模型,从而在 Jetson AGX Orin 和 NVIDIA Jetson Orin Nano 上实现了低延迟推理。
WhisperTRT ROS 节点使用 PyAudio 直接访问麦克风,并在语音主题上发布识别出的语音。
图 7. 通过将语音识别与 WhisperTRT 集成, 实现自然的用户交互
全部整合
通过将所有这些部件整合到一起,我们创建了该机器人的完整演示:
https://www.youtube.com/watch?v=JlYVBAQC0tQ
入门
希望这篇文章能激发您探索机器人领域中的生成式 AI 的兴趣。如要了解更多有关本文内容的信息、试用 ReMEmBr 代码和开始构建您自己的生成式 AI 机器人应用,请参见以下资源:
- ReMEmbR 网站
- https://nvidia-ai-iot.github.io/remembr/
- /NVIDIA-AI-IOT/remembr GitHub 资源库
- https://github.com/NVIDIA-AI-IOT/remembr
- 论文《ReMEmbR:构建适用于机器人导航的长时程时空记忆并进行推理》
- https://arxiv.org/abs/2409.13682
- NVIDIA Isaac ROS 文档
- https://nvidia-isaac-ros.github.io/
- Nova Carter
- https://robotics.segway.com/nova-carter/
- NVIDIA Jetson AI 实验室
- https://www.jetson-ai-lab.com/
注册 NVIDIA 开发者计划,了解更多资源和参考架构的最新信息,实现您的开发目标:
https://developer.nvidia.cn/developer-program
跟着自学培训和网络研讨会(Isaac ROS 和 Isaac Sim)进行操作:
https://learn.nvidia.com/en-us/training/find-training?q=robotics
热门跟贴