Master Thesis Project in Computer Engineering at Aarhus University 2024 on "Simulating Multi-agent Path Planning in Complex environments using Gaussian Belief Propagation and Global Path Finding". Available here (https://drive.google.com/file/d/12g-7bqcy_yfkZdpKzxQAErayFJQhu4sE/view?usp=sharing)
|:---------------------------------------------------------:|:---------------------------------------------------------:| | Waypoint Tracking | Path Tracking | | https://github.com/user-attachments/assets/832fe84b-4b8b-4473-bfe1-9d87153988af | https://github.com/user-attachments/assets/6b8df209-d1db-4f35-9271-1c61ef660ab6 |
The video below demonstrates some of the features of the simulation tool, and shows how the GBP algorithm can handle complex scenarios such as a multi-lane twoway junction.
magics-functionality-demo-trimmed-for-github.webm
The accompanying thesis is available online here.
Most dependencies used are available through the crates.io
registry. And should work on all major platforms supported by the cargo
build tool. Still some external dependencies are needed for the graphical session.
Dependencies | Platform Specific |
---|---|
udev |
Linux |
alsa-lib |
Linux |
vulkan-loader |
|
xorg.libX11 |
Linux + X11 |
xorg.libXcursor |
Linux + X11 |
xorg.libXi |
Linux + X11 |
xorg.libXrandr |
Linux + X11 |
libxkbcommon |
Linux + X11 |
wayland |
Linux + Wayland |
egl-wayland |
Linux + Wayland |
freetype |
|
fontconfig |
The exact name of the dependency might vary between platforms, and even between Linux distributions. Consult the respective package management tool used on your system for their exact names.
The ./flake.nix
file provides a development shell with all the necessary dependencies to run the project. If you have direnv
installed you can simply use the provided .envrc
and type direnv allow
to automatically enter it. Otherwise you can run:
# To enter the development environment
nix develop
The entire project can be build with the following command:
cargo build --release
cargo run --release --bin magics # Open the simulator
cargo run --release --bin magics -- --list # List all available scenarios
# Run a specific scenario
cargo run --release --bin magics -- -i <SCENARIO_NAME>
cargo run --release --bin magics -- --initial-scenario <SCENARIO_NAME>
The primary algorithm for GBP path planning is based on gbpplanner by Aalok Patwardhan from Imperial College London and Dyson Robotics Lab. As part of this thesis we have reimplemented and extended upon in Rust!