Skip to content

aalpatya/gbpplanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GBPPlanner: Distributing Multi-Robot Collaboration with Gaussian Belief Propagation

This code accompanies the 2023 Robotics Automation Letters (RA-L) paper. It was also presented at ICRA 2023 (Oral).

Project page: https://aalpatya.github.io/gbpplanner

Watch the Code tutorial: https://www.youtube.com/watch?v=jvoPJ8GLiHk

Initial Setup

Install Raylib dependencies as mentioned in https://github.com/raysan5/raylib#build-and-installation. This will be platform dependent. For raylib itself, the CMakeLists.txt file should automatically find the library if it is already installed on your system, else, it will try and fetch it using FetchContent.

Usually included with Linux (but you may need to install on other platforms)

MacOS specific

I found that adding the following to ~/.zshrc worked:

export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
export OpenMP_ROOT=$(brew --prefix)/opt/libomp
export LDFLAGS="$LDFLAGS -L${OpenMP_ROOT}/lib"

and then run:

brew install llvm
brew install libomp
brew link --force libomp

All Operating Systems

Clone the repository with the submodule dependencies:

git clone https://github.com/aalpatya/gbpplanner.git
cd gbpplanner

Use CMAKE to set up the build environment and then run 'make':

mkdir build
cd build
cmake ..
make

Run examples

Make any changes to the simulations you want in config/config.json and then run:

./gbpplanner

Examples config files are in config directory, and include:

  • config.json (default: robots travel to the opposite sides of a circle in free space)
  • circle_cluttered.json (robots travel to the opposite sides of a circle around some obstacles)
  • junction.json (robots travel in a crossroad junction)
  • junction_twoway.json (robots can travel in both directions, in any road and can turn left, straight, right (red, green, blue) respectively)

Run the simulation:

./gbpplanner --cfg ../config/circle_cluttered.json

Or create your own config_file.json and run:

./gbpplanner --cfg ../config_file.json

During simulation

Press 'H' to display help and tips!

Use the mouse wheel to change the camera view (scroll : zoom, drag : pan, shift+drag : rotate)

Press 'spacebar' to transition between camera keyframes which were set in src/Graphics.cpp.

Play with the code

Edit the parameters in the config files and see the effects on the simulations!

Watch the Code tutorial: https://www.youtube.com/watch?v=jvoPJ8GLiHk

Own formations

You may want to create your own formations and scenarios for the robots.

Towards the end of src/Simulator.cpp there is a function called createOrDeleteRobots(), where you may add your own case.

Custom Obstacles

  • Create an image file (.png) with BLACK obstacles on a WHITE background (see assets/imgs for examples)
  • Covert your image to a distance field image using the function in assets/scripts/create_distance_field.py
  • Edit the OBSTACLE_FILE value in your config.json file with the new distance image

Cite us

@ARTICLE{gbpplanner,
        author={Patwardhan, Aalok and Murai, Riku and Davison, Andrew J.},
        journal={IEEE Robotics and Automation Letters}, 
        title={Distributing Collaborative Multi-Robot Planning With Gaussian Belief Propagation}, 
        year={2023},
        volume={8},
        number={2},
        pages={552-559},
        doi={10.1109/LRA.2022.3227858}}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •