由于涉及復(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)。詳細(xì)的最低規(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,和默認(rèn)網(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)練策略的詳細(xì)指導(dǎo)。在其他機器人上部署經(jīng)過訓(xùn)練的策略是專屬于該機器人架構(gòu)的;但是,如果應(yīng)用需要進行額外的觀察,Spot 用戶則可以修改當(dāng)前的部署代碼
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5592瀏覽量
109721 -
仿真器
+關(guān)注
關(guān)注
14文章
1051瀏覽量
87263 -
AI
+關(guān)注
關(guān)注
91文章
39760瀏覽量
301366 -
四足機器人
+關(guān)注
關(guān)注
1文章
99瀏覽量
15691
原文標(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è)計
NVIDIA AI機器人開發(fā)— NVIDIA Isaac Sim入門
CES | 用 NVIDIA Isaac Sim 2022.2 模擬未來智能機器人
使用 NVIDIA Isaac 仿真并定位 Husky 機器人
堅米智能借助NVIDIA Isaac Lab加速四足機器人開發(fā)
NVIDIA Isaac Sim與NVIDIA Isaac Lab的更新
NVIDIA Isaac Sim和Isaac Lab現(xiàn)已推出早期開發(fā)者預(yù)覽版
NVIDIA Isaac Lab多GPU多節(jié)點訓(xùn)練指南
如何在NVIDIA Isaac Lab中使用Newton訓(xùn)練四足機器人
在NVIDIA Isaac Lab中訓(xùn)練四足機器人運動
評論