{"id":27237891,"url":"https://github.com/caomuqing/neptune","last_synced_at":"2025-04-10T18:28:46.519Z","repository":{"id":60696369,"uuid":"479732475","full_name":"caomuqing/neptune","owner":"caomuqing","description":"A trajectory planning framework for multiple robots: paper accepted in IEEE T-RO","archived":false,"fork":false,"pushed_at":"2023-09-15T06:07:42.000Z","size":22938,"stargazers_count":27,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-09-15T21:26:35.969Z","etag":null,"topics":["multiagent-planning","multirobot","planning","robotics"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/caomuqing.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}},"created_at":"2022-04-09T13:20:42.000Z","updated_at":"2023-08-22T02:05:24.000Z","dependencies_parsed_at":"2022-10-03T08:40:11.372Z","dependency_job_id":null,"html_url":"https://github.com/caomuqing/neptune","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caomuqing%2Fneptune","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caomuqing%2Fneptune/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caomuqing%2Fneptune/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caomuqing%2Fneptune/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caomuqing","download_url":"https://codeload.github.com/caomuqing/neptune/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248271385,"owners_count":21075799,"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","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":["multiagent-planning","multirobot","planning","robotics"],"created_at":"2025-04-10T18:28:45.883Z","updated_at":"2025-04-10T18:28:46.513Z","avatar_url":"https://github.com/caomuqing.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NEPTUNE: Non-Entangling Trajectory Planning for Multiple Tethered Unmanned Vehicles #\n### **Accepted for publication in IEEE Transactions on Robotics (T-RO)**\n\nA 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).\n### \n![NEPTUNE: Non-Entangling Trajectory Planning for Multiple Tethered Unmanned Vehicles](./neptune/imgs/multi_obst.gif)\n\n## Citation\n\nIf you find this package useful, please cite [NEPTUNE: Non-Entangling Planning for Multiple Tethered Unmanned Vehicles](https://arxiv.org/abs/2212.01536) ([pdf](https://arxiv.org/abs/2212.01536), [video](https://youtu.be/8b1RlDvQsi0)):\n\n```bibtex\n@ARTICLE{cao2023neptune,\n  author={Cao, Muqing and Cao, Kun and Yuan, Shenghai and Nguyen, Thien-Minh and Xie, Lihua},\n  journal={IEEE Transactions on Robotics}, \n  title={NEPTUNE: Nonentangling Trajectory Planning for Multiple Tethered Unmanned Vehicles}, \n  year={2023},\n  volume={},\n  number={},\n  pages={1-19},\n  doi={10.1109/TRO.2023.3264950}}\n```\n\n## General Setup\n\nNEPTUNE has been tested with Ubuntu 16.04/ROS Kinetic and Ubuntu 18.04/ROS Melodic\n\nThis package requires [Gurobi Optimizer](https://www.gurobi.com/products/gurobi-optimizer/) (free academic lisence available). You can test your installation typing `gurobi.sh` in the terminal.\n\nInstall some necessary libraries:\n\n```bash\nsudo apt-get install libgmp3-dev libmpfr-dev tmux xterm -y   \n```\nInstall CGAL library:\n\n```bash\nmkdir -p ~/library/cgal #this command creates a folader named library in your home directory\n#alternatively you can use another location\ncd ~/library/cgal\nwget https://github.com/CGAL/cgal/releases/download/releases%2FCGAL-4.14.2/CGAL-4.14.2.tar.xz\ntar -xf CGAL-4.14.2.tar.xz\ncd CGAL-4.14.2/\ncmake . -DCMAKE_BUILD_TYPE=Release\nsudo make install   \n```\n\nCreate a workspace and clone NEPTUNE and its submodules:\n\n```bash\ncd ~/ \u0026\u0026 mkdir catkin_ws_neptune \u0026\u0026 cd catkin_ws_neptune \u0026\u0026 mkdir src \u0026\u0026 cd src\ngit clone https://github.com/caomuqing/neptune.git\ncd neptune \u0026\u0026 git submodule init \u0026\u0026 git submodule update\n```\n\nBuild the packages:\n\n```bash\ncd ~/catkin_ws_neptune\nrosdep install --from-paths src --ignore-src -r -y\ncatkin config -DCMAKE_BUILD_TYPE=Release\ncatkin build\n```\n\nIf catkin build results in error due to Gurobi:\n```\n“gurobi_continuous.cpp:(.text.startup+0x74): undefined reference to\n`GRBModel::set(GRB_StringAttr, std::__cxx11::basic_string\u003cchar,\nstd::char_traits\u003cchar\u003e, std::allocator\u003cchar\u003e \u003e const\u0026)'”\n```\nThe solution is:\n\n```bash\ncd /opt/gurobi912/linux64/src/build  #the location depends on your installation directory\nsudo make\nsudo cp libgurobi_c++.a ../../lib/\n```\n\n## Running Simulations\n\n### Single-agent\n![Neptune: Single robot benchmark](./neptune/imgs/single.gif)\n\nTo launch:\n```\ncd ~/catkin_ws_neptune \u0026\u0026 bash src/neptune/neptune_single_benchmark.sh\n```\nTo shut down all processes, use the shutdown [commands](#cleanly-shut-down-simulation)\n\n\n### Multi-agent obstacle-free\n\n![Neptune: Multiple robot benchmark](./neptune/imgs/mtlp.gif)\n\nThe command below launches 5 robots with random goals automatically sent to them. It is best if your PC has more than 5 CPU cores.\n\n```\ncd ~/catkin_ws_neptune \u0026\u0026 bash src/neptune/neptune_mtlp_benchmark.sh\n```\nTo shut down all processes, use the shutdown [commands](#cleanly-shut-down-simulation)\n\n### Multi-agent obstacle-rich\n\n![Neptune: Multiple robot obstacle-rich](./neptune/imgs/multiple.gif)\n\nTo launch:\n```\ncd ~/catkin_ws_neptune \u0026\u0026 bash src/neptune/neptune_multi_obstacle.sh\n```\n\n### Multi-agent simulation with Unity and AGX Dynamics\nThis simulation requires a windows computer running Unity with the AGX Dynamics plugin (request trial [here](https://www.algoryx.se/agx-unity/)), and a Unbuntu computer having followed the [general setup](#general-setup) above. Two computers are connected using a LAN cable (read [ROS-Unity integration](https://github.com/Unity-Technologies/Unity-Robotics-Hub/blob/main/tutorials/ros_unity_integration/README.md) for more setup details).\n\nThe unity package containing the scenes with our tethered drone models is [here](https://drive.google.com/file/d/1VJBm-ERsw9e6_UiGV-W3uzLhE_lfuD_O/view?usp=sharing). Before importing the package to Unity, you should have imported the AGX Dynamic package and [ROS-TCP-Connector](https://github.com/Unity-Technologies/ROS-TCP-Connector).\nFor the Unbuntu machine, you will additionally need ROS packages [tcc](https://github.com/caomuqing/tcc), [mav_control_rw](https://github.com/caomuqing/mav_control_rw) and [ROS-TCP-Endpoint](https://github.com/Unity-Technologies/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.\n\nTo launch:\n```\ncd ~/catkin_ws_neptune \u0026\u0026 bash src/neptune/neptune_multi_unity.sh\n```\n\n### Cleanly shut down simulation:\n```\nrosnode kill -a\ntmux kill-server\nkillall xterm\n```\n## Known Issues\n\nWe are looking into a bug that will cause the planning node to crash occasionally.\n\n\n## Credits:\nThis package uses some existing functions and unilities from [MADER](https://github.com/mit-acl/mader), such as trajectory messages, cgal unilities and parameter class.\n\nThis package uses some C++ classes from the [DecompROS](https://github.com/sikang/DecompROS) repo (included in the `thirdparty` folder).\n\n\n---------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaomuqing%2Fneptune","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaomuqing%2Fneptune","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaomuqing%2Fneptune/lists"}