legged-robots-manipulation is a loco-manipulation repository for (wheel-)legged robots. The code is built on legged_gym. We provide two pre-trained models for airbot and b2w.
Project Page:wheel-legged-loco-manipulation
The current repository contains airbot and b2w. The current repository is a partial implementation of the paper. The whole code will be released once the paper is accepted.
airbot is a loco-manipulation task implemented using PPO. It is the baseline for comparison in the Paper.
b2w is a locomotion demo for the Unitree b2w robot.
- You are supposed to install the isaac_gym,rsl_rl and legged_gym.Please install the above dependencies (Isaac Gym Preview 4, rsl_rl, legged_gym) as described in legged_gym.
Copy required files to legged_gym.
- Copy the contents of ~/legged-robots-manipulation/legged_gym/envs/init.py into legged_gym.
# Add those contents
import os
from legged_gym.envs.airbot.airbot_config import AirbotRoughCfg, AirbotRoughCfgPPO
from legged_gym.envs.b2w.b2w_config import B2wRoughCfg, B2wRoughCfgPPO
from legged_gym.utils.task_registry import task_registry
from .airbot.airbot_robot import Airbot
from .b2w.b2w_robot import B2w
from .airbot.airbot_config import AirbotRoughCfg, AirbotRoughCfgPPO
from .b2w.b2w_config import B2wRoughCfg, B2wRoughCfgPPO
task_registry.register( "b2w", B2w, B2wRoughCfg(), B2wRoughCfgPPO() )
task_registry.register( "airbot", Airbot, AirbotRoughCfg(), AirbotRoughCfgPPO() )
- Copy envs files into legged_gym/envs corresponding.
# Add those files
cp path/to/legged-robots-manipulation/legged_gym/envs path/to/legged_gym/legged_gym/envs
python tran.py --task=b2w --rl_device=cuda:0
# or
python train.py --task=airbot --rl_device=cuda:0
If you use this work, please cite this paper:
@misc{wang2024armconstrained,
title={Arm-Constrained Curriculum Learning for Loco-Manipulation of the Wheel-Legged Robot},
author={Zifan Wang, Yufei Jia, Lu Shi, Haoyu Wang, Haizhou Zhao, Xueyang Li, Jinni Zhou, Jun Ma and Guyue Zhou},
year={2024},
eprint={2403.16535},
archivePrefix={arXiv},
primaryClass={cs.RO}
}