系列文章目錄
?文章來源地址http://www.zghlxwxcb.cn/news/detail-849057.html
前言
Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer
GitHub Repository:?GitHub - roboterax/humanoid-gym: Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer
?
一、介紹
Humanoid-Gym是一個(gè)基于Nvidia Isaac Gym的易于使用的強(qiáng)化學(xué)習(xí)(RL)框架,旨在訓(xùn)練仿人機(jī)器人的運(yùn)動技能,強(qiáng)調(diào)從仿真到真實(shí)世界環(huán)境的零誤差轉(zhuǎn)移。Humanoid-Gym 還集成了一個(gè)從 Isaac Gym 到 Mujoco 的仿真到仿真框架,允許用戶在不同的物理仿真中驗(yàn)證訓(xùn)練好的策略,以確保策略的魯棒性和通用性。
RobotEra 的 XBot-S(身高 1.2 米的仿人機(jī)器人)和 XBot-L(身高 1.65 米的仿人機(jī)器人)在真實(shí)環(huán)境中對該代碼庫進(jìn)行了驗(yàn)證,實(shí)現(xiàn)了模擬到現(xiàn)實(shí)的零距離傳輸。
用于評估的機(jī)器人硬件平臺
?
二、仿真環(huán)境搭建
?
歡迎訪問我們的 Humanoid-Gym!
Humanoid-Gym 是一個(gè)基于 Nvidia Isaac Gym 的易于使用的強(qiáng)化學(xué)習(xí)(RL)框架,旨在訓(xùn)練仿人機(jī)器人的運(yùn)動技能,強(qiáng)調(diào)從仿真到真實(shí)環(huán)境的零誤差轉(zhuǎn)移。Humanoid-Gym 還集成了從 Isaac Gym 到 Mujoco 的仿真到仿真框架,允許用戶在不同的物理仿真中驗(yàn)證訓(xùn)練好的策略,以確保策略的魯棒性和通用性。
RobotEra 的 XBot-S(身高 1.2 米的仿人機(jī)器人)和 XBot-L(身高 1.65 米的仿人機(jī)器人)在真實(shí)環(huán)境中對該代碼庫進(jìn)行了驗(yàn)證,實(shí)現(xiàn)了模擬到現(xiàn)實(shí)的零距離傳輸。
2.1 特點(diǎn)
1. 仿人機(jī)器人訓(xùn)練
該庫為仿人機(jī)器人的訓(xùn)練提供全面的指導(dǎo)和腳本。Humanoid-Gym 具有針對仿人機(jī)器人的專門獎勵(lì),簡化了模擬到真實(shí)轉(zhuǎn)移的難度。在本資源庫中,我們以 RobotEra 的 XBot-L 為主要示例。只需稍作調(diào)整,也可用于其他機(jī)器人。我們的資源包括設(shè)置、配置和執(zhí)行。我們的目標(biāo)是通過提供深入的訓(xùn)練和優(yōu)化,讓機(jī)器人為真實(shí)世界的運(yùn)動做好充分準(zhǔn)備。
全面的訓(xùn)練指南: 我們?yōu)橛?xùn)練過程的每個(gè)階段提供詳盡的演練。
逐步配置說明: 我們的指導(dǎo)清晰簡潔,可確保高效的設(shè)置過程。
易于部署的執(zhí)行腳本: 利用我們預(yù)先準(zhǔn)備好的腳本,簡化培訓(xùn)工作流程。
2. Sim2Sim 支持
sim2sim 管道,使您能夠?qū)⒂?xùn)練有素的策略轉(zhuǎn)移到高精度和精心設(shè)計(jì)的仿真環(huán)境中。獲得機(jī)器人后,您就可以放心地在真實(shí)環(huán)境中部署經(jīng)過 RL 訓(xùn)練的策略。
我們的仿真器設(shè)置,尤其是 Mujoco 的設(shè)置,都經(jīng)過了精心調(diào)整,以接近真實(shí)世界的場景。這種細(xì)致的校準(zhǔn)確保了仿真環(huán)境和真實(shí)世界環(huán)境中的性能密切吻合。這一改進(jìn)使我們的仿真更可信,增強(qiáng)了我們對仿真適用于真實(shí)世界場景的信心。
3. 去噪世界模型學(xué)習(xí)(即將推出)
去噪世界模型學(xué)習(xí)(DWL)提出了一種先進(jìn)的模擬到現(xiàn)實(shí)框架,將狀態(tài)估計(jì)和系統(tǒng)識別融為一體。這種雙方法確保機(jī)器人的學(xué)習(xí)和適應(yīng)在現(xiàn)實(shí)世界中既實(shí)用又有效。
增強(qiáng)的仿真適應(yīng)性: 優(yōu)化機(jī)器人從仿真環(huán)境過渡到真實(shí)環(huán)境的技術(shù)。
改進(jìn)的狀態(tài)估計(jì)能力: 用于精確可靠的狀態(tài)分析的先進(jìn)工具。
2.2 安裝
用 Python 3.8 生成一個(gè)新的 Python 虛擬環(huán)境,使用?
conda create -n myenv python=3.8
為獲得最佳性能,我們建議使用 NVIDIA 驅(qū)動程序版本 525
sudo apt install nvidia-driver-525
。支持的最低驅(qū)動程序版本為 515。如果無法安裝 525 版本,請確保系統(tǒng)至少有 515 版本,以維持基本功能。
使用 Cuda-11.7 安裝 PyTorch 1.13:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
使用
conda install numpy=1.23
安裝 numpy-1.23。
安裝 Isaac Gym:
從以下地址下載并安裝 Isaac Gym Preview 4
Isaac Gym - Preview Release | NVIDIA Developer.
cd isaacgym/python && pip install -e .
?使用
cd examples && python 1080_balls_of_solitude.py
運(yùn)行示例。
有關(guān)故障排除,請參閱 isaacgym/docs/index.html。
安裝 Humanoid-Gym:
克隆此軟件源。
cd humanoid_gym && pip install -e .
2.3?使用指南
示例
# Launching PPO Policy Training for 'v1' Across 8192 Environments
# This command initiates the PPO algorithm-based training for the humanoid task.
python scripts/train.py --task=humanoid_ppo --run_name v1 --headless --num_envs 8192
# Evaluating the Trained PPO Policy 'v1'
# This command loads the 'v1' policy for performance assessment in its environment.
# Additionally, it automatically exports a JIT model, suitable for deployment purposes.
python scripts/play.py --task=humanoid_ppo --run_name v1
# Implementing Simulation-to-Simulation Model Transformation
# This command facilitates a sim-to-sim transformation using exported 'v1' policy.
python scripts/sim2sim.py --load_model /path/to/logs/XBot_ppo/exported/policies/policy_1.pt
# Run our trained policy
python scripts/sim2sim.py --load_model /path/to/logs/XBot_ppo/exported/policies/policy_example.pt
1. 默認(rèn)任務(wù)
humanoid_ppo
目的: 基準(zhǔn)、PPO 策略、多坐標(biāo)系低級控制
觀察空間: 可變 (47 X H) 維度,其中 H 為坐標(biāo)系幀數(shù)
權(quán)限信息: 73 維
humanoid_dwl (即將推出)
2. PPO 策略
訓(xùn)練命令: 如需訓(xùn)練 PPO 策略,請執(zhí)行
python humanoid/scripts/train.py --task=humanoid_ppo --load_run log_file_path --name run_name
運(yùn)行訓(xùn)練有素的保單: 要部署訓(xùn)練有素的 PPO 政策,請使用
python humanoid/scripts/play.py --task=humanoid_ppo --load_run log_file_path --name run_name
默認(rèn)情況下,將加載實(shí)驗(yàn)文件夾中最后一次運(yùn)行的最新模型。不過,也可以通過調(diào)整訓(xùn)練配置中的 load_run 和 checkpoint 來選擇其他運(yùn)行迭代/模型。
3. Sim-to-sim
基于 Mujoco 的 Sim2Sim 部署: 使用下面的命令利用 Mujoco 執(zhí)行仿真到仿真 (sim2sim) 部署:
python scripts/sim2sim.py --load_model /path/to/export/model.pt
4. 參數(shù)
CPU 和 GPU 使用情況: 要在 CPU 上運(yùn)行仿真,請同時(shí)設(shè)置 --sim_device=cpu 和 --rl_device=cpu。對于 GPU 操作,請相應(yīng)指定 --sim_device=cuda:{0,1,2...} 和 --rl_device={0,1,2...}。請注意,CUDA_VISIBLE_DEVICES 并不適用,因此必須匹配 --sim_device 和 --rl_device 設(shè)置。
無頭操作: 包括 --headless,用于無渲染操作。
渲染控制: 按 "v "鍵可在訓(xùn)練過程中切換渲染。
策略位置: 訓(xùn)練后的策略保存在 humanoid/logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt 中。
5. 命令行參數(shù)
關(guān)于 RL 訓(xùn)練,請參考人形機(jī)器人/utils/helpers.py#L161。關(guān)于模擬到模擬過程,請參閱 humanoid/scripts/sim2sim.py#L169。
2.4 代碼結(jié)構(gòu)
每個(gè)環(huán)境都取決于一個(gè) env 文件 (legged_robot.py) 和一個(gè)配置文件 (legged_robot_config.py)。后者包含兩個(gè)類: LeggedRobotCfg(包含所有環(huán)境參數(shù))和 LeggedRobotCfgPPO(表示所有訓(xùn)練參數(shù))。
env 和 config 類都使用繼承。
cfg 中指定的非零獎勵(lì)標(biāo)度會為總獎勵(lì)貢獻(xiàn)一個(gè)相應(yīng)名稱的函數(shù)。
任務(wù)必須使用 task_registry.register(name,EnvClass,EnvConfig,TrainConfig)進(jìn)行注冊。注冊可以在 envs/__init__.py 中進(jìn)行,也可以在本資源庫之外進(jìn)行。
2.5 添加新環(huán)境
基本環(huán)境 legged_robot 構(gòu)建了一個(gè)粗糙地形運(yùn)動任務(wù)。相應(yīng)的配置沒有指定機(jī)器人資產(chǎn)(URDF/ MJCF),也沒有獎勵(lì)標(biāo)度。
如果需要添加新環(huán)境,請?jiān)?envs/ 目錄下新建一個(gè)文件夾,并將配置文件命名為 <your_env>_config.py。新配置應(yīng)繼承現(xiàn)有環(huán)境配置。
如果提議使用新機(jī)器人
在 resources/ 文件夾中插入相應(yīng)的資產(chǎn)。
在 cfg 文件中,設(shè)置資產(chǎn)路徑,定義體名、默認(rèn)關(guān)節(jié)位置和 PD 增益。指定所需的 train_cfg 和環(huán)境名稱(python 類)。
在 train_cfg 中,設(shè)置 experiment_name 和 run_name。
必要時(shí),在 <your_env>.py 中創(chuàng)建環(huán)境。繼承現(xiàn)有環(huán)境,覆蓋所需的功能和/或添加自己的獎勵(lì)功能。
在人形機(jī)器人/envs/__init__.py 中注冊環(huán)境。
根據(jù)需要修改或調(diào)整 cfg 或 cfg_train 中的其他參數(shù)。要移除獎勵(lì),請將其比例設(shè)為零。避免修改其他環(huán)境的參數(shù)!
2.6 故障排除
請注意以下情況:
# error
ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
# solution
# set the correct path
export LD_LIBRARY_PATH="~/miniconda3/envs/your_env/lib:$LD_LIBRARY_PATH"
# OR
sudo apt install libpython3.8
# error
AttributeError: module 'distutils' has no attribute 'version'
# solution
# install pytorch 1.12.0
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
# error, results from libstdc++ version distributed with conda differing from the one used on your system to build Isaac Gym
ImportError: /home/roboterax/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20` not found (required by /home/roboterax/carbgym/python/isaacgym/_bindings/linux64/gym_36.so)
# solution
mkdir ${YOUR_CONDA_ENV}/lib/_unused
mv ${YOUR_CONDA_ENV}/lib/libstdc++* ${YOUR_CONDA_ENV}/lib/_unused
2.7 致謝
Humanoid-Gym 的實(shí)現(xiàn)依賴于機(jī)器人系統(tǒng)實(shí)驗(yàn)室(Robotic Systems Lab)創(chuàng)建的 legged_gym 和 rsl_rl 項(xiàng)目的資源。我們特別利用了他們研究中的 LeggedRobot 實(shí)現(xiàn)來增強(qiáng)我們的代碼庫。
2.8 引用
如果您使用本代碼或其部分內(nèi)容,請引用以下內(nèi)容:?
@software{RobotEra2024Humanoid-Gym,
author = {RobotEra},
title = {{Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer}},
url = {https://github.com/roboterax/humanoid-gym},
year = {2024}
}
?文章來源:http://www.zghlxwxcb.cn/news/detail-849057.html
?
到了這里,關(guān)于Humanoid-Gym 開源人形機(jī)器人端到端強(qiáng)化學(xué)習(xí)訓(xùn)練框架!星動紀(jì)元聯(lián)合清華大學(xué)、上海期智研究院發(fā)布!的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!