An open API service indexing awesome lists of open source software.

https://github.com/kumarrobotics/allocnet

A lightweight learning-based trajectory optimization framework.
https://github.com/kumarrobotics/allocnet

motion-planning trajectory-optimization

Last synced: about 2 months ago
JSON representation

A lightweight learning-based trajectory optimization framework.

Awesome Lists containing this project

README

        

# AllocNet: Learning Time Allocation for Trajectory Optimization

## About

AllocNet is a lightweight learning-based trajectory optimization framework.

__Authors__: [Yuwei Wu](https://github.com/yuwei-wu), [Xiatao Sun](https://github.com/M4D-SC1ENTIST), Igor Spasojevic, and Vijay Kumar from the [Kumar Lab](https://www.kumarrobotics.org/).

__Video Links__: [Youtube](https://www.youtube.com/watch?v=tA02dJz9ux8)

__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](https://arxiv.org/pdf/2309.15191.pdf)

If this repo helps your research, please cite our paper at:

```bibtex
@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}}
```

## Acknowledgements

- Dataset: The raw point cloud dataset from [M3ED](https://m3ed.io/)
- Front-end Path Planning: We use [OMPL](https://ompl.kavrakilab.org/) planning library
- Planning Modules and Visualization: We use the module in [GCOPTER](https://github.com/ZJU-FAST-Lab/GCOPTER)

## Run our pre-trained Model in Simulation

The repo has been tested on 20.04 with ros-desktop-full installation.

### 1. Prerequisites

#### 1.1 ROS and OMPL

Follow the guidance to install [ROS](https://wiki.ros.org/ROS/Installation) and install OMPL:
```
sudo apt install libompl-dev
```

#### 1.2 libtorch

Download the libtorch and put it into the planner folder: [GPU version](https://download.pytorch.org/libtorch/nightly/cu117/libtorch-cxx11-abi-shared-with-deps-2.0.0.dev20230301%2Bcu117.zip), or [CPU version](https://download.pytorch.org/libtorch/nightly/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0.dev20230301%2Bcpu.zip)

#### 1.3 QP solver

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
```

### 2. Build on ROS

```
git clone [email protected]: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](https://pytorch.org/cppdocs/installing.html)

### 3. Run

```
source devel/setup.bash
roslaunch planner learning_planning.launch
```

click 2D Nav Goal to trigger planning:



## Train new models

### 0. Folder Structure

```plaintext
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
```

### 1. Pre-requisites
- 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.
- Python 3.8
- CUDA 11.7

### 2. Setup

#### 2.1 Install Dependencies

- 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`

#### 2.2 Setup Iris

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
```

### 3. Run
- For training, please run ```python train_minsnap_.py```
- For testing, please run ```python test_minsnap_.py```
- For converting the learned model to TorchScript, please run ```python ts_conversion_.py```

## Maintaince

For any technical issues, please contact Yuwei Wu ([email protected], [email protected]).