由于涉及復雜的動力學,為四足機器人制定有效的運動策略是機器人領域面臨的重大挑戰(zhàn)。在現(xiàn)實世界中訓練四足機器人上下樓梯可能會損壞設備和環(huán)境,因此,在學習過程中,仿真器在確保安全和消除時間限制方面都發(fā)揮著關鍵作用。
利用深度強化學習(RL)在仿真環(huán)境中訓練機器人,這樣可以更有效、更安全地執(zhí)行復雜任務。然而,這種方法帶來了一個新的挑戰(zhàn):如何確保在仿真環(huán)境中訓練的策略能夠無縫地切換到現(xiàn)實世界。換句話說,我們如何縮小仿真與現(xiàn)實之間的差距?
要縮小仿真與現(xiàn)實之間的差距,需要一個高保真、基于物理的訓練仿真器、一臺高性能 AI 計算機(如 NVIDIA Jetson)以及一個具有關節(jié)級控制能力的機器人。強化學習研究工具包是波士頓動力公司、NVIDIA 和波士頓動力人工智能研究所合作開發(fā)的,它整合了上述能力,實現(xiàn)了四足機器人從虛擬世界到現(xiàn)實世界的無縫部署。它包括 Spot 四足機器人的關節(jié)級控制 API(用于控制機器人如何運動)、NVIDIA Jetson AGX Orin 有效載荷運行策略所需的安裝硬件(AGX Orin 單獨出售),以及在 NVIDIA Isaac Lab 中為 Spot 提供的仿真環(huán)境。
Isaac Lab 是一個基于 NVIDIA Isaac Sim 平臺開發(fā)的輕量級參考應用程序,專為大規(guī)模機器人學習進行了優(yōu)化。它利用 GPU 并行化進行大規(guī)模物理并行仿真,以提高最終的策略效果,并減少機器人強化學習的訓練時間。憑借其高保真物理和域隨機化功能,Isaac Lab 彌合了仿真與現(xiàn)實的差距,使經過訓練的模型能夠通過零樣本無縫部署到物理機器人上。要了解更多信息,請參閱NVIDIA Isaac Sim 4.0 和 NVIDIA Isaac Lab 為機器人工作流和仿真提供強大助力。
本文解釋了如何在 Isaac Sim 和 Isaac Lab 中為 Spot 四足機器人創(chuàng)建運動強化學習策略,并使用強化學習研究工具包中的組件在硬件上部署。
在 Isaac Lab 中
訓練四足機器人運動
本章節(jié)介紹了如何在 Isaac Lab 中訓練運動強化學習策略。
圖 1. 從 Isaac Sim 到 Isaac Lab的
運動策略訓練框架工作流
目標
訓練 Spot 機器人在平地上走動時,去追蹤目標 x、y 和偏航基本速度。
觀察和行動空間
目標速度在每次重置時都會隨機分配,并與圖 1 所示的其他觀察結果一起提供。行動空間僅包括 12 個自由度關節(jié)位置,這些位置作為參考關節(jié)位置傳遞給底層關節(jié)控制器。
域隨機化
在關鍵訓練階段,對各種參數(shù)進行隨機化處理,如隨機化參數(shù)下的圖 1 所示。這些隨機化有助于模型確保現(xiàn)實世界部署的魯棒性,這個過程被稱為域隨機化。
運動策略被構建成一個具有三層的多層感知器(MLP),包含 [512、156、128] 個神經元,并使用 RSL-rl 的近端策略優(yōu)化(PPO)算法進行訓練,該算法針對 GPU 計算進行了優(yōu)化。
必備條件
要想訓練運動策略,您需要:
配備 NVIDIA RTX GPU 的系統(tǒng)。詳細的最低規(guī)格,請參閱 Isaac Sim 文檔。
NVIDIA Isaac Sim、Isaac Lab 和 RSL-rl。
使用
本章節(jié)展示了如何訓練策略、回放策略和檢查結果。
訓練一個策略
cd./isaaclab.sh-psource/standalone/workflows/rsl_rl/train.py--taskIsaac-Velocity-Flat-Spot-v0--num_envs4096--headless--video--enable_cameras
--video--enable_cameras 參數(shù)記錄了智能體在訓練過程中的行為視頻,它是可選的。
播放經過訓練的策略
該步驟將播放經過訓練的模型,并將 .pt 策略導出到日志目錄下導出文件夾中的 .onnx 中。
cd./isaaclab.sh-psource/standalone/workflows/rsl_rl/play.py--taskIsaac-Velocity-Flat-Spot-v0--num_envs64
結果
視頻 1 演示了在 Spot 機器人上執(zhí)行經過訓練的策略。機器人能夠通過跟蹤目標 x、y 和偏航速度在平地上行走。通過 4096 個環(huán)境和 15000 次迭代,相當于在 NVIDIA RTX GPU 上大約 4 小時的訓練時間,我們實現(xiàn)了每秒 85000 到 95000 幀(FPS)的訓練速度。
視頻 1. 經過訓練的策略在 Isaac Lab
仿真的 Spot 機器人上進行了測試
使用 Jetson Orin 在 Spot 機器人
上部署經過訓練的強化學習策略
將經過仿真訓練的模型部署到機器人應用的現(xiàn)實世界中會帶來一些挑戰(zhàn),包括實時控制、安全約束和其他現(xiàn)實世界的條件。Isaac Lab 具有精確的物理和域隨機化功能,使其能夠將仿真環(huán)境中訓練的策略部署到基于 Jetson Orin 零樣本的真實 Spot 機器人上,從而在虛擬和現(xiàn)實世界中實現(xiàn)類似的性能。
圖 2 顯示了真實的 Spot 機器人框架策略部署,將策略神經網(wǎng)絡加載到實際機器人上并進行推理。與仿真中相同的觀察結果是使用波士頓動力的 State API 來計算的。
圖 2. 真實 Spot 機器人框架策略部署
將訓練好的模型轉移到 Spot 機器人需要將模型部署到邊緣,并低延遲、高頻率地控制機器人。NVIDIA Jetson AGX Orin 的高性能計算能力和低延遲 AI 處理確保了快速的推理和響應,這對現(xiàn)實世界的機器人應用至關重要。仿真的策略可以直接部署并進行推理,簡化了部署流程。
必備條件
部署時需要:
Spot 機器人與 Jetson Orin 連接,并配置為使用以太網(wǎng)端口、電源線和安裝支架的自定義有效載荷,按照所提供的安裝說明進行操作。
Spot 強化學習研究工具包中的部署代碼和 Spot Python SDK。
通過藍牙連接到 Jetson Orin 的 PS4 游戲手柄控制器。
外部 PC 通過 SSH 進入 Jetson 并運行代碼。
來自 Isaac Lab 的經過訓練的模型和配置文件。
Jetson Orin 上的硬件和網(wǎng)絡設置
在配備 Ubuntu 22.04 的外部 PC 上安裝 SDK Manager。
按照“如何使用 SDK Manager 對 L4T BSP 進行刷新”的說明,使用 SDK Manager,將配備 JetPack 6 的 Jetson Orin 進行刷新。完成后重新啟動。
把 Jetson Orin 連接到顯示器端口、鍵盤和鼠標。
使用步驟 2 中設置的用戶名和密碼登錄 Jetson Orin。
為了實現(xiàn) Jetson Orin 和 Spot 之間的通信,請手動設置 Jetson Orin 上以太網(wǎng)端口的有線網(wǎng)絡配置,并閱讀有關選擇 IP 地址的說明。
a) 進入 Settings -> Network -> Wired -> + 在 IPv4(Routes)下添加信息:地址 – Jetson IP 地址(選擇 192.168.50.5)、 網(wǎng)絡掩碼 – 255.255.255.0,和默認網(wǎng)關 -192.168.50.3。
b) 點擊“Add”按鈕。
圖 3. Spot 的 Jetson Orin 有線網(wǎng)絡配置
Jetson 上的軟件設置
首先,將仿真中的訓練策略從 .pt 轉換為 .onnx 格式,并導出環(huán)境配置。這是在訓練 PC 上完成的。
cd./isaac_lab.sh-psource/standalone/workflows/rsl_rl/play.py--taskIsaac-Velocity-Flat-Spot-v0
結果將在該模型的訓練日志目錄中的導出文件夾中,該文件夾包含 env_cfg.json 和 .onnx 文件。
在訓練 PC 上創(chuàng)建一個文件夾,并將 env.yaml 文件和 .onnx 文件復制到該文件夾中。請注意:env.yaml 在 params 文件夾中,.onnx 文件在訓練日志目錄的導出文件夾中。
在訓練 PC 上使用 SSH,將步驟 1 中的文件夾復制到 Jetson Orin。確保 PC 和 Jetson 處在同一網(wǎng)絡,比如 Spot 本地 wifi。在 PC 的終端上運行以下命令:
scp-P20022-r/path/to/folder/*orinusername@network_IP:
接下來,在 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
下載具有聯(lián)合級 API 的 Spot Python SDK,并將內容解壓縮到步驟 3 中的 spot_python_sdk 文件夾中。
安裝部署代碼需要的東西:
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
把 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 #Thefileoutputsaenv_cfg.jsonfileinthesamedirectoryasthe.yamlfile
將步驟 6 中的 env_cfg.json 和步驟 2 中經過訓練的模型 policy.onnx 文件移動到 models 文件夾中:
mv env_cfg.json policy.onnx ~/spot-rl-deployment/models
運行策略
1. 啟動 Spot,然后按下機器人背面的電機鎖定按鈕,并確保 Jetson Orin 已通電。
圖 4. Spot 的背面
2. 在 Spot 平板電腦控制器上打開 Spot 應用。選擇一個機器人,按照提示登錄并操作 Spot。確保從平板電腦解除控制以運行策略:打開“Motor Status”菜單(電源圖標),導航到高級設置,然后選擇“Release Control”。
3. 將 PC 連接到 Spot 本地 wifi,并從終端通過 SSH 連接到 Orin。Spot 將端口 20022 轉發(fā)到其有效載荷,以便可以打開與 Spot IP 和該端口的 SSH 連接來訪問 Orin。IPv4 地址 192.168.50.3 是 Spot 的 IP 地址。
ssh@ -p 20022 e.g ssh @192.168.50.3 -p 20022
4. 使用 bluetoothctl 把無線游戲手柄連接到 Orin:
bluetoothctl scan on // wait for devices populate ~5s scan off devices
在列出的設備中找到游戲手柄的 Mac 地址。將游戲手柄置于配對模式,按住“Select”和“PlayStation”按鈕約 5 秒,然后繼續(xù)使用 bluetoothctl。如果在完成后續(xù)步驟之前退出了配對模式,您可能需要重復此過程。
trust {MAC} pair {MAC} connect {MAC} exit
5. 運行強化學習策略:
cd ~/spot-rl-deployment/spot-rl-example/python pythonspot_rl_demo.py~/spot-rl-deployment/models--gamepad-config./gamepad_config.json
根據(jù)提示輸入 Spot 的用戶名和密碼。Spot 將保持不變,但在按下回車鍵之前,策略不會控制它。現(xiàn)在,您可以使用游戲手柄驅動機器人。再次按下回車鍵,讓 Spot 關閉并退出。 6. 使用 PS4 游戲手柄進行控制。
圖 5. 用戶可以使用游戲手柄控制 Spot 機器人
如游戲手柄圖所示,使用左操縱桿進行 x、y 移動,使用右操縱桿進行旋轉。請注意,使用另一個游戲手柄(如 PS5 手柄)將需要不同的軸映射。axis_mapping 是指基于 pygame 的軸索引。
來自 ~/spot-rl-deployment/spot-rl-example/python/utils/test_controller.py 的腳本 test_controller.py 可用來打印每個軸的值,以確定不同手柄的恰當映射。
7. 使用游戲手柄配置選項來運行策略:
pythonspot_rl_demo.py~/spot-rl-deployment/models--gamepad-config/home/gamepad_config.json
視頻 2 展示了經過仿真訓練后真實的 Spot 機器人的運行情況。
視頻 2. Spot 機器人根據(jù) NVIDIA Isaac Lab 的訓練行走
開始開發(fā)您的自定義應用
Spot 強化學習研究套件中提供的代碼庫是您在仿真環(huán)境中創(chuàng)建自定義強化學習任務并將其部署到硬件上的起點。為了開發(fā)自定義應用,您可以通過添加自己的機器人模型、環(huán)境、獎勵函數(shù)、課程學習、域隨機化等,來修改和擴展當前的代碼庫。
請參閱文檔了解有關如何使用 Isaac Lab 為特定任務訓練策略的詳細指導。在其他機器人上部署經過訓練的策略是專屬于該機器人架構的;但是,如果應用需要進行額外的觀察,Spot 用戶則可以修改當前的部署代碼
-
NVIDIA
+關注
關注
14文章
4986瀏覽量
103046 -
仿真器
+關注
關注
14文章
1018瀏覽量
83741 -
AI
+關注
關注
87文章
30887瀏覽量
269065 -
四足機器人
+關注
關注
1文章
90瀏覽量
15202
原文標題:消除仿真與現(xiàn)實之間的差距:使用 NVIDIA Isaac Lab 訓練 Spot 四足機器人運動
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論