AllocNet is a lightweight learning-based trajectory optimization framework.
Authors: Yuwei Wu, Xiatao Sun, Igor Spasojevic, and Vijay Kumar from the Kumar Lab.
Video Links: Youtube
Related Paper: Y. Wu, X. Sun, I. Spasojevic and V. Kumar, "Deep Learning for Optimization of Trajectories for Quadrotors," in IEEE Robotics and Automation Letters, vol. 9, no. 3, pp. 2479-2486, March 2024 arxiv Preprint
If this repo helps your research, please cite our paper at:
@ARTICLE{10412114,
author={Wu, Yuwei and Sun, Xiatao and Spasojevic, Igor and Kumar, Vijay},
journal={IEEE Robotics and Automation Letters},
title={Deep Learning for Optimization of Trajectories for Quadrotors},
year={2024},
volume={9},
number={3},
pages={2479-2486}}
- Dataset: The raw point cloud dataset from M3ED
- Front-end Path Planning: We use OMPL planning library
- Planning Modules and Visualization: We use the module in GCOPTER
The repo has been tested on 20.04 with ros-desktop-full installation.
Follow the guidance to install ROS and install OMPL:
sudo apt install libompl-dev
Download the libtorch and put it into the planner folder: GPU version, or CPU version
We use osqp to solve quadratic programming, install by:
git clone -b release-0.6.3 https://github.com/osqp/osqp.git
cd osqp
git submodule init
git submodule update
mkdir build & cd build
cmake ..
sudo make install
cd ../..
git clone https://github.com/robotology/osqp-eigen.git
cd osqp-eigen
mkdir build & cd build
cmake ..
sudo make install
git clone git@github.com:yuwei-wu/AllocNet.git && cd AllocNet/src
wstool init && wstool merge utils.rosinstall && wstool update
catkin build
The default mode is set to the GPU version. To switch to the CPU, navigate to line 29 in the 'learning_planning.hpp' file and replace 'device(torch::kGPU)' with 'device(torch::kCPU)'. After making this change, recompile the code for the updates to take effect.
You can also check: - Installing C++ Distributions of PyTorch
source devel/setup.bash
roslaunch planner learning_planning.launch
click 2D Nav Goal to trigger planning:
network/
│
├── config/ - Configuration files for training and testing.
│
│
├── utils/ - Utility functions and classes.
│ └── learning/ - Contains network classes and layers
│
└── train_minsnap_<...>.py - Scripts for training
└── test_minsnap_<...>.py - Scripts for testing
└── ts_conversion_<...>.py - Scripts for converting to TorchScript
- Ubuntu 20.04 / Windows 11
- If using WSL2 with simulation running in windows, please add
export WSL_HOST_IP=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
to your.bashrc
file to allow communication between Windows and the subsystem.
- If using WSL2 with simulation running in windows, please add
- Python 3.8
- CUDA 11.7
- Install Ubuntu packages
sudo apt-get install python3-dev python3-venv
- Create a virtual environment
python3 -m venv venv
- Activate the virtual environment
source venv/bin/activate
- Install the requirements
pip install wheel
pip install numpy==1.24.2
pip install -r requirements.txt
Follow the instructions to install, and you may need to change the CMakeLists.txt in iris-distro/CMakeLists.txt
iris: https://github.com/rdeits/iris-distro
For AMD CPU, if you encounter a core dump, please refer to instructions in this link:
https://github.com/rdeits/iris-distro/issues/81
pip install -U kaleido
- For training, please run
python train_minsnap_<model_configuration>.py
- For testing, please run
python test_minsnap_<model_configuration>.py
- For converting the learned model to TorchScript, please run
python ts_conversion_<model_configuration>.py
For any technical issues, please contact Yuwei Wu (yuweiwu@seas.upenn.edu, yuweiwu20001@outlook.com).