The multi-robot task distribution project aims to develop a scalable and efficient system for distributing tasks among a fleet of autonomous robots in various environments. The aim for the robots is to collaborate and fulfills the tasks which is picking up parcels from multiple locations and collectiong it into one place.(In this project dummy parcles are used instead on real pick and drop but the implementation will be same as in dummy setup used)
The project seeks to optimize task allocation, minimize response times, and enhance overall mission performance.
The system will be capable of dynamically assigning tasks to multiple robots based on their availability, capabilities, and proximity to task locations.
Robust communication protocols will enable seamless information exchange between robots and a central task distribution module, ensuring timely updates and coordination.
Prioritization modules will be implemented to handle tasks, ensuring tasks are addressed promptly.
Robots will employ adaptive routing strategies to optimize their paths and avoid congestion, leading to efficient task execution and resource utilization.
Using the existing robots, create a map of the environment and navigate through it (using single robots)
Improve robot localization by adding IMU sensor data.
Use Zeromq to distribute navigation tasks to robots.
Improve/cleanup existing robot ROS workspace
Implement a centralized task distribution module and interface it with the robot fleet for seamless communication and coordination.
The project will focus on developing software solutions for task distribution and coordination, assuming the availability of a fleet of autonomous robots.
Hardware aspects such as robot design and sensor integration will be considered within the context of software implementation requirements.
Robot Module Navigatation of multiple robot with shared memory which fulfills the consolidation of orders in warehouse environments
Task distribution algorithm implementation which distributes the tasks to each robot(Load balancer).
Shared memory module which acts as open source of information which is available to entire system including robots.
Documentation covering system architecture, algorithms, and usage guidelines.
Ubuntu 20.04
ROS Noetic
Python
C++
ZeroMq
Mqtt
Git
You need ROS Noetic version to use these packages.
Make sure you have the following installed on your system:
First, create a new ROS workspace and initialize it:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
Clone the Package Navigate to the src directory of your workspace and clone the repository:
cd ~/catkin_ws/src
git clone git@github.com:HBRS-SDP/ss24-multi-robot-task-distribution.git
Build the Package After cloning the repository, go back to the root of your workspace and build it using
catkin_make
You can now run the nodes provided by your package. Open a new terminal, source the workspace, and use rosrun or roslaunch to start your nodes:
# Source the workspace
source ~/catkin_ws/devel/setup.bash
roslaunch mrtd_pkg warehouse.launch
roslaunch mrtd_pkg world.launch
Run the ROS node for shared memory module from the shared_memory package folder.
rosrun shared_memory shared_memory.py
Run the python executable for task distributor from the scr folder.
cd ~/catkin_ws/src
python3 task_distributor.py