The network architecture for Motion Planning Transformers (MPT).
All our experiments were conducted on Ubuntu18.04 with Python3.6 with CUDA11.0. To generate the data, and evaluate the planner you will need the OMPL-1.4.2 library with the Python bindings.
Other python dependencies are given in requirements.txt. You can install the package using pip:
pip3 install -r requirments.txt
We highly recommend that to replicate our testing environment, users can use our docker container which contains all the necessary libraries packages. Please use the latest version of nvidia-docker2. Download the .tar file.
To load the image from the tar file, run the following:
docker load -i mpt_container.tar
To run the container, run the following command:
docker run -it --gpus all --shm-size="16G" -v ~/global_planner_data:/root/data -v <link-to-code-base>:/workspace bash
You can run the script in docker/ompl_torch_docker.sh. Attach the folder containing the data to /root/data and the folder with the code to /workspace.
To generate training or validation data set for the point environment you can run the following command:
python3 rrt_star_map.py --start=... --numEnv=... --envType=... --numPaths=... --fileDir=... --mapFile
To collect data samples for the car environment you can run the following command:
python3 sst_map.py --start=... --numEnv=... --numPaths=... --fileDir=...
You can download all the data we used for training from here.
To train the data, run the following command:
python3 train.py --batchSize=... --mazeDir=... --forestDir=... --fileDir=...
You can download the pretrained models for the point robot and Dubins Car Model from here.
To evaluate a set of validation paths, you can run the following code:
python3 eval_model.py --modelFolder=... --valDataFolder=... --start=... --numEnv=... --epoch=... --numPaths=...
| Environment | Random Forest | Maze | ||||
|---|---|---|---|---|---|---|
| Accuracy | Time (sec) | Vertices | Accuracy | Time (sec) | Vertices | |
| RRT* | 100% | 5.44 | 3227.5 | 100% | 5.36 | 2042 |
| IRRT* | 100% | 0.42 | 267 | 100% | 3.13 | 1393.5 |
| UNet-RRT* | 30.27% | 0.13 | 168 | 21.4% | 0.31 | 275.5 |
| MPNet | 92.35% | 0.29 | 634 | 71.76% | 1.72 | 1408.5 |
| MPT-RRT* | 99.4% | 0.19 | 233 | 99.16% | 0.84 | 626 |
| MPT-IRRT* | 99.4% | 0.08 | 136 | 99.16% | 0.73 | 566 |
| MPT-RRT*-EE | 100% | 0.2 | 247 | 100% | 0.82 | 585 |
To visualize trajectories, you can use the VisualizeTrajectories.ipynb notebook to view the paths. To spin up the jupyter notebook, you can run the following command inside the container environment.
export JUPYTER_TOKEN=mpt
jupyter notebook --allow-root --no-browser --ip=0.0.0.0. --port=8888
When prompted for a token enter mpt.
This code base is currently for reviewing purpose alone. Please do not distribute.
