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

    縮小模擬現實的差距: NVIDIA Isaac 實驗室的訓練點四肢運動

    由于四足動物的運動策略涉及復雜的動力學,對機器人技術提出了重大挑戰。在現實世界中,訓練四足動物上下樓梯可能會損壞設備和環境。因此,模擬器在學習過程中的安全和時間約束方面都發揮著關鍵作用。

    利用深度強化學習(RL)在模擬環境中訓練機器人可以更有效、更安全地執行復雜任務然而,這種方法帶來了一個新的挑戰:如何確保這種在模擬中訓練的策略能夠無縫地轉移到現實世界換句話說,我們如何縮小模擬與現實的差距?

    要縮小模擬與真實的差距,需要一個高保真的、基于物理的訓練模擬器、一臺高性能的人工智能計算機(如NVIDIA Jetson)和一個具有關節級控制的機器人。強化學習研究員套件是與波士頓動力公司NVIDIA人工智能研究所合作開發的,它將這些功能結合在一起,實現了從虛擬世界到現實世界的四足動物無縫部署。這套件包括Spot 四足機器人的聯合控制 API,以控制機器人的移動方式,為NVIDIA Jetson AGX Orin有效載荷安裝硬件以運行策略(AGX Orin 單獨出售),以及在NVIDIA Isaac 實驗室為 Spot 提供模擬環境。

    Isaac Lab 是一款基于NVIDIA Isaac Sim平臺的輕量級參考應用程序,專為大規模機器人學習而優化。它利用基于 GPU 的并行化進行基于物理的大規模并行模擬,以提高最終策略性能并減少機器人中 RL 的訓練時間。憑借其高保真度物理和領域隨機化功能,Isaac Lab 彌合了模擬與現實的差距,使經過訓練的模型能夠無縫部署到物理機器人零樣本上。要了解更多信息,請參閱Supercharge Robotics Workflows with AI and Simulation Using NVIDIA Isaac Sim 4.0 and NVIDIA Isaac Lab

    這篇文章解釋了如何在 Isaac Sim 和 Isaac Lab 中為 Spot 創建移動 RL 策略,并使用 RL 研究人員工具包中的組件部署在硬件上。

    Isaac 實驗室中的四足動物運動訓練

    本節介紹如何在 Isaac 實驗室中訓練運動 RL 策略。

    Flowchart describing the training framework from Isaac Sim to Isaac Lab. The observations consist of the robot’s state, a velocity command, and the previous actions. Different parameters are randomized, such as the robot’s mass, and friction. Additionally, the robot is disturbed by applying random pushes.
    圖 1。從 Isaac Sim 到 Isaac Lab 的運動策略培訓框架的工作流程

    目標

    訓練 Spot 機器人在平坦地形上行走時跟蹤目標 x、y 和偏航基本速度。

    觀察和行動空間

    目標速度在每次重置時隨機分配,并與圖 1 所示的其他觀察結果一起提供。動作空間僅包括 12 個 DOF 關節位置,這些位置被傳遞給低級關節控制器作為參考關節位置。

    域隨機化

    在關鍵訓練階段,各種參數被隨機化,如圖 1 所示的隨機化參數。這些隨機化有助于模型確保在真實世界部署中的穩健性,這個過程被稱為領域隨機化

    網絡架構和 RL 算法細節

    運動策略被構造為具有三層的多層感知器(MLP),包含[512, 256, 128]個神經元,并使用RSL-rl的近端策略優化(PPO)算法進行訓練,該算法針對 GPU 計算進行了優化。

    先決條件

    要訓練運動策略,您需要以下內容:

    以下是一些名稱的示例:

    本節顯示如何訓練策略、回放策略以及檢查結果。

    培訓政策

    cd <path_to_isaac_lab>
    ./isaaclab.sh -p source/standalone/workflows/rsl_rl/train.py --task Isaac-Velocity-Flat-Spot-v0 --num_envs 4096 --headless --video --enable_cameras
    

    --video --enable_cameras辯論記錄了代理人在訓練期間的行為視頻;因此,它是可選的。

    發揮訓練有素的策略

    此步驟將播放經過訓練的模型,并將.pt 策略導出到日志目錄中導出文件夾中的.onx。

    cd <path_to_isaac_lab>
    ./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py --task Isaac-Velocity-Flat-Spot-v0 --num_envs 64
    

    結果

    視頻 1 演示了在 Spot 機器人上執行的經過訓練的策略。機器人能夠通過跟蹤目標 x、y 和偏航速度在平坦的地形上行走。通過 4096 個環境和 15000 次迭代,相當于在 NVIDIA RTX 4090 GPU 上大約 4 小時的訓練時間,我們實現了每秒 85000 到 95000 幀的訓練速度。

    視頻 1。在 Isaac 實驗室模擬中對 Spot 機器人進行了訓練有素的策略測試

    與 Jetson Orin 一起在 Spot 上部署經過培訓的 RL 策略

    將模擬訓練的模型部署到機器人應用的真實世界會帶來一些挑戰,包括實時控制、安全約束和其他現實世界條件。Isaac Lab 的精確物理和領域隨機化功能使其能夠將模擬中訓練的策略部署到 Jetson Orin 零發射的真實 Spot 機器人上,從而在虛擬和現實世界中實現類似的性能。

    圖 2 顯示了真實的 Spot 機器人框架策略部署,將策略神經網絡加載到實際機器人上進行推理,使用 Boston Dynamics State API 計算與模擬中相同的觀測值。

    Flowchart describing how the policy was tested from collecting information from the sensors to deriving the right actions.
    圖 2:Real Spot 機器人框架策略部署

    將訓練好的模型轉移到 Spot 機器人需要將模型部署到邊緣,并以低延遲和高頻率控制機器人。NVIDIA Jetson AGX Orin 的高性能計算能力和低延遲人工智能處理確保了快速的推理和響應時間,這對現實世界的機器人應用至關重要。模擬策略可以直接部署進行推理,從而簡化部署過程。

    先決條件

    部署需要以下內容:

    • 帶有 Jetson Orin 的 Spot 機器人使用以太網端口、電源線和安裝支架連接并配置為自定義有效載荷。按照提供的設置說明進行操作。
    • Spot RL 研究人員工具包中包括部署代碼Spot Python SDK
    • 通過藍牙連接到 Jetson Orin 的 PS4 游戲板控制器。
    • 外部 PC 通過 SSH 進入 Jetson 并運行代碼。
    • 來自 Isaac 實驗室的經過訓練的模型和配置文件。

    Orin 的硬件和網絡設置

    • 在外部 PC 上使用 Ubuntu 22.04 安裝SDK Manager
    • 按照如何使用 SDK Manager 對 L4T BSP 進行閃存的說明,使用SDK Manager將 JetPack 6 與 Flash Jetson Orin 進行閃存,完成后重新啟動。
    • 將 Jetson Orin 連接到顯示端口、鍵盤和鼠標。
    • 使用步驟 2 中設置的用戶名和密碼登錄 Jetson Orin。
    • 對于 Jetson Orin 和 Spot 之間的通信,請手動為 Jetson Orin 上的以太網端口設置有線網絡配置,閱讀有關選擇 IP 地址的說明
      • 轉到設置->網絡->有線->+ 添加 IPv4(Routes):地址 – Jetson IP 地址(我們選擇了 192.168.50.5),網掩碼 – 255.255.255.0,默認網關 -192.168.50.3
    Screenshot showing how to set the wired network IP address on Jetson Orin to communicate with Spot.
    圖 3。Spot 的 Jetson Orin 有線網絡配置

    Jetson 上的軟件設置

    首先,將模擬訓練的策略從.pt 轉換為.onx,并導出環境配置。這是在 PC 上完成的,用于培訓。

    cd <path_to_isaac_lab>
    ./isaac_lab.sh -p source/standalone/workflows/rsl_rl/play.py --task Isaac-Velocity-Flat-Spot-v0

    結果將在模型的訓練日志目錄中的導出文件夾中。該文件夾包含 env_cfg.json 和.onx 文件。

    1. 在訓練 PC 上,創建一個文件夾,然后將 params 文件夾中的 env.yaml 文件和訓練日志目錄的導出文件夾中的.onnx 文件復制到該文件夾中。

    2.在訓練 PC 上,使用 SSH 將步驟 1 中的文件夾復制到 Jetson Orin。確保電腦和 Jetson 在同一個網絡上,比如 spot 本地 wifi。在 PC 的終端上,運行以下命令:

    scp -P 20022 -r /path/to/folder/* orinusername@network_IP:<path_to_copy_files>

    3.接下來,在 Orin 的終端上從主目錄運行以下命令:

    mkdir spot-rl-deployment && cd spot-rl-deployment && mkdir models
    git clone https://github.com/boston-dynamics/spot-rl-example.git
    cd spot-rl-example && mkdir external && cd external && mkdir spot_python_sdk

    4. 使用聯合級別 API 下載Spot Python SDK,并將內容從步驟 3 解壓到 spot_python_sdk 文件夾中

    5.安裝部署代碼依賴項:

    cd ~/spot-rl-deployment/spot-rl-example
    sudo apt update
    sudo apt install python3-pip
    cd external/spot_python_sdk/prebuilt
    pip3 install bosdyn_api-4.0.0-py3-none-any.whl
    pip3 install bosdyn_core-4.0.0-py3-none-any.whl
    pip3 install bosdyn_client-4.0.0-py3-none-any.whl
    pip3 install pygame
    pip3 install pyPS4Controller
    pip3 install spatialmath-python
    pip3 install onnxruntime

    6.將 env.yaml 文件轉換為 env_cfg.json 文件:

    cd ~/spot-rl-deployment/spot-rl-example/python/utils/
    python env_convert.py
    #input the path to the .yaml file e.g ~/env.yaml
    #The file outputs a env_cfg.json file in the same directory as the .yaml file

    7.將步驟 6 中的 env_cfg.json 和步驟 2 中經過訓練的 model policy.onnx 文件移動到 models 文件夾中:

    mv env_cfg.json policy.onnx ~/spot-rl-deployment/models

    運行策略

    1.給 Spot 通電,然后按下機器人背面的電機鎖定按鈕。確保 Jetson Orin 已通電。

    Photo of back panels of the Spot robot.
    圖 4。Spot 的后拼接

    2. 在 Spot 平板電腦控制器上打開 Spot 應用程序,選擇一個機器人并按照提示登錄并操作 Spot。確保釋放平板電腦的控制權以運行策略:打開“電機狀態”菜單(電源圖標),導航到高級設置,然后選擇“釋放控制”。

    3.從終端將 PC 連接到 Spot 本地 Wi-Fi,并從終端使用 SSH 連接到 Orin。Spot 將端口 20022 轉發到其有效負載,因此 Orin 可以通過打開與 Spot IP 和該端口的 SSH 連接來訪問。IPv4 地址 192.168.50.3 是 Spot IP。

    ssh <jetson_username>@<spot_ip> -p 20022
    e.g
    ssh <jetson_username>@192.168.50.3 -p 20022

    4.使用將無線游戲板連接到 Orinbluetoothctl:

    bluetoothctl
    scan on  // wait for devices populate ~5s
    scan off
    devices

    在列出的設備中查找游戲板的 Mac 地址,將游戲板置于配對模式,按住“選擇”和“PlayStation”按鈕約 5 秒,然后在bluetoothctl中繼續。如果在完成下一步操作之前退出配對模式,您可能需要重復此過程。

    trust {MAC}
    pair {MAC}
    connect {MAC}
    exit

    5.運行 RL 策略:

    cd ~/spot-rl-deployment/spot-rl-example/python
    python spot_rl_demo.py <spot_ip> ~/spot-rl-deployment/models --gamepad-config ./gamepad_config.json

    提示時輸入 Spot 的用戶名和密碼。Spot 將站起來,但策略不會控制它,直到您按下 enter 鍵。現在,您可以使用 Gamepad 驅動機器人。再次按下 enter 鍵,將 Spot 干凈地坐下并退出。

    6.使用 PS4 游戲板進行控制。

    Image of a gaming controller with text boxes on the toggles that map to directions.
    圖 5。用戶可以使用游戲板控制器來驅動 Spot

    如 Gamepad 圖所示,使用左操縱桿進行 x、y 移動,使用右操縱桿進行旋轉。請注意,使用另一個 Gamepad(如 PS5 控制器)將需要不同的軸映射。The axis_mapping是指根據 pygame 的軸索引。The script test_controller.py from ~/spot-rl-deployment/spot-rl-example/python/utils/test_controller.py 可用于打印每個軸的值,以確定不同控制器的正確映射。

    7.使用游戲板配置選項運行策略:

    python spot_rl_demo.py ~/spot-rl-deployment/models --gamepad-config /home/gamepad_config.json

    視頻 2 展示了真實的 Spot 機器人在經過模擬訓練后的動作。

    視頻 2。Spot 機器人使用 NVIDIA Isaac 實驗室的訓練行走

    開始開發您自己的自定義應用程序

    Spot RL Researcher Kit 中提供的代碼庫是模擬中創建您自己的自定義 RL 任務然后將其部署到硬件的起點。為了構建您自己的自定義應用程序,您可以修改和擴展當前的代碼庫,通過添加您自己的機器人模型、環境、獎勵函數、課程學習、領域隨機化等。

    有關如何使用 Isaac Lab 為您的特定任務培訓策略的詳細指導,請參閱文檔。在其他機器人上部署經過訓練的策略是特定于機器人架構的;Spot 用戶可以根據應用程序的需要修改當前的部署代碼以獲取額外的觀察結果。

    獲取你的 強化學習研究工具包和 Spot 機器人,然后開始開發您的自定義應用程序。

    了解更多關于Isaac Lab的信息,該實驗室建立在Isaac Sim的基礎上。查看以下論文,了解更多靈感和任務描述:

    LinkedInInstagramXFacebook上保持最新信息。瀏覽NVIDIA 文檔YouTube頻道,并加入NVIDIA 開發者機器人論壇。通過自定進度培訓Isaac ROSIsaac Sim的網絡研討會了解更多信息。

    鳴謝 

    我們要感謝人工智能研究所的 Farbod Farshidian、Adam Miller、Fangzhou Yu 和 Michael Brauckmann,為 Spot 提供了基于 Isaac Lab 的培訓環境,并為部署經過培訓的政策提供了支持。

    +3

    標簽

    人人超碰97caoporen国产