Online multi-agent trajectory planner using linear safe corridor (LSC)

Overview

lsc_planner

This package presents an efficient multi-agent trajectory planning algorithm which generates safe trajectories in obstacle-dense environments. Our algorithm combines the advantages of both grid-based and optimization-based approaches, and generates safe, dynamically feasible trajectory without suffering from an errorneous optimization setup such as imposing infeasible collision constraints. The details can be found at the following link.

  • Authors: Jungwon Park, Dabin Kim, Gyeong Chan Kim, Dahyun Oh and H. Jin Kim from LARR, Seoul National University
  • Paper: Online Distributed Trajectory Planning for Quadrotor Swarm with Feasibility Guarantee using Linear Safe Corridor PDF
  • Video: Youtube

1. Install

This work is implemented based on C++17. Tested in the ROS Melodic, Ubuntu 18.04

(1) Install ROS Melodic for Ubuntu 18.04 or ROS Noetic for Ubuntu 20.04 (http://wiki.ros.org/ROS/Installation, desktop-full version is recommended)

(2) Install CPLEX (https://www.ibm.com/products/ilog-cplex-optimization-studio)

(3) Install dependancies and clone packages

sudo apt-get install ros-<distro>-octomap
sudo apt-get install ros-<distro>-octomap-server
sudo apt-get install ros-<distro>-octomap-ros
sudo apt-get install ros-<distro>-dynamic-edt-3d
git clone https://github.com/qwerty35/dynamic_msgs.git
git clone https://github.com/qwerty35/graph_rviz_plugin.git
git clone https://github.com/qwerty35/lsc_planner.git

(<distro> is melodic or noetic depending on your ROS version.)

(4) Before building packages, check CMAKELIST that CPLEX_PREFIX_DIR is indicating the intallation location. For instance, if CPLEX is installed in /opt/ibm/ILOG/CPLEX_Studio201, then CPLEX_PREFIX_DIR should be:

set(CPLEX_PREFIX_DIR /opt/ibm/ILOG/CPLEX_Studio201)

(5) Build packages

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

2. Demo

source ~/catkin_ws/devel/setup.bash
roslaunch lsc_planner simulation.launch

The simulation result will be saved at lsc_planner/log.

3. Configuration

You can configure the simulation setting at the launch, mission files.

  • launch/simulation.launch: Mission, octomap, parameters for algorithm
  • missions/*.json: Start, goal, dynamical limit of the agent, map size

See the comments in the launch/simulation.launch and missions/readme.txt file for more details

Note: If you want to generate the mission file automatically, then use matlab script in matlab/mission_generator

4. Acknowledgment

This work is implemented based on the following packages.

(1) RVO2, RVO2-3D (https://gamma.cs.unc.edu/RVO2/downloads/)

(2) 3D-AStar-ThetaStar (https://github.com/PathPlanning/3D-AStar-ThetaStar)

(3) rapidjson (https://rapidjson.org/)

(4) openGJK (https://www.mattiamontanari.com/opengjk/)

5. Notes

(1) Numerical issue: This code may cause infeasible optimization problem due to the numerical error of dynamicEDT3D library. If you want to avoid infeasible constraints, then use alternative method in the function 'TrajPlanner::generateFeasibleSFC()' in traj_planner.cpp However, it is prone to deadlock and is too conservative.

(2) Grid based planner issue: This code is not fully tested with various maps. Grid based planner may not work with some maps.

You might also like...
Official page of MLCPP (IROS'18 @ Barcelona, Spain): Offline Coverage Path Planner
Official page of MLCPP (IROS'18 @ Barcelona, Spain): Offline Coverage Path Planner

MLCPP: Multi-layer coverage path planner for autonomous structural inspection of high-rise structures The purpose of the algorithm is to inspect high-

A customizable hardware prefetching framework using online reinforcement learning as described in the MICRO 2021 paper by Bera and Kanellopoulos et al.
A customizable hardware prefetching framework using online reinforcement learning as described in the MICRO 2021 paper by Bera and Kanellopoulos et al.

A Customizable Hardware Prefetching Framework Using Online Reinforcement Learning Table of Contents What is Pythia? About the Framework Prerequisites

Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin
Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin

B.Angr A multi-dimensional dynamicly distorted staggered multi-bandpass LV2 plugin, for extreme soundmangling. Based on Airwindows XRegion. Key featur

Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.
Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn Engine Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU. Unicorn offers some unparalleled fe

Recognize stairs with lidar. Project the laser points to X-Z plane and use least squares for linear fitting.
Recognize stairs with lidar. Project the laser points to X-Z plane and use least squares for linear fitting.

stairs_recogniton Recognize stairs with lidar. Project the laser points to X-Z plane and use least squares for linear fitting. Dependencies PCL 1.8 Ei

Display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together
Display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together

The display array is a board that sets 6 ST7735 display with a resolution of 80x160px in a linear array sharing the clock, data, rs, backlight pins together, and leaving individual access to the cs lines of each display, This board allows you to display images with a resolution of 480x160px.

An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display device.

Open Display Transform An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display

Flat map - Header only associative linear container.

flat_map flat_map is a header only associative container library that constructed on linear container. It compliants C++17/20 standard associative con

C++ template library for linear algebra

SNUV_TOMO: 2D CT using SNUV with IRCD Project tree and description File/folder Description Eigen C++ template library for linear algebra include Conta

Owner
Jungwon Park
Jungwon Park Ph. D student in LARR, Seoul National Univ.
Jungwon Park
This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge, and Hackerrank.

CPP_Soln This repo contains solutions to coding questions available online on coding platforms like - Codeforces, Codechef, URI Online Judge , LeetCod

Rijul Jain 4 Nov 3, 2022
"SaferCPlusPlus" is essentially a collection of safe data types intended to facilitate memory and data race safe C++ programming

A collection of safe data types that are compatible with, and can substitute for, common unsafe native c++ types.

null 329 Nov 24, 2022
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Dec 30, 2022
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Jan 3, 2023
agent-less and lightweight communication library compatible with rclcpp for embedded devices

mros2 mros2 (formally mROS 2) realizes an agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices. It consists of ba

null 123 Dec 21, 2022
TiEtwAgent - PoC memory injection detection agent based on ETW, for offensive and defensive research purposes

TiEtwAgent - ETW-based process injection detection This project was created to research, build and test different memory injection detection use cases

Filip Olszak 187 Dec 20, 2022
A repo with the source code for Nullboard Backup Agent

This is a repo with the source code for Nullboard Backup Agent - a small companion utility for Nullboard that lives in the Windows system tray and acts as a storage provider for making automatic backups of NB's boards.

Alexander Pankratov 7 Dec 30, 2022
Motion planner built upon Tesseract and Trajopt

motion_planner Motion planner built upon Tesseract and Trajopt The abb_example package is similar to the tesseract_ros_examples, but it contain more e

Mohamed Ahmed 8 Jan 18, 2022
Turn 2 esp32 boards into pixhawk telemetry for use with Ardupilot/Ardurover Mission Planner.

RoverLink Turn 2 esp32 boards into pixhawk telemetry for use with Ardupilot/Ardurover Mission Planner I used to use these cheap Chinese 900mhz Pixhawk

Jeffrey Berezin 3 Dec 9, 2022
Local Navigation Planner for Legged Robots

ANYmal Rough Terrain Planner Sampling based path planning for ANYmal, based on 2.5D height maps. More detailed instructions still to come. The paper d

Robotic Systems Lab - Legged Robotics at ETH Z├╝rich 36 Dec 15, 2022