Skip to content

Latest commit

 

History

History
211 lines (147 loc) · 8.06 KB

README.md

File metadata and controls

211 lines (147 loc) · 8.06 KB

KoKoBot

Introduction

KoKoBot stands for Cooperative and Collaborative Robotic Platform. KoKoBot automates optimal task planning, online trajectory planning, and collision avoidance for multiple manipulators sharing a common workspace. The flexibility and online execution of the task and motion planning approach creates a safe and collaborative workplace for both robots and humans. By embracing KoKoBot, industries can unlock a new level of operational efficiency and safety, enabling optimal task execution, collision-free and deadlock-free navigation, and harmonious collaboration between robots and human workers. The integration of the Robot Operating System (ROS) further enhances the system's adaptability.

This repository contains an implementation of optimal task execution and collision avoidance using distributed model predictive control (DMPC). Further, the algorithm ensures efficient trajectory planning and safe navigation of multiple robots, where each robot plans its own trajectory by taking the trajectory of its neighbors into account. Communication between DMPCs is realized by using the Robot Operating System (ROS), enabling coordination among multiple robots.

Structure

KoKoBot possesses the ability to dynamically adapt and adjust trajectories in real-time, allowing it to respond effectively to environmental changes and uncertainties. Additionally, the control scheme supports multiple robots, allowing for cooperative operation as depicted in the provided picture.

control_structure

Videos

Simulation

The following videos are simulated using the simultion environment Gazebo, illustrating how the algorithm can be scaled to a larger system up to four robots. The videos demonstrate cooperation between the robots performing pick-and-place tasks with seamless coordination and efficiency.

Simultion setup with two UR3 robots

animated

Simulation setup with three UR3 robots

animated

Simulation setup four UR3 robots

animated

Real Hardware

The successful implementation with real hardware using two UR5e robots demonstrates the algorithm's credibility and practicality, showcasing its ability to efficiently execute the disassembly process of three trucks in cooperaiton.

animated

Documentation

KoKoBot's documentation and information is available at WSKL-Website.

Installation

Prerequisites

Python packages

Python libraries can be installed from PyPl via:

pip install casadi==3.6.3
pip install numpy==1.25.1
pip install scipy==1.7.3

Building up the simulation in Gazebo

The following instructions assume that a Catkin workspace has been created at ~/catkin_ws and that the source space is at ~/catkin_ws/src. Update paths appropriately if they are different on the build machine.

In all other cases the packages will have to be build from sources in a Catkin workspace:

# retrieve the sources
git clone https://github.com/ngafur/kokobot_DMPC

sudo mv ~/kokobot_DMPC/gazeboWorld ~/carkin_ws/src

cd ~/catkin_ws

# checking dependencies (again: replace '$ROS_DISTRO' with the ROS version you are using)
rosdep update
rosdep install --rosdistro $ROS_DISTRO --ignore-src --from-paths src

# building
catkin_make

# activate this workspace
source ~/catkin_ws/devel/setup.bash

replace $ROS_DISTRO with Noetic, Melodic or kinetic, depending on which ROS version you have installed.

Preparing the solver

The optimization problem of DMPC (trajectory planner) is formulated in the Casadi framework and solved using the IPOPT solver. The IPOPT solver can be set up from Link.

Getting Started

To run the code:

1- Run the ROS-Master. Actullay it is preferable to run ros-master through following command, otherwise roslaunch can be suffient.

roscore 

2- Run the gezboo simulation after the installation of universal robot UR5e and robotiq gripper for two robots.

roslaunch ur_e_gazebo ur5e.launch

3- Run the Online trajectory planner using DMPC algorithm for two robots.

  1. First you need to open the right directory
cd ~/kokobot_OS/onlineTrajectoryPlanner
  1. Start Coodinator and wait for "Waiting for start message":
python3 Coordinator.py
  1. Inititalize robot (30) and wait for "Waiting for start message":
python3 main_robot_ROS_R1.py
  1. Inititalize robot (29) and wait for "Waiting for start message":
python3 main_robot_ROS_R2.py
  1. Synchronized Start:
python3 startSynchronized.py

The terminal will ask to enter "go". This must be done twice. First go will start a calculation of the trajectory and the terminal windows of the main_robot... script will output "Solve_Succeeded; Waiting for start message.". Then you can enter "go" the second time which will start the pick and place algorithm.

Citation

If you are using an Online Trajectory Planner in your published research, kindly cite it using the following format:

@inproceedings{Gafur.2021,
 author = {Gafur, Nigora and Yfantis, Vassilios and Ruskowski, Martin},
 title = {Optimal scheduling and non-cooperative distributed model predictive control for multiple robotic manipulators},
 pages = {390--397},
 publisher = {IEEE},
 isbn = {978-1-6654-1714-3},
 booktitle = {2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
 year = {2021},
 doi = {10.1109/IROS51168.2021.9636118 }
}
@article{Gafur.2022b,
 author = {Gafur, Nigora and Kanagalingam, Gajanan and Wagner, Achim and Ruskowski, Martin},
 year = {2022},
 title = {Dynamic Collision and Deadlock Avoidance for Multiple Robotic Manipulators},
 url = {https://kluedo.ub.rptu.de/frontdoor/index/index/docId/7098},
 keywords = {collision avoidance;deadlock;distributed model predictive control;motion control;multiple robotic manipulators;robotic manipulators;ROS},
 number = {10, 2022, 55766 - 55781},
 issn = {2169-3536},
 journal = {IEEE Access},
}

Further work

Additional research and developments based on the implemented algorithm can be accessed through the following links:

1- Dynamic path planning and reactive scheduling for a robotic manipulator using nonlinear model predictive control

2- Human-robot interaction:

License and Disclaimer

Copyright 2023 Nigora Gafur.

Source code is licensed under the MIT License. You may obtain a copy of the License at https://opensource.org/license/mit/

This repository is maintained by Nigora Gafur & Khalil Abuibaid.