視覺語言模型 (VLM)通過將文本和圖像投影到同一嵌入空間,將基礎 LLM 的強大語言理解能力與 視覺 Transformer (ViT)的視覺功能相結合。它們可以獲取非結構化多模態數據并對其進行推理,然后以結構化格式返回輸出。這些模型基于廣泛的預訓練基礎構建,可以通過提供新提示或參數高效微調輕松適應不同的視覺相關任務。
它們還可以與實時數據源和工具集成,以便在不知道答案時請求獲取更多信息,或在知道答案時采取行動。LLMs 和 VLMs 可以充當代理,對數據進行推理,幫助機器人執行可能難以定義的有意義任務。
在之前的文章“ 使用 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/記住 GitHub 庫
- ReMEmbR:為機器人導航構建長距時空記憶并進行推理 論文
用于長視距空間和時間記憶、推理和動作的 ReMEmbR
人們越來越期望機器人能夠長時間感知周圍環境并與之交互。機器人每次部署數小時(如果不是數天的話),它們會順便感知不同的物體、事件和位置。
為了讓機器人能夠在機器人長期部署的場景中理解和回答需要復雜多步驟推理的問題,我們構建了 ReMEmbR,這是一種用于實體化機器人的檢索增強型內存。
ReMEmbR 為機器人構建了可擴展的長視距內存和推理系統,從而提高了機器人的感知問答和語義行動能力。ReMEmbR 包含兩個階段:內存構建和查詢。
在構建內存階段,我們利用 VLM 通過向量數據庫構建結構化內存。在查詢階段,我們構建了一個 LLM 代理,可以在循環中調用不同的檢索函數,最后回答用戶提出的問題。

構建更智能的內存?
ReMEmbR 的內存構建階段就是讓內存為機器人服務。當機器人部署數小時或數天后,您需要一種高效的方式來存儲這些信息。視頻易于存儲,但難以查詢和理解。
在構建內存期間,我們會截取短視頻片段,使用 NVIDIA VILA 字幕 VLM 為其添加說明,然后將其嵌入到 MilvusDB 向量數據庫中。我們還會將機器人的時間戳和坐標信息存儲到向量數據庫中。
這種設置使我們能夠高效地存儲和查詢機器人內存中的各種信息。通過使用 VILA 捕獲視頻片段并將其嵌入到 MilvusDB 向量數據庫中,系統可以記住 VILA 可以捕獲的任何內容,從人走動等動態事件和特定的小物體,一直到更一般的類別。
使用向量數據庫可以輕松添加供 ReMEmbR 考慮的新型信息。
ReMEmbR 智能體?
鑒于數據庫中存儲的內存如此長,標準 LLM 難以在漫長的環境中快速推理。
ReMEmbR 代理的 LLM 后端可以是 NVIDIA NIM 微服務 、本地設備上的 LLM 或其他 LLM API。當用戶提出問題時,LLM 會生成對數據庫的查詢,并以迭代方式檢索相關信息。LLM 可以根據用戶的詢問內容查詢文本信息、時間信息或位置信息。這個過程會重復,直到問題得到解答。
我們為 LLM 智能體使用這些不同的工具,使機器人不僅能夠回答有關如何前往特定位置的問題,還能夠實現空間和時間推理。圖 2 展示了此推理階段的外觀。

在真正的機器人上部署 ReMEmbR?
為了演示如何將 ReMEmbR 集成到真正的機器人中,我們使用 ReMEmbR 以及 NVIDIA Isaac ROS 和 Nova Carter 構建了一個演示。Isaac ROS 基于開源 ROS 2 軟件框架構建,是一套加速計算包和 AI 模型的集合,可為全球的 ROS 開發者帶來 NVIDIA 的加速能力。
在演示中,機器人回答問題并指導人們了解辦公室環境。為了揭開構建應用程序的神秘面紗,我們想分享一下我們采取的步驟:
- 構建占用率網格圖
- 運行內存構建器
- 運行 RembR 代理
- 添加語音識別
構建占用率網格圖?
第一步是創建環境地圖。為了構建向量數據庫,ReMEmbR 需要訪問單目攝像頭圖像以及全局位置(姿態)信息。

