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

四足仿生機器人
四足機器人
四足機器人的機構(gòu)設(shè)計
腿+輪式動力!瑞士四足機器人展示最佳混合步態(tài)、運動更靈活

NVIDIA AI機器人開發(fā)— NVIDIA Isaac Sim入門
NVIDIA 公開課 | AI 機器人開發(fā)第二講 — Isaac Sim 高階開發(fā)
CES | 用 NVIDIA Isaac Sim 2022.2 模擬未來智能機器人
使用 ROS 2 MoveIt 和 NVIDIA Isaac Sim 創(chuàng)建逼真的機器人模擬

使用 NVIDIA Isaac 仿真并定位 Husky 機器人

評論