{"id":19526636,"url":"https://github.com/zju-fast-lab/primitive-planner","last_synced_at":"2025-10-10T17:47:25.164Z","repository":{"id":107909387,"uuid":"537607165","full_name":"ZJU-FAST-Lab/Primitive-Planner","owner":"ZJU-FAST-Lab","description":"Primitive-Swarm: An Ultra-lightweight and Scalable Planner for Large-scale Aerial Swarms","archived":false,"fork":false,"pushed_at":"2025-09-26T02:03:51.000Z","size":6191,"stargazers_count":114,"open_issues_count":2,"forks_count":11,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-09-26T04:09:04.263Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZJU-FAST-Lab.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,"zenodo":null}},"created_at":"2022-09-16T20:17:12.000Z","updated_at":"2025-09-26T02:03:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"7927b816-cfed-4378-bf3d-94df0fbcdb55","html_url":"https://github.com/ZJU-FAST-Lab/Primitive-Planner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ZJU-FAST-Lab/Primitive-Planner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZJU-FAST-Lab%2FPrimitive-Planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZJU-FAST-Lab%2FPrimitive-Planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZJU-FAST-Lab%2FPrimitive-Planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZJU-FAST-Lab%2FPrimitive-Planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZJU-FAST-Lab","download_url":"https://codeload.github.com/ZJU-FAST-Lab/Primitive-Planner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZJU-FAST-Lab%2FPrimitive-Planner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004823,"owners_count":26083783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-11T01:11:10.437Z","updated_at":"2025-10-10T17:47:25.157Z","avatar_url":"https://github.com/ZJU-FAST-Lab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Primitive_Planner\n\n## Paper\n\nPrimitive-Swarm: An Ultra-lightweight and Scalable Planner for Large-scale Aerial Swarms, Accepted by IEEE Transactions on Robotics 2025. [[IEEE TRO]](https://ieeexplore.ieee.org/document/11015263) [[Arxiv]](https://arxiv.org/abs/2502.16887) [[Video]](https://www.bilibili.com/video/BV1Q4PNeeE7D?spm_id_from=333.788.videopod.episodes\u0026vd_source=acac17792f24970ff76c5eae9ba38289\u0026p=2)\n\nAuthor list: Jialiang Hou, Xin Zhou, Neng Pan, Ang Li, Yuxiang Guan, Chao Xu, Zhongxue Gan, Fei Gao\n\n```\n@ARTICLE{Hou2025PrimitiveSwarm,\n  author={Hou, Jialiang and Zhou, Xin and Pan, Neng and Li, Ang and Guan, Yuxiang and Xu, Chao and Gan, Zhongxue and Gao, Fei},\n  journal={IEEE Transactions on Robotics}, \n  title={Primitive-Swarm: An Ultra-Lightweight and Scalable Planner for Large-Scale Aerial Swarms}, \n  year={2025},\n  volume={41},\n  number={},\n  pages={3629-3648},\n  keywords={Robots;Trajectory;Collision avoidance;Computational efficiency;Scalability;Planning;Libraries;Robot sensing systems;Drones;Heuristic algorithms;Autonomous aerial vehicles;collision avoidance;motion planning;swarm robotics;trajectory optimization},\n  doi={10.1109/TRO.2025.3573667}}\n\n```\n\n\n## System Overview\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"misc/system overview.png\" /\u003e\n\u003c/p\u003e\n\n\n## Requirements\n\nThe code is tested on clean Ubuntu 20.04 with ROS noetic installation.\n\nInstall the required package toppra:\n```\nsudo pip3 install toppra catkin_pkg PyYAML empy matplotlib pyrfc3339\n```\n\n## Run the code\n\n### 1. Download and compile the code\n\n```\ngit clone https://github.com/ZJU-FAST-Lab/Primitive-Planner.git\ncd Primitive-Planner\ncatkin_make -DCMAKE_BUILD_TYPE=Release\n```\n\n### 2. Generate the motion primitive library\n\n```\ncd src/scripts\npython3 swarm_path.py\n```\nThe generated motion primitive library is stored in \"src/planner/plan_manage/primitive_library/\".\n\n### 3. Run the planner\n\nIn the \"Primitive-Planner/\" directory:\n```\nsource devel/setup.bash # or setup.zsh\ncd src/scripts\npython3 gen_position_swap.py 20 # It will generate the swarm.launch with 20 drones\nroslaunch primitive_planner swarm.launch\n```\n\nWait until all the nodes have their launch process finished and keep printing \"[FSM]: state: WAIT_TARGET. Waiting for trigger\".\n\nOpen another terminal, publish the trigger\n```\ncd src/scripts\nbash pub_trigger.sh\n```\nThen the drones (drone number is 40) will start to fly like this\n\u003cp align = \"center\"\u003e\n\u003cimg src=\"misc/40_drone.gif\" width = \"500\" height = \"347\" border=\"5\" /\u003e\n\u003c/p\u003e\n\nChange the drone number when executing \"python3 gen_position_swap.py \u003cdrone_number\u003e\". \n\nBefore starting the \"roslaunch\" command, please open another terminal and run \"htop\" to monitor the Memory usage and CPU usage. Each drone requires about 200 MB memory. Keep the htop opened for entire flight.\n\nThe computation time is printed on the terminal in blue text, named as \"plan_time\". \nTo get the accurate computation time, please fix the CPU frequency to its maximum by\n```\nsudo apt install cpufrequtils\nsudo cpufreq-set -g performance\n```\nOtherwise the CPU will run in powersave mode with low frequency.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzju-fast-lab%2Fprimitive-planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzju-fast-lab%2Fprimitive-planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzju-fast-lab%2Fprimitive-planner/lists"}