Giter Site home page Giter Site logo

molierflower / neptune Goto Github PK

View Code? Open in Web Editor NEW

This project forked from caomuqing/neptune

0.0 0.0 0.0 22.4 MB

A trajectory planning framework for multiple robots: paper accepted in IEEE T-RO

License: BSD 3-Clause "New" or "Revised" License

Shell 0.25% C++ 95.01% Python 2.84% C 0.01% MATLAB 0.59% EmberScript 0.40% CMake 0.91%

neptune's Introduction

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).


neptune's People

Contributors

caomuqing avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.