taochenshh/dexenv
收藏资源简介:
--- license: mit --- # Visual Dexterity --- This is the codebase for [Visual Dexterity: In-Hand Reorientation of Novel and Complex Object Shapes](https://arxiv.org/abs/2211.11744), accepted by Science Robotics. While we provide the code that uses the D'Claw robot hand, it can be easily adapted to other robot hands. ### [[Project Page]](https://taochenshh.github.io/projects/visual-dexterity), [[Science Robotics]](https://www.science.org/doi/10.1126/scirobotics.adc9244), [[arXiv]](https://arxiv.org/abs/2211.11744), [[Github]](https://github.com/Improbable-AI/dexenv) [](https://doi.org/10.5281/zenodo.10039109) ## :books: Citation ``` @article{chen2023visual, author = {Tao Chen and Megha Tippur and Siyang Wu and Vikash Kumar and Edward Adelson and Pulkit Agrawal }, title = {Visual dexterity: In-hand reorientation of novel and complex object shapes}, journal = {Science Robotics}, volume = {8}, number = {84}, pages = {eadc9244}, year = {2023}, doi = {10.1126/scirobotics.adc9244}, URL = {https://www.science.org/doi/abs/10.1126/scirobotics.adc9244}, eprint = {https://www.science.org/doi/pdf/10.1126/scirobotics.adc9244}, } ``` ``` @article{chen2021system, title={A System for General In-Hand Object Re-Orientation}, author={Chen, Tao and Xu, Jie and Agrawal, Pulkit}, journal={Conference on Robot Learning}, year={2021} } ``` ## :gear: Installation #### Dependencies * [PyTorch](https://pytorch.org/) * [PyTorch3D](https://pytorch3d.org/) * [Isaac Gym](https://developer.nvidia.com/isaac-gym) (results in the paper are trained with Preview 3.) * [IsaacGymEnvs](https://github.com/NVIDIA-Omniverse/IsaacGymEnvs) * [Minkowski Engine](https://github.com/NVIDIA/MinkowskiEngine) * [Wandb](https://wandb.ai/site) #### Download packages You can either use a virtual python environment or a docker for training. Below we show the process to set up the docker image. If you prefer using a virtual python environment, you can just install the dependencies in the virtual environment. Here is how the directory looks like: ``` -- Root ---- dexenv ---- IsaacGymEnvs ---- isaacgym ``` ``` # download packages git clone git@github.com:Improbable-AI/dexenv.git git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git # download IsaacGym from: # (https://developer.nvidia.com/isaac-gym) # unzip it in the current directory # remove the package dependencies in the setup.py in isaacgym/python and IsaacGymEnvs/ ``` #### Download the assets Download the robot and object assets from [here](https://huggingface.co/datasets/taochenshh/dexenv/blob/main/assets.zip), and unzip it to `dexenv/dexenv/`. #### Download the pretrained models Download the pretrained checkpoints from [here](https://huggingface.co/datasets/taochenshh/dexenv/blob/main/pretrained.zip), and unzip it to `dexenv/dexenv/`. #### Prepare the docker image 1. You can download a pre-built docker image: ``` docker pull improbableailab/dexenv:latest ``` 2. Or you can build the docker image locally: ``` cd dexenv/docker python docker_build.py -f Dockerfile ``` #### Launch the docker image To run the docker image, you would need to have the nvidia-docker installed. Follow the instructions [here](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) ```bash # launch docker ./run_image.sh # you would need to have wandb installed in the python environment ``` In another terminal ```bash ./visualize_access.sh # after this, you can close it, just need to run this once after every machine reboot ``` ## :scroll: Usage #### :bulb: Training Teacher ```bash # if you are running in the docker, you might need to run the following line git config --global --add safe.directory /workspace/dexenv # debug teacher (run debug first to make sure everything runs) cd /workspace/dexenv/dexenv/train/teacher python mlp.py -cn=debug_dclaw # show the GUI python mlp.py task.headless=True -cn=debug_dclaw # in headless mode # if you wanna just train the hand to reorient a cube, add `task.env.name=DClawBase` python mlp.py task.env.name=DClawBase -cn=debug_dclaw # training teacher cd /workspace/dexenv/dexenv/train/teacher python mlp.py -cn=dclaw python mlp.py task.task.randomize=False -cn=dclaw # turn off domain randomization python mlp.py task.env.name=DClawBase task.task.randomize=False -cn=dclaw # reorient a cube without domain randomization # if you wanna change the number of objects or the number of environments python mlp.py alg.num_envs=4000 task.obj.num_objs=10 -cn=dclaw # testing teacher cd /workspace/dexenv/dexenv/train/teacher python mlp.py alg.num_envs=20 resume_id=<wandb exp ID> -cn=test_dclaw # e.g. python mlp.py alg.num_envs=20 resume_id=dexenv/1d1tvd0b -cn=test_dclaw ``` #### :high_brightness: Training Student with Synthetic Point Cloud (student stage 1) ``` # debug student cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=debug_dclaw_fptd # by default, the command above used the pretrained teacher model you downloaded above, #if you wanna use another teacher model, add `alg.expert_path=<path>` python rnn.py alg.expert_path=<path to teacher model> -cn=debug_dclaw_fptd # training student cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=dclaw_fptd # testing student cd /workspace/dexenv/dexenv/train/student python rnn.py resume_id=<wandb exp ID> -cn=test_dclaw_fptd ``` #### :tada: Training Student with rendered Point Cloud (student stage 2) ``` # debug student cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=debug_dclaw_rptd # training student cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=dclaw_rptd # testing student cd /workspace/dexenv/dexenv/train/student python rnn.py resume_id=<wandb exp ID> -cn=test_dclaw_rptd ``` ## :rocket: Pre-trained models We provide the pre-trained models for both the teacher and the student (stage 2) in `dexenv/expert/artifacts`. The models were trained using Isaac Gym preview 3. ``` # to see the teacher pretrained model cd /workspace/dexenv/dexenv/train/teacher python demo.py # to see the student pretrained model cd /workspace/dexenv/dexenv/train/student python rnn.py alg.num_envs=20 task.obj.num_objs=10 alg.pretrain_model=/workspace/dexenv/dexenv/pretrained/artifacts/student/train-model.pt test_pretrain=True test_num=3 -cn=debug_dclaw_rptd ```
--- license: mit --- # 视觉灵巧性 --- 这是论文《Visual Dexterity: In-Hand Reorientation of Novel and Complex Object Shapes》(发表于《Science Robotics》)的代码库,该论文已被《Science Robotics》收录。我们提供了适用于D'Claw机械抓手(D'Claw robot hand)的代码,但它也可轻松适配其他机械抓手。 ### [[项目页面]](https://taochenshh.github.io/projects/visual-dexterity)、[[Science Robotics论文链接]](https://www.science.org/doi/10.1126/scirobotics.adc9244)、[[arXiv链接]](https://arxiv.org/abs/2211.11744)、[[Github仓库]](https://github.com/Improbable-AI/dexenv) [](https://doi.org/10.5281/zenodo.10039109) ## :books: 引用格式 @article{chen2023visual, author = {Tao Chen and Megha Tippur and Siyang Wu and Vikash Kumar and Edward Adelson and Pulkit Agrawal }, title = {Visual dexterity: In-hand reorientation of novel and complex object shapes}, journal = {Science Robotics}, volume = {8}, number = {84}, pages = {eadc9244}, year = {2023}, doi = {10.1126/scirobotics.adc9244}, URL = {https://www.science.org/doi/abs/10.1126/scirobotics.adc9244}, eprint = {https://www.science.org/doi/pdf/10.1126/scirobotics.adc9244}, } @article{chen2021system, title={A System for General In-Hand Object Re-Orientation}, author={Chen, Tao and Xu, Jie and Agrawal, Pulkit}, journal={Conference on Robot Learning}, year={2021} } ## :gear: 安装指南 #### 依赖项 * PyTorch(PyTorch):[官网链接](https://pytorch.org/) * PyTorch3D(PyTorch3D):[官网链接](https://pytorch3d.org/) * Isaac Gym(Isaac Gym):[官网链接](https://developer.nvidia.com/isaac-gym)(论文中的结果使用Preview 3版本训练) * IsaacGymEnvs(IsaacGymEnvs):[仓库链接](https://github.com/NVIDIA-Omniverse/IsaacGymEnvs) * Minkowski Engine(Minkowski Engine):[仓库链接](https://github.com/NVIDIA/MinkowskiEngine) * Wandb(Wandb):[官网链接](https://wandb.ai/site) #### 下载包 您可以使用Python虚拟环境或Docker镜像进行训练。以下是Docker镜像的设置流程;若您偏好虚拟环境,直接在虚拟环境中安装依赖项即可。 目录结构如下: -- Root ---- dexenv ---- IsaacGymEnvs ---- isaacgym # 下载包 git clone git@github.com:Improbable-AI/dexenv.git git clone https://github.com/NVIDIA-Omniverse/IsaacGymEnvs.git # 从以下链接下载IsaacGym: # (https://developer.nvidia.com/isaac-gym) # 在当前目录解压 # 移除isaacgym/python和IsaacGymEnvs/目录下setup.py中的包依赖项 #### 下载资产 从[此处](https://huggingface.co/datasets/taochenshh/dexenv/blob/main/assets.zip)下载机器人和物体资产包,并解压到`dexenv/dexenv/`目录下。 #### 下载预训练模型 从[此处](https://huggingface.co/datasets/taochenshh/dexenv/blob/main/pretrained.zip)下载预训练检查点(pretrained checkpoints),并解压到`dexenv/dexenv/`目录下。 #### 准备Docker镜像 1. 您可以下载预构建的Docker镜像(Docker image): docker pull improbableailab/dexenv:latest 2. 或本地构建Docker镜像: cd dexenv/docker python docker_build.py -f Dockerfile #### 启动Docker镜像 运行Docker镜像需要安装NVIDIA Docker(nvidia-docker),请参考[安装指南](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)。 bash # 启动Docker ./run_image.sh # 需在Python环境中安装Wandb 在另一个终端中: bash ./visualize_access.sh # 执行后可关闭此终端,每次机器重启后只需运行一次 ## :scroll: 使用指南 #### :bulb: 训练教师模型 bash # 若在Docker中运行,可能需要执行以下命令 git config --global --add safe.directory /workspace/dexenv # 调试教师模型(先运行调试确保所有程序正常) cd /workspace/dexenv/dexenv/train/teacher python mlp.py -cn=debug_dclaw # 显示图形用户界面(GUI) python mlp.py task.headless=True -cn=debug_dclaw # 无头模式(headless mode) # 若仅需训练抓手重定向立方体,添加`task.env.name=DClawBase`参数 python mlp.py task.env.name=DClawBase -cn=debug_dclaw # 训练教师模型 cd /workspace/dexenv/dexenv/train/teacher python mlp.py -cn=dclaw python mlp.py task.task.randomize=False -cn=dclaw # 关闭域随机化(domain randomization) python mlp.py task.env.name=DClawBase task.task.randomize=False -cn=dclaw # 无域随机化的立方体重定向训练 # 若需修改物体数量或环境数量 python mlp.py alg.num_envs=4000 task.obj.num_objs=10 -cn=dclaw # 测试教师模型 cd /workspace/dexenv/dexenv/train/teacher python mlp.py alg.num_envs=20 resume_id=<wandb实验ID> -cn=test_dclaw # 示例:python mlp.py alg.num_envs=20 resume_id=dexenv/1d1tvd0b -cn=test_dclaw #### :high_brightness: 使用合成点云训练学生模型(第一阶段) # 调试学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=debug_dclaw_fptd # 默认使用上述下载的预训练教师模型,若需使用其他模型,添加`alg.expert_path=<路径>`参数 python rnn.py alg.expert_path=<教师模型路径> -cn=debug_dclaw_fptd # 训练学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=dclaw_fptd # 测试学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py resume_id=<wandb实验ID> -cn=test_dclaw_fptd #### :tada: 使用渲染点云训练学生模型(第二阶段) # 调试学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=debug_dclaw_rptd # 训练学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py -cn=dclaw_rptd # 测试学生模型 cd /workspace/dexenv/dexenv/train/student python rnn.py resume_id=<wandb实验ID> -cn=test_dclaw_rptd ## :rocket: 预训练模型 我们在`dexenv/expert/artifacts`目录下提供了教师模型和第二阶段学生模型的预训练版本,这些模型使用Isaac Gym Preview 3训练。 # 查看教师预训练模型 cd /workspace/dexenv/dexenv/train/teacher python demo.py # 查看学生预训练模型 cd /workspace/dexenv/dexenv/train/student python rnn.py alg.num_envs=20 task.obj.num_objs=10 alg.pretrain_model=/workspace/dexenv/dexenv/pretrained/artifacts/student/train-model.pt test_pretrain=True test_num=3 -cn=debug_dclaw_rptd
数据集概述
数据集名称
- Visual Dexterity
数据集描述
- 该数据集为Visual Dexterity: In-Hand Reorientation of Novel and Complex Object Shapes的研究代码库,已被Science Robotics接受。主要用于支持DClaw机器人手的操作,但可适应于其他机器人手。
许可证
- MIT
引用信息
@article{chen2023visual, author = {Tao Chen and Megha Tippur and Siyang Wu and Vikash Kumar and Edward Adelson and Pulkit Agrawal }, title = {Visual dexterity: In-hand reorientation of novel and complex object shapes}, journal = {Science Robotics}, volume = {8}, number = {84}, pages = {eadc9244}, year = {2023}, doi = {10.1126/scirobotics.adc9244}, URL = {https://www.science.org/doi/abs/10.1126/scirobotics.adc9244}, eprint = {https://www.science.org/doi/pdf/10.1126/scirobotics.adc9244}, }
安装依赖
- PyTorch
- PyTorch3D
- Isaac Gym
- IsaacGymEnvs
- Minkowski Engine
- Wandb
下载资源
预训练模型位置
- 教师模型:
dexenv/expert/artifacts - 学生模型(阶段2):
dexenv/expert/artifacts
使用说明
- 训练教师:在
/workspace/dexenv/dexenv/train/teacher目录下使用python mlp.py命令进行训练和测试。 - 训练学生:分两个阶段,在
/workspace/dexenv/dexenv/train/student目录下使用python rnn.py命令进行训练和测试。
预训练模型演示
- 教师模型演示:在
/workspace/dexenv/dexenv/train/teacher目录下运行python demo.py。 - 学生模型演示:在
/workspace/dexenv/dexenv/train/student目录下配置参数后运行python rnn.py。




