Skip to content

Latest commit

 

History

History
139 lines (102 loc) · 5.27 KB

README.md

File metadata and controls

139 lines (102 loc) · 5.27 KB

NEPTUNE: Non-Entangling Trajectory Planning for Multiple Tethered Unmanned Vehicles

Accepted for publication in IEEE Transactions on Robotics (T-RO)

A trajectory planning framework for multiple tethered robots. It also works for multiple untethered robots, with a simple change of a parameter (set enable_entangle_check to False).

NEPTUNE: Non-Entangling Trajectory Planning for Multiple Tethered Unmanned Vehicles

Citation

If you find this package useful, please cite NEPTUNE: Non-Entangling Planning for Multiple Tethered Unmanned Vehicles (pdf, video):

@ARTICLE{cao2023neptune,
  author={Cao, Muqing and Cao, Kun and Yuan, Shenghai and Nguyen, Thien-Minh and Xie, Lihua},
  journal={IEEE Transactions on Robotics}, 
  title={NEPTUNE: Nonentangling Trajectory Planning for Multiple Tethered Unmanned Vehicles}, 
  year={2023},
  volume={},
  number={},
  pages={1-19},
  doi={10.1109/TRO.2023.3264950}}

General Setup

NEPTUNE has been tested with Ubuntu 16.04/ROS Kinetic and Ubuntu 18.04/ROS Melodic

This package requires Gurobi Optimizer (free academic lisence available). You can test your installation typing gurobi.sh in the terminal.

Install some necessary libraries:

sudo apt-get install libgmp3-dev libmpfr-dev tmux xterm -y   

Install CGAL library:

mkdir -p ~/library/cgal #this command creates a folader named library in your home directory
#alternatively you can use another location
cd ~/library/cgal
wget https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.14.2/CGAL-4.14.2.tar.xz
tar -xf CGAL-4.14.2.tar.xz
cd CGAL-4.14.2/
cmake . -DCMAKE_BUILD_TYPE=Release
sudo make install   

Create a workspace and clone NEPTUNE and its submodules:

cd ~/ && mkdir catkin_ws_neptune && cd catkin_ws_neptune && mkdir src && cd src
git clone https://github.com/caomuqing/neptune.git
cd neptune && git submodule init && git submodule update

Build the packages:

cd ~/catkin_ws_neptune
rosdep install --from-paths src --ignore-src -r -y
catkin config -DCMAKE_BUILD_TYPE=Release
catkin build

If catkin build results in error due to Gurobi:

“gurobi_continuous.cpp:(.text.startup+0x74): undefined reference to
`GRBModel::set(GRB_StringAttr, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'”

The solution is:

cd /opt/gurobi912/linux64/src/build  #the location depends on your installation directory
sudo make
sudo cp libgurobi_c++.a ../../lib/

Running Simulations

Single-agent

Neptune: Single robot benchmark

To launch:

cd ~/catkin_ws_neptune && bash src/neptune/neptune_single_benchmark.sh

To shut down all processes, use the shutdown commands

Multi-agent obstacle-free

Neptune: Multiple robot benchmark

The command below launches 5 robots with random goals automatically sent to them. It is best if your PC has more than 5 CPU cores.

cd ~/catkin_ws_neptune && bash src/neptune/neptune_mtlp_benchmark.sh

To shut down all processes, use the shutdown commands

Multi-agent obstacle-rich

Neptune: Multiple robot obstacle-rich

To launch:

cd ~/catkin_ws_neptune && bash src/neptune/neptune_multi_obstacle.sh

Multi-agent simulation with Unity and AGX Dynamics

This simulation requires a windows computer running Unity with the AGX Dynamics plugin (request trial here), and a Unbuntu computer having followed the general setup above. Two computers are connected using a LAN cable (read ROS-Unity integration for more setup details).

The unity package containing the scenes with our tethered drone models is here. Before importing the package to Unity, you should have imported the AGX Dynamic package and ROS-TCP-Connector. For the Unbuntu machine, you will additionally need ROS packages tcc, mav_control_rw and ROS-TCP-Endpoint in the same workspace as NEPTUNE. The IP addresses on the ROS side and Unity side have to be configured according to your machines' IPs.

To launch:

cd ~/catkin_ws_neptune && bash src/neptune/neptune_multi_unity.sh

Cleanly shut down simulation:

rosnode kill -a
tmux kill-server
killall xterm

Known Issues

We are looking into a bug that will cause the planning node to crash occasionally.

Credits:

This package uses some existing functions and unilities from MADER, such as trajectory messages, cgal unilities and parameter class.

This package uses some C++ classes from the DecompROS repo (included in the thirdparty folder).