Coder Social home page Coder Social logo

lis-epfl / multi_agent_pkgs Goto Github PK

View Code? Open in Web Editor NEW
17.0 0.0 2.0 229.3 MB

Multi-agent motion planning packages (HDSM method)

License: MIT License

CMake 3.60% C++ 86.86% Python 9.33% Shell 0.22%
aerial-robotics motion-planning multiagent-planning obstacle-avoidance

multi_agent_pkgs's Introduction

Multi-Agent Planning Packages

The code for the paper "High-Speed Motion Planning for Aerial Swarms in Unknown and Cluttered Environments", by Charbel Toumieh and Dario Floreano: (pdf, video).

The packages have been tested on Ubuntu 22.04, ROS2 Humble. The simulations have been run on Intel i9-13900K CPU and NVidia RTX 4090 GPU.

This project is continuously under development.

10 agents circular exchange (forest) 10 agents traversing forest / wall / forest
circular exchange linear navigation
10 agents traversing loops Hardware experiments on nano-drones (Crazyflie)
loops hardware

To get started you can skip to Getting Started. This repo contains the following packages:

  • convex_decomp_util: package for Safe Corridor generation based on [1] and [2].
  • decomp_ros: package for Safe Corridor generation and visualization based on [3].
  • env_builder: ROS2 package that allows to build an evironment in the form of voxel grid and publishes it in the form of a pointcloud for visualization in rviz2.
  • jps3d: a modified version of jps3d that checks for traversibilty when generating a path to make sure we can generate a Safe Corridor around it.
  • mapping_util: ROS2 package for voxel grid generation (clearing out voxels that are in the field of view of the drone).
  • path_finding_util: package for path finding and path tools such as path shortening.
  • voxel_grid_util: package for voxel grid class and raycasting function.
  • multi_agent_planner: ROS2 package for multi-agent planning (uses all the other packages).

At the end of this documentation you can find:

  • Improvements: improvements to the packages that are yet to be implemented.
  • References: references used throughout this text.
  • Citation: bibtex citation for latex.

Getting Started

Install gurobi

Download gurobi 10.0.* from this link. Follow the installation instructions in this link. Finally, install the license by going to this link, creating a license and installing it (instructions on how to install it are shown when you create it).

Then, build gurobi and copy the library:

cd /opt/gurobi1002/linux64/src/build  #Note that the name of the folder gurobi1002 changes according to the Gurobi version
sudo make
sudo cp libgurobi_c++.a ../../lib/

Create and build workspace

Create a ROS2 workspace and clone the repo inside the src folder of the workspace (or simply clone it inside an existing workspace), then build it:

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/lis-epfl/multi_agent_pkgs
cd ..
colcon build --symlink-install --packages-select jps3d decomp_util convex_decomp_util path_finding_util voxel_grid_util decomp_ros_msgs decomp_ros_utils 
source install/setup.bash
colcon build --symlink-install --packages-select env_builder_msgs env_builder mapping_util multi_agent_planner_msgs multi_agent_planner

Running the simulation

To switch between a known and unknown envrionment, you can set the variable free_grid in the launch file to true and false respectively.

Multiple agents in a circular configuration

Launch rviz2 in a terminal (if you didn't build decomp_ros_util due to OGRE conflicts, the polyhedra will not appear).

cd ~/ros2_ws
. install/setup.bash
rviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz

Launch the environment in another window (if you want an empty environement replace env_builder.launch.py with env_builder_empty.launch.py):

cd ~/ros2_ws
. install/setup.bash
ros2 launch env_builder env_builder.launch.py

Launch the agents in another window. If you want each agent to run in a different terminal, uncomment the prefix=['xterm -fa default -fs 10 -hold -e'] line in the launch file:

cd ~/ros2_ws
. install/setup.bash
ros2 launch multi_agent_planner multi_agent_planner_circle.launch.py

Multiple agents going through forest + wall + forest

Launch rviz2 in a terminal (if you didn't build decomp_ros_util due to OGRE conflicts, the polyhedra will not appear).

cd ~/ros2_ws
. install/setup.bash
rviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz

Launch the environment in another window:

cd ~/ros2_ws
. install/setup.bash
ros2 launch env_builder env_builder.launch.py

Launch the agents in another window. If you want each agent to run in a different terminal, uncomment the prefix=['xterm -fa default -fs 10 -hold -e'] line in the launch file:

cd ~/ros2_ws
. install/setup.bash
ros2 launch multi_agent_planner multi_agent_planner_long.launch.py

Improvements

These are the potential structural improvements:

  • The jps3d package should be integrated in the path_finding_util package.

These are the potential parametric improvements:

  • Tuning the parameters for speed modulation to go faster in free environments.

These are the potential future features under development:

  • Dealing with dynamic obstacles.
  • Dealing with deadlocks when passing through narrow gaps from opposite directions.

References

[1] Toumieh, C. and Lambert, A., 2022. Voxel-grid based convex decomposition of 3d space for safe corridor generation. Journal of Intelligent & Robotic Systems, 105(4), p.87.

[2] Toumieh, C. and Lambert, A., 2022. Shape-aware Safe Corridors Generation using Voxel Grids. arXiv preprint arXiv:2208.06111

[3] Liu, S., Watterson, M., Mohta, K., Sun, K., Bhattacharya, S., Taylor, C.J. and Kumar, V., 2017. Planning dynamically feasible trajectories for quadrotors using safe flight corridors in 3-d complex environments. IEEE Robotics and Automation Letters, 2(3), pp.1688-1695.

Citation

@misc{toumieh2024highspeed,
      title={High-Speed Motion Planning for Aerial Swarms in Unknown and Cluttered Environments},
      author={Charbel Toumieh and Dario Floreano},
      year={2024},
      eprint={2402.19033},
      archivePrefix={arXiv},
      primaryClass={cs.RO}
}

multi_agent_pkgs's People

Contributors

augustindesombre avatar ctoumieh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

multi_agent_pkgs's Issues

Hi~Dear Dr, a little request @~@

Hello, I feel that this thing you are doing now has a great fundamental contribution to multi-UAV path planning. I have also built the multi_agent_pkgs environment based on my own interests, and the result is that you can see the static UAV and environment. However, the dynamic implementation steps of your UAV operation or path planning after obstacle avoidance have not been sent yet. Could you please send them to me? I want to run it and get a feel for the whole process of virtual simulation.

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.