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).
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}}
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/
To launch:
cd ~/catkin_ws_neptune && bash src/neptune/neptune_single_benchmark.sh
To shut down all processes, use the shutdown commands
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
To launch:
cd ~/catkin_ws_neptune && bash src/neptune/neptune_multi_obstacle.sh
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
rosnode kill -a
tmux kill-server
killall xterm
We are looking into a bug that will cause the planning node to crash occasionally.
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).