{"id":40341369,"url":"https://github.com/lis-epfl/multi_agent_pkgs","last_synced_at":"2026-01-20T09:03:21.358Z","repository":{"id":222694348,"uuid":"689356389","full_name":"lis-epfl/multi_agent_pkgs","owner":"lis-epfl","description":"Multi-agent motion planning packages (HDSM method)","archived":false,"fork":false,"pushed_at":"2025-02-21T18:22:35.000Z","size":234806,"stargazers_count":99,"open_issues_count":1,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-21T18:29:42.496Z","etag":null,"topics":["aerial-robotics","motion-planning","multiagent-planning","obstacle-avoidance"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lis-epfl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-09T14:50:19.000Z","updated_at":"2025-02-21T18:22:39.000Z","dependencies_parsed_at":"2024-06-12T22:21:51.906Z","dependency_job_id":null,"html_url":"https://github.com/lis-epfl/multi_agent_pkgs","commit_stats":null,"previous_names":["lis-epfl/multi_agent_pkgs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lis-epfl/multi_agent_pkgs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lis-epfl%2Fmulti_agent_pkgs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lis-epfl%2Fmulti_agent_pkgs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lis-epfl%2Fmulti_agent_pkgs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lis-epfl%2Fmulti_agent_pkgs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lis-epfl","download_url":"https://codeload.github.com/lis-epfl/multi_agent_pkgs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lis-epfl%2Fmulti_agent_pkgs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28599842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T08:51:33.170Z","status":"ssl_error","status_checked_at":"2026-01-20T08:51:10.855Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aerial-robotics","motion-planning","multiagent-planning","obstacle-avoidance"],"created_at":"2026-01-20T09:03:21.298Z","updated_at":"2026-01-20T09:03:21.351Z","avatar_url":"https://github.com/lis-epfl.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Multi-Agent Planning Packages\nThe code for the paper \"High-Speed Motion Planning for Aerial Swarms in Unknown and Cluttered Environments\", by Charbel Toumieh and Dario Floreano, published in [IEEE Transactions on Robotics](https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10599811) - ([pdf](https://arxiv.org/abs/2402.19033), [video](https://youtu.be/Af8mODuES4s)).\n\nThe 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.\n\n**This project is continuously under development.**\n\n|10 agents circular exchange (forest) | 10 agents traversing forest / wall / forest |\n| ------------------------- | ------------------------- |\n\u003ca target=\"_blank\" href=\"https://youtu.be/Af8mODuES4s\"\u003e\u003cimg src=\"./imgs/circular.gif\" width=\"313\" height=\"275\" alt=\"circular exchange\"\u003e\u003c/a\u003e |\u003ca target=\"_blank\" href=\"https://youtu.be/Af8mODuES4s\"\u003e\u003cimg src=\"./imgs/linear.gif\" width=\"440\" height=\"275\" alt=\"linear navigation\"\u003e\u003c/a\u003e |\n\n|10 agents traversing loops | Hardware experiments on nano-drones (Crazyflie)|\n| ------------------------- | ------------------------- |\n|\u003ca target=\"_blank\" href=\"https://youtu.be/Af8mODuES4s\"\u003e\u003cimg src=\"./imgs/loops.gif\" width=\"313\" height=\"275\" alt=\"loops\"\u003e\u003c/a\u003e | \u003ca target=\"_blank\" href=\"https://youtu.be/Af8mODuES4s\"\u003e\u003cimg src=\"./imgs/hardware.gif\" width=\"440\" height=\"275\" style=\"margin:20px 20px\" alt=\"hardware\"\u003e\u003c/a\u003e|\n\nTo get started you can skip to [Getting Started](#Getting-Started). This repo contains the following packages:\n* `convex_decomp_util`: package for Safe Corridor generation based on [[1]](#1) and [[2]](#2).\n* `decomp_ros`: package for Safe Corridor generation and visualization based on [[3]](#3).\n* `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.\n* `jps3d`: a modified version of [jps3d](https://github.com/KumarRobotics/jps3d) that checks for traversibilty when generating a path to make sure we can generate a Safe Corridor around it.\n* `mapping_util`: ROS2 package for voxel grid generation (clearing out voxels that are in the field of view of the drone).\n* `path_finding_util`: package for path finding and path tools such as path shortening.\n* `voxel_grid_util`: package for voxel grid class and raycasting function.\n* `multi_agent_planner`: ROS2 package for multi-agent planning (uses all the other packages).\n\nAt the end of this documentation you can find:\n* [Improvements](#Improvements): improvements to the packages that are yet to be implemented.\n* [References](#References): references used throughout this text.\n* [Citation](#Citation): bibtex citation for latex.\n\n\n## Getting Started\n### Install gurobi\nDownload gurobi 10.0.* from this [link](https://www.gurobi.com/downloads/gurobi-software/). Follow the installation instructions in this [link](https://support.gurobi.com/hc/en-us/articles/4534161999889-How-do-I-install-Gurobi-Optimizer-). Finally, install the license by going to this [link](https://portal.gurobi.com/), creating a license and installing it (instructions on how to install it are shown when you create it).\n\nThen, build gurobi and copy the library:\n``` shell script\ncd /opt/gurobi1002/linux64/src/build  #Note that the name of the folder gurobi1002 changes according to the Gurobi version\nsudo make\nsudo cp libgurobi_c++.a ../../lib/\n```\n\n### Create and build workspace\nFirst install `setup_tools`:\n``` shell script\npip install setuptools==65.5.1\n```\nCreate 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: \n``` shell script\nmkdir -p ~/ros2_ws/src\ncd ~/ros2_ws/src\ngit clone https://github.com/lis-epfl/multi_agent_pkgs\ncd ..\ncolcon build --symlink-install --packages-select jps3d decomp_util convex_decomp_util path_finding_util voxel_grid_util decomp_ros_msgs decomp_ros_utils \nsource install/setup.bash\ncolcon build --symlink-install --packages-select env_builder_msgs env_builder mapping_util multi_agent_planner_msgs multi_agent_planner\n```\n\n## Running the simulation\nTo switch between a known and unknown envrionment, you can set the variable `free_grid` in the launch file to `true` and `false` respectively.\n### Multiple agents in a circular configuration\nLaunch rviz2 in a terminal (if you didn't build `decomp_ros_util` due to OGRE conflicts, the polyhedra will not appear).\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nrviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz\n```\nLaunch the environment in another window (if you want an empty environement replace `env_builder.launch.py` with `env_builder_empty.launch.py`):\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nros2 launch env_builder env_builder.launch.py\n```\nLaunch 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:\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nros2 launch multi_agent_planner multi_agent_planner_circle.launch.py\n```\n\n### Multiple agents going through forest + wall + forest \nLaunch rviz2 in a terminal (if you didn't build `decomp_ros_util` due to OGRE conflicts, the polyhedra will not appear).\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nrviz2 -d ~/ros2_ws/src/multi_agent_pkgs/multi_agent_planner/rviz/rviz_config_multi.rviz\n```\nLaunch the environment in another window:\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nros2 launch env_builder env_builder.launch.py\n```\nLaunch 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:\n``` shell script\ncd ~/ros2_ws\n. install/setup.bash\nros2 launch multi_agent_planner multi_agent_planner_long.launch.py\n```\n\n## Improvements\nThese are the potential structural improvements:\n* The `jps3d` package should be integrated in the `path_finding_util` package. \n\nThese are the potential parametric improvements:\n* Tuning the parameters for speed modulation to go faster in free environments.\n\nThese are the potential future features under development:\n* Dealing with dynamic obstacles.\n* Dealing with deadlocks when passing through narrow gaps from opposite directions.\n\n## References\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e\nToumieh, C. and Lambert, A., 2022. Voxel-grid based convex decomposition of 3d space for safe corridor generation. Journal of Intelligent \u0026 Robotic Systems, 105(4), p.87.\n\n\u003ca id=\"2\"\u003e[2]\u003c/a\u003e\nToumieh, C. and Lambert, A., 2022. Shape-aware Safe Corridors Generation using Voxel Grids. arXiv preprint arXiv:2208.06111\n\n\u003ca id=\"3\"\u003e[3]\u003c/a\u003e\nLiu, 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.\n\n## Citation\n```bibtex\n@article{toumieh2024high,\n  title={High-speed motion planning for aerial swarms in unknown and cluttered environments},\n  author={Toumieh, Charbel and Floreano, Dario},\n  journal={IEEE Transactions on Robotics},\n  year={2024},\n  publisher={IEEE}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flis-epfl%2Fmulti_agent_pkgs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flis-epfl%2Fmulti_agent_pkgs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flis-epfl%2Fmulti_agent_pkgs/lists"}