• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    邊緣計算

    借助 ReMEmbR,生成式 AI 賦予機器人推理和行動能力

    視覺語言模型 (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 完成了這一步,并分享了我們的代碼和步驟。有關更多信息,請參閱以下資源:

    視頻 1. 使用 LLM Agent ReMEmbR 增強機器人導航

    用于長視距空間和時間記憶、推理和動作的 ReMEmbR

    人們越來越期望機器人能夠長時間感知周圍環境并與之交互。機器人每次部署數小時(如果不是數天的話),它們會順便感知不同的物體、事件和位置。

    為了讓機器人能夠在機器人長期部署的場景中理解和回答需要復雜多步驟推理的問題,我們構建了 ReMEmbR,這是一種用于實體化機器人的檢索增強型內存。

    ReMEmbR 為機器人構建了可擴展的長視距內存和推理系統,從而提高了機器人的感知問答和語義行動能力。ReMEmbR 包含兩個階段:內存構建和查詢。

    在構建內存階段,我們利用 VLM 通過向量數據庫構建結構化內存。在查詢階段,我們構建了一個 LLM 代理,可以在循環中調用不同的檢索函數,最后回答用戶提出的問題。

    The diagram shows an image and a prompt being fed into a video captioner. The caption is then embedded and fed into a vector database, along with the position and time information. A querying phase consists of a user querying an LLM with the question, “Where is the nearest elevator?”  The LLM reasons over the vector database by using text, position, and time queries of the vector database. When the LLM agent is ready to answer the question, it calls the answering function, generates a response, and answers the user question, including a navigable xyz position.
    圖 1.完整的 RembR 系統

    構建更智能的內存?

    ReMEmbR 的內存構建階段就是讓內存為機器人服務。當機器人部署數小時或數天后,您需要一種高效的方式來存儲這些信息。視頻易于存儲,但難以查詢和理解。

    在構建內存期間,我們會截取短視頻片段,使用 NVIDIA VILA 字幕 VLM 為其添加說明,然后將其嵌入到 MilvusDB 向量數據庫中。我們還會將機器人的時間戳和坐標信息存儲到向量數據庫中。

    這種設置使我們能夠高效地存儲和查詢機器人內存中的各種信息。通過使用 VILA 捕獲視頻片段并將其嵌入到 MilvusDB 向量數據庫中,系統可以記住 VILA 可以捕獲的任何內容,從人走動等動態事件和特定的小物體,一直到更一般的類別。

    使用向量數據庫可以輕松添加供 ReMEmbR 考慮的新型信息。

    ReMEmbR 智能體?

    鑒于數據庫中存儲的內存如此長,標準 LLM 難以在漫長的環境中快速推理。

    ReMEmbR 代理的 LLM 后端可以是 NVIDIA NIM 微服務 、本地設備上的 LLM 或其他 LLM API。當用戶提出問題時,LLM 會生成對數據庫的查詢,并以迭代方式檢索相關信息。LLM 可以根據用戶的詢問內容查詢文本信息、時間信息或位置信息。這個過程會重復,直到問題得到解答。

    我們為 LLM 智能體使用這些不同的工具,使機器人不僅能夠回答有關如何前往特定位置的問題,還能夠實現空間和時間推理。圖 2 展示了此推理階段的外觀。

    GIF shows the LLM agent being asked how to get upstairs. It first determines that it must query the database for stairs, for which it retrieves an outdoor staircase that is not sufficient. Then, it queries and returns an elevator, which may be sufficient. The LLM then queries the database for stairs that are indoors. It finds the elevator as a sufficient response and returns that to the user as an answer to their question.
    圖 2. ReMEmbR 查詢和推理流程示例

    在真正的機器人上部署 ReMEmbR?

    為了演示如何將 ReMEmbR 集成到真正的機器人中,我們使用 ReMEmbR 以及 NVIDIA Isaac ROS 和 Nova Carter 構建了一個演示。Isaac ROS 基于開源 ROS 2 軟件框架構建,是一套加速計算包和 AI 模型的集合,可為全球的 ROS 開發者帶來 NVIDIA 的加速能力。

    在演示中,機器人回答問題并指導人們了解辦公室環境。為了揭開構建應用程序的神秘面紗,我們想分享一下我們采取的步驟:

    • 構建占用率網格圖
    • 運行內存構建器
    • 運行 RembR 代理
    • 添加語音識別

    構建占用率網格圖?

    第一步是創建環境地圖。為了構建向量數據庫,ReMEmbR 需要訪問單目攝像頭圖像以及全局位置(姿態)信息。

    Picture shows the Nova Carter robot with an arrow pointing at the 3D Lidar + odometry being fed into a Nav2 2D SLAM pipeline, which is used to build a map.
    圖 3. 使用 Nova Carter 構建占用網格圖。

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

    GIF shows a 2D occupancy grid being built online using Nova Carter. The map fills out over time as the robot moves throughout the environment.
    圖 4. 使用 Nova Carter 構建的占用網格地圖的 FoxGlove 可視化。

    通過遵循 Isaac ROS 文檔 ,我們通過遠程操作機器人快速構建了占用率地圖。該地圖后來用于在構建 ReMEmbR 數據庫時進行定位,以及在最終機器人部署時進行路徑規劃和導航。

    運行內存構建器?

    創建環境地圖后,第二步是填充 ReMEmbR 使用的向量數據庫。為此,我們遠程操作機器人,同時運行 AMCL 進行全局定位。有關如何使用 Nova Carter 執行此操作的更多信息,請參閱 教程:使用 Isaac Perceptor 和 Nav2 進行自主導航

    The system diagram shows running the ReMEmBr demo memory builder. The occupancy grid map is used as input. The VILA node captions images from the camera. The captions and localization information are stored in a vector database.
    圖 5.運行 ReMEmBr 內存構建器

    在后臺運行定位后,我們又啟動了兩個專用于內存構建階段的 ROS 節點。

    第一個 ROS 節點運行 VILA 模型,為機器人攝像頭圖像生成說明。該節點在設備上運行,因此即使網絡是間歇性的,我們仍然可以構建可靠的數據庫。

    借助于量化和推理的 NanoLLM ,在 Jetson 上運行此節點變得更加容易。 Jetson AI 實驗室中包含了此庫以及許多其他庫。甚至還有最近發布的 ROS 包( ros2_nanollm ),可輕松將 NanoLLM 模型與 ROS 應用集成。

    第二個 ROS 節點訂閱 VILA 生成的描述以及 AMCL 節點估計的全局姿態。它為描述構建文本嵌入,并將姿態、文本、嵌入和時間戳存儲在向量數據庫中。

    運行 ReMEmbR 代理?

    Diagram shows that when the user has a question, the agent node leverages the pose information from AMCL and generates queries for the vector database in a loop. When the LLM has an answer, and if it is a goal position for the robot, a message is sent on the goal pose topic, which navigates the robot using Nav2.
    圖 6. 運行 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 直接訪問麥克風,并在語音主題上發布識別到的語音。

    The diagram shows taking in user input, which is recognized with a WhisperTRT speech recognition node that publishes a speech topic that the ReMEmbR agent node listens to.
    圖 6.集成語音識別與 WhisperTRT,實現自然用戶交互。

    全部整合在一起?

    結合所有組件,我們創建了機器人完整的演示

    開始使用?

    我們希望本文能激勵您探索機器人領域的 生成式 AI 。如需詳細了解本文中的內容,試用 ReMEmBr 代碼,并開始構建您自己的生成式 AI 機器人應用,請參閱以下資源:

    注冊 NVIDIA 開發者計劃 ,獲取有關其他資源和參考架構的更新,以支持您的開發目標。

    隨時了解 LinkedIn Instagram X Facebook 上的最新動態。如需了解更多信息,請瀏覽 我們的文檔 ,并通過 我們的開發者論壇 YouTube 頻道加入機器人社區。歡迎關注 我們的自主培訓 和網絡會議( Isaac ROS Isaac Sim )。

    ?

    +3

    標簽

    人人超碰97caoporen国产