Factory Task Manager - RoBorregos/smart-factory GitHub Wiki

Factory Task Manager

Overview

The process of assigning individual robots to sub-tasks of a given system-level task is called task allocation, and it is a key functionality required in our Multi-Robot System (MRS). To implement this functionality in the system, a module called "Factory Task Manager" was designed and implemented.

Since one objective of the project is to achieve as much flexibility as possible in the number of robots available during production, the algorithm to assign a task must be independent of the mobile robot platform. This means that it should be able to delegate a task T to the robot most suitable for such task without depending on a fixed number of robots to be available to receive it. As a consequence, each robot must be responsible of entering the selection process for the task.

Another consideration for the chosen algorithm is the small-scale number of mobile agents present in our system, which eliminates some issues that arise in the network when a much higher amount of robots are present.

Market-Based Auction

There are numerous papers describing this type of auction (check references), and a simplified version was implemented, where the following requirements are fulfilled:

  1. The team is given an objective that can be decomposed into sub components that are achievable by individuals or subteams.

  2. A global objective function quantifies the system designer’s preferences for all possible solutions.

  3. An individual utility function specified for each robot quantifies that robot’s preferences for its individual resource usage and contributions towards the team objective.

  4. A mapping is defined between the team objective function and individual and sub team utilities.

  5. Resources and individual or subteam objectives can be redistributed using a mechanism such as an auction.

Implementation in ROS

Each robot places a bid on a task asynchronously with the rest of the fleet in the TaskAuction topic. After all the bids are collected, the winning bid is announced and that robot is assigned the task, this is done by the Production Plan Coordinator node. To generate a bid, each robot has a cost function J(T) that determines how many resources would it take to perform a certain task T.

SystemOverview

The overall process is the following: item The task allocator divides the work order into defined tasks and publishes a new task that must be performed with its parameters to the network.

  1. The robots connected to the network receive the new task request and calculate the cost J(T) to complete such task.

  2. Each robot publishes its cost to the bid topic in the network.

  3. The central server determines which robot has the best bid to complete the task and notifies the winner to follow up with the execution of the task.

Future TODOs

  1. Develop the cost function in a topic running inside each robot.
  2. Connect the central server and the mobile robots in the same wireless network.