根據您所處的環境或平臺,獲取全局姿態信息可能具有挑戰性。幸運的是,使用 Nova Carter 時,這一點非常簡單。Nova Carter 由 Nova Orin 參考架構提供支持,是一個完整的機器人開發平臺,可加速新一代自主移動機器人(AMR)的開發和部署。它可能配備 3D LIDAR,以生成準確且全局一致的指標地圖。

通過遵循 Isaac ROS 文檔 ,我們通過遠程操作機器人快速構建了占用率地圖。該地圖后來用于在構建 ReMEmbR 數據庫時進行定位,以及在最終機器人部署時進行路徑規劃和導航。
運行內存構建器?
創建環境地圖后,第二步是填充 ReMEmbR 使用的向量數據庫。為此,我們遠程操作機器人,同時運行 AMCL 進行全局定位。有關如何使用 Nova Carter 執行此操作的更多信息,請參閱 教程:使用 Isaac Perceptor 和 Nav2 進行自主導航 。

在后臺運行定位后,我們又啟動了兩個專用于內存構建階段的 ROS 節點。
第一個 ROS 節點運行 VILA 模型,為機器人攝像頭圖像生成說明。該節點在設備上運行,因此即使網絡是間歇性的,我們仍然可以構建可靠的數據庫。
借助于量化和推理的 NanoLLM ,在 Jetson 上運行此節點變得更加容易。 Jetson AI 實驗室中包含了此庫以及許多其他庫。甚至還有最近發布的 ROS 包( ros2_nanollm ),可輕松將 NanoLLM 模型與 ROS 應用集成。
第二個 ROS 節點訂閱 VILA 生成的描述以及 AMCL 節點估計的全局姿態。它為描述構建文本嵌入,并將姿態、文本、嵌入和時間戳存儲在向量數據庫中。
運行 ReMEmbR 代理?

填充向量數據庫后,ReMEmbR 智能體擁有回答用戶查詢和生成有意義的操作所需的一切。
第三步是運行 實時演示 。為了使機器人的內存保持靜態,我們禁用了圖像字幕和內存構建節點,并啟用了 ReMEmbR 代理節點。如前所述,ReMEmbR 代理負責接受用戶查詢、查詢向量數據庫,并確定機器人應采取的適當操作。在本例中,該操作是與用戶查詢對應的目標目標姿態。
然后,我們通過手動輸入用戶查詢對系統進行端到端測試:
“帶我去最近的電梯”“帶我去找點零食”
ReMEmbR 智能體確定最佳目標姿態并將其發布到 /goal_pose
主題。然后,路徑規劃器生成全局路徑,供機器人遵循以導航至此目標。
添加語音識別?
在真實的應用中,用戶可能無法訪問終端輸入查詢,因此需要一種與機器人交互的直觀方式。為此,我們通過集成語音識別來為智能體生成查詢,從而使應用更進一步。
在 Jetson Orin 平臺上,集成語音識別非常簡單。為此,我們編寫了一個 ROS 節點,用于包裝最近發布的 WhisperTRT 項目。WhisperTRT 使用 NVIDIA TensorRT 優化 OpenAI 的 Whisper 模型,從而在 NVIDIA Jetson AGX Orin 和 NVIDIA Jetson Orin Nano 上實現低延遲的推理。
WhisperTRT ROS 節點使用 PyAudio 直接訪問麥克風,并在語音主題上發布識別到的語音。

全部整合在一起?
結合所有組件,我們創建了機器人完整的演示 。
開始使用?
我們希望本文能激勵您探索機器人領域的 生成式 AI 。如需詳細了解本文中的內容,試用 ReMEmBr 代碼,并開始構建您自己的生成式 AI 機器人應用,請參閱以下資源:
- ReMEmbR 網站
- /NVIDIA-AI-IOT/記住 GitHub 庫
- ReMEmbR:為機器人導航構建長時空記憶并進行推理 論文
- NVIDIA Isaac ROS 文檔
- Nova Carter
- NVIDIA Jetson AI 實驗室
注冊 NVIDIA 開發者計劃 ,獲取有關其他資源和參考架構的更新,以支持您的開發目標。
隨時了解 LinkedIn 、 Instagram 、 X 和 Facebook 上的最新動態。如需了解更多信息,請瀏覽 我們的文檔 ,并通過 我們的開發者論壇 和 YouTube 頻道加入機器人社區。歡迎關注 我們的自主培訓 和網絡會議( Isaac ROS 和 Isaac Sim )。
?