Skip to content

The code for MR.CAP, or Multi-robot Joint Control and Planning for Object Transport, an approach for multi robot joint planning and control using factor graphs. We release the code as open-source.

License

Notifications You must be signed in to change notification settings

h2jaafar/mr.cap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License


Logo

MR.CAP: Multi-robot Joint Control and Planning for Object Transport

MR.CAP, or Multi-robot Joint Control and Planning for Object Transport, is a novel approach to solve simultaneous multi-robot control and planning problems. The algorithm is developed in C++, making use of factor graph inference and an innovative problem reduction to provide a robust, fast and scalable solution. Our approach outperforms state-of-the-art methods in terms of optimization time, scalability and robustness. The algorithm is tested in simulation and on a real robot system. The paper was accepted for publication in IEEE Control Systems Letters. See the website for more information.
Explore the docs »

Website · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

main-fig

MR.CAP, or Multi-robot Joint Control and Planning for Object Transport, is a novel approach to solve simultaneous multi-robot control and planning problems. The algorithm is developed in C++, making use of factor graph inference and an innovative problem reduction to provide a robust, fast and scalable solution. Our approach outperforms state-of-the-art methods in terms of optimization time, scalability and robustness. The algorithm is tested in simulation and on a real robot system. The paper was accepted for publication in IEEE Control Systems Letters. See the website for more information.

This repository serves to provide the robotics community for a platform to test and develop the algorithm further, as well as to provide a platform for future research in the field of multi-robot control and planning. Our code is released as open source under the MIT license. We hope that this will help to accelerate the development of multi-robot systems and to provide a platform for future research in the field of multi-robot control and planning.

If you find this project useful, please give it a star! Thanks! If you use our code, please cite our paper:

@ARTICLE{10380779,
  author={Jaafar, Hussein Ali and Kao, Cheng-Hao and Saeedi, Sajad},
  journal={IEEE Control Systems Letters}, 
  title={MR.CAP: Multi-Robot Joint Control and Planning for Object Transport}, 
  year={2024},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/LCSYS.2024.3349989}}

(back to top)

Built With

(back to top)

Getting Started

To setup the project locally, follow these simple steps. The demo will allow you to experiment with the algorithm and to test it on your own system.

Prerequisites

First, ensure that you have installed GTSAM, and it's necessary prerequisites, as well as proper linking to the library. See GTSAM for more information.

First, navigate to a directory of your choice, and clone the GLEW and GTSAM repositories.

sudo apt-get install libglew-dev
sudo apt-get install libglfw3-dev
sudo apt install libxinerama-dev libxcursor-dev xinput libxi-dev 
git clone https://github.com/glfw/glfw
cd glfw
cmake -G "Unix Makefiles"
make
sudo make install
cd ..
git clone https://github.com/borglab/gtsam.git
cd gtsam
git checkout 618ac28f2cc407e27e9eaf4e36ece64bc236b8e7
mkdir build && cd build
cmake -DGTSAM_ALLOW_DEPRECATED_SINCE_V42:=OFF .. # disable deprecated functionality for compatibility
make -j4 check # optional, run unit tests  
sudo make install
echo 'export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/share:${LD_LIBRARY_PATH}' >> ~/.bashrc
source ~/.bashrc

Installation

  1. Clone the repo
    git clone https:://github.com/h2jaafar/mr.cap.git
  2. Build the project
    cd mr.cap
    mkdir build && cd build
    cmake ..
    make
  3. Run the demo
    ./mrcap_demo

(back to top)

Usage

There are three ways to use the algorithm:

  1. Pure C++ simulation (i.e non-physics based)
  2. Gazebo simulation
  3. Real robot system

To use the pure C++ simulation, simply run the demo as described above. This will run the algorithm on a simulated system, and launch a GUI using ImGui and ImPlot to visualize the results.

demo

There are several configurable parameters in the demo. These are:

  • Number of robots
  • Number of obstacles
  • Number of steps
  • Start and goal positions of the centroid
  • Robot geometry
  • Optimization parameters
  • Covariance parameters
  • Psuedo-disturbances (for testing) as well as many more, found in include/mrcap/MainWindow.h. We have tried to make as many of these parameters as possible configurable, to allow for easy experimentation, however, some of them may require some searching in the code to find.

Some images of the demo are shown below:

demo2 demo3

To use the Gazebo simulation, first install Gazebo and ROS2. I highly recommend using a custom ROS2 Gazebo world for multi-robot simulation I developed alongside this project. It can be found here. This will allow you to easily launch multiple robots in Gazebo, and to control them using ROS2.

gazebo

Finally, to use the algorithm on real robot systems is simply a matter of sim2real. Simply remap the topics to the real robot topics, and you're good to go! See include/mrcap/ROSCommunications.h for details regarding the topics subscribed and published to.

In our experimentation, we published robot velocites to /B0n/cmd_vel where n is the robot number. We used a Vicon motion capture system to obtain robot positions, and subscribe to the /vicon/B0n/B0n topics. You can simply substitute this with your localization stack of choice.

real

(back to top)

Roadmap

  • Pure C++ simulation
  • Gazebo simulation
  • Real robot system
  • Configuration files
  • Unit tests

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Hussein Ali Jaafar - husseinali.jaafar@torontomu.ca

Project Link: https://github.com/h2jaafar/mr.cap

(back to top)

Acknowledgments

Major thanks to my co-authors and supervisors for their help and support in this project. This project would not have been possible without them. Specifically Howard (Cheng-Hao) for the late nights helping debug.

GTSAM and the GTSAM team for their amazing library and support.

And of course, ROS and ROS2 for their amazing libraries and support.

(back to top)

About

The code for MR.CAP, or Multi-robot Joint Control and Planning for Object Transport, an approach for multi robot joint planning and control using factor graphs. We release the code as open-source.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published