Kallol Saha *1, Vishal Mandadi *1, Jayaram Reddy *1, Ajit Srikanth 1, Aditya Agarwal 2, Bipasha Sen 2, Arun Kumar Singh 3, Madhava Krishna 1,
1International Institute of Information Technology, Hyderabad, 2MIT, 3University of Tartu
*denotes equal contribution
This is the official implementation of the paper "EDMP: Ensemble-of-Costs Guided Diffusion For Motion Planning", which is currently under review
For more details and results, visit our project page and read our paper.
- Serial Version
- All the classifiers are run in serial
- Release Status: Beta version out
- Parallel version
- Classifiers will be run in parallel
- Release status: Will be out by 25th December, 2023
- Clone this repository with all the submodules
git clone --recurse-submodules https://github.com/vishal-2000/EDMP.git
- Move to robofin folder and change the branch to v0.0.1
cd robofin git checkout v0.0.1
- Install robofin
pip install geometrout==0.0.3.4 pip install urchin cd robofin pip install -e .
- Install other necessary packages
pip install torch torchvision h5py einops autolab_core wandb scipy
- Download the datasets from link to './datasets' folder. This would look like:
Where * is a placeholder for all the three datasets - global, hybrid, and both
./datasets/*_solvable_problems.pkl
- Download the models folder from link and unzip it in the main folder.
- Final directory structure must look like:
.
├── benchmark
│ └── cfgs
├── datasets
│ └── __pycache__
├── diffusion
│ ├── models
│ │ └── __pycache__
│ └── __pycache__
├── guides
│ └── cfgs
├── lib
│ └── __pycache__
├── models
│ └── TemporalUNetModel255_N50
├── mpinets
│ ├── __pycache__
│ └── third_party
│ └── __pycache__
├── robofin
│ └── robofin
│ ├── kinematics
│ ├── pointcloud
│ │ └── cache
│ │ └── franka
│ ├── standalone_meshes
│ └── urdf
│ ├── franka_panda
│ │ ├── hd_meshes
│ │ │ ├── collision
│ │ │ └── visual
│ │ └── meshes
│ │ ├── collision
│ │ └── visual
│ └── panda_hand
│ └── meshes
│ ├── collision
│ └── visual
└── urdfs
Inference configurations can be set using the config files placed in the benchmark folder (./benchmark/cfgs/cfg1.yaml
). A custom config file can be created following syntax similar to the files in the benchmark/cfgs
directory
To run inference:
python infer_serial.py -c <config_folder_location>
For example:
python infer_serial.py -c ./benchmark/cfgs/cfg1.yaml
New custom guides can be added into the ./guides/cfgs/
folder, following syntax similar to the other files in that folder. In order to include this guide during inference, please add the guide number (where the number must match the number on the file name, i.e., ./guides/cfgs/guide10.yaml has guide number == 10 (also change the index number in the file according to the guide number)).
You can control the number of guides you want to run in parallel, and what guides you want to run in parallel using the config file in benchmark folder. For example, in ./benchmark/cfgs/cfg1.yaml
, setting the guides parameter to the following will run the inference script with the guides 1, 2, and 3.
guides: [1, 2, 3]
- For replicating the results shown in the paper, please use cfg
./benchmark/cfgs/cfg1.yaml
If you find our work useful in your research, please cite:
@misc{saha2023edmp,
title={EDMP: Ensemble-of-costs-guided Diffusion for Motion Planning},
author={Kallol Saha and Vishal Mandadi and Jayaram Reddy and Ajit Srikanth and Aditya Agarwal and Bipasha Sen and Arun Singh and Madhava Krishna},
year={2023},
eprint={2309.11414},
archivePrefix={arXiv},
primaryClass={cs.RO}
}
Kallol Saha: ksaha@andrew.cmu.edu
Vishal Mandadi: vishal.mandadi@students.iiit.ac.in
Jayaram Reddy: jayaram.reddy@research.iiit.ac.in