Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://kei18.github.io/sssp/
Quick Multi-Robot Motion Planning by Combining Sampling and Search (IJCAI-23)
https://kei18.github.io/sssp/
mapf motion-planning multi-agent-pathfinding multi-robot path-planning sssp
Last synced: 3 months ago
JSON representation
Quick Multi-Robot Motion Planning by Combining Sampling and Search (IJCAI-23)
- Host: GitHub
- URL: https://kei18.github.io/sssp/
- Owner: Kei18
- License: mit
- Created: 2021-11-29T03:43:45.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-09-24T15:01:04.000Z (over 1 year ago)
- Last Synced: 2024-08-02T03:07:38.946Z (6 months ago)
- Topics: mapf, motion-planning, multi-agent-pathfinding, multi-robot, path-planning, sssp
- Language: Julia
- Homepage: https://kei18.github.io/sssp/
- Size: 41.9 MB
- Stars: 20
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
sssp
===
[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENCE.txt)
[![CI](https://github.com/Kei18/sssp-private/actions/workflows/ci.yaml/badge.svg)](https://github.com/Kei18/sssp-private/actions/workflows/ci.yaml)The code repository of the paper "[Quick Multi-Robot Motion Planning by Combining Sampling and Search](https://kei18.github.io/sssp/)" (SSSP; IJCAI-23).
![](./assets/demo_reduced.gif)
- It is written in Julia (≥v1.8).
- The accompanied solvers are PRM [1], RRT [2], RRT-Connect [3], PP (PRM-based) [4], CBS (PRM-based) [5], and SSSP.## Setup
```sh
git clone https://github.com/Kei18/sssp.git && cd sssp
julia --project=. -e 'using Pkg; Pkg.instantiate()'
```## Minimum Example
Here, I give a minimal example of the MRMP library. You can implement the below with RELP or JupyterLab.
#### Enter RELP
```sh
julia --project=.
```#### Open JupyterLab
```sh
julia --project=. -e "using IJulia; jupyterlab()"
```### Step 1. Generate Instance
```jl
import Random: seed!
using MRMPseed!(46)
ins = MRMP.gen_random_instance_StatePoint2D(;
N = 5,
rad = 0.1,
num_obs = 3,
rad_obs = 0.1,
)
config_init, config_goal, obstacles, ins_params... = ins # example of ins_params: radius, base positions of arms
```The first time may take time for JIT compiling.
You can visualize the generated instance as follows:```jl
MRMP.plot_instance!(ins...)
```![](./assets/minimum-example-ins.png)
### Step 2. Define Utility Functions
```jl
connect = gen_connect(config_init[1], obstacles, ins_params...) # connection checker
collide = gen_collide(config_init[1], ins_params...) # collision checker
check_goal = gen_check_goal(config_goal) # goal judge
```### Step 3. Solve Problem
```jl
@time solution, roadmaps = MRMP.Solvers.SSSP(
config_init,
config_goal,
connect,
collide,
check_goal;
TIME_LIMIT = 10,
)
validate(config_init, connect, collide, check_goal, solution) # check validity of solution
```### Step 4. Refine Solution
```jl
(TPG, solution, cost) = smoothing(solution, connect, collide; VERBOSE=1)
println(cost)
```### Step 5. Visualize Solution
```jl
plot_anim!(config_init, config_goal, obstacles, ins_params...; solution=solution, interpolate_depth=3, fps=30)
```You now get `tmp.gif` like below.
![](./assets/minimum-example.gif)
## Utilities
#### Test
```sh
julia --project -e 'using Pkg; Pkg.test()'
```#### Formatting
```sh
julia --project=. -e 'using JuliaFormatter; format(".")'
```## Reproduction
[![v1.2](https://img.shields.io/badge/tag-v1.2-blue.svg?style=flat)](https://github.com/Kei18/sssp/releases/tag/v1.2)
```sh
julia --project=. --threads=auto
```### benchmark generation
```jl
include("scripts/benchmark_gen.jl"); @time main("scripts/config/bench/capsule3d", "num_instances=50")
```### hyperparameter optimization with [Hyperopt.jl](https://github.com/baggepinnen/Hyperopt.jl)
```jl
include("scripts/hypraopt.jl"); @time main("scripts/config/hypra/params.yaml", "scripts/config/hypra/point2d.yaml")
```### evaluate algorithms
```jl
include("./scripts/eval.jl"); @time main("./scripts/config/exp/point2d.yaml", "time_limit_sec=300")
```## Notes
- Several planning examples are available in `./notebooks`.
- Dubins paths are computed by [Dubins.jl](https://github.com/kaarthiksundar/Dubins.jl).## Licence
This software is released under the MIT License, see [LICENSE.txt](LICENCE.txt).## Reference
1. Kavraki, L. E., Svestka, P., Latombe, J. C., & Overmars, M. H. (1996).
Probabilistic roadmaps for path planning in high-dimensional configuration spaces.
IEEE transactions on Robotics and Automation.
1. LaValle, S. M. (1998). Rapidly-exploring random trees: A new tool for path planning.
1. Kuffner, J. J., & LaValle, S. M. (2000).
RRT-connect: An efficient approach to single-query path planning.
In ICRA.
1. Erdmann, M., & Lozano-Perez, T. (1987). On multiple moving objects. Algorithmica.
1. Sharon, G., Stern, R., Felner, A., & Sturtevant, N. R. (2015).
Conflict-based search for optimal multi-agent pathfinding.
Artificial Intelligence (AIJ).