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