Giter Site home page Giter Site logo

h2jaafar / mr.cap Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 2.97 MB

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: MIT License

CMake 0.12% C 17.53% C++ 82.35%

mr.cap's Introduction

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
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 - [email protected]

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)

mr.cap's People

Contributors

h2jaafar avatar

Stargazers

jixiang li avatar  avatar 徐振磊 avatar Sajad Saeedi avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.