Module 5/5 · Weeks 13–15 · 27 h

Multi-robot systems

UAT 308 Automation and Robotics Technology

About 90 minDraft, awaiting reviewLast updated 28 September 2026

Lesson

By the end of this module you will be able to

  1. Classify multi-robot task allocation problems with the Gerkey and Matarić taxonomy
  2. Allocate tasks with sequential single-item auctions and compare with the optimum
  3. Compute the meeting point and time between a drone and a moving UGV
  4. Design UGV–drone integration that tolerates communication loss

Prerequisites: UAT 308 Modules 1–4 · UAT 366 Module 4 (multiple drones)

Why this matters

A large solar farm uses several UGVs and drones at once. UAT 366 allocated tasks to drones in a warehouse and checked the closest approach between aircraft. The drone knowledge base’s unit on coordinating multiple drones covers task allocation, formation control and inter-aircraft collision avoidance, and its deep-dive unit on coordinating drone swarms over LoRa Mesh explains network limits in areas without coverage. The review by Chung et al. (2018) surveys research on aerial robot swarms. This module closes the course with two questions: who does which task, and where does the drone meet the vehicle again?

A taxonomy of task allocation

Gerkey and Matarić (2004) classify problems on three axes: robots do one task or several at once (ST/MT), tasks need one robot or several (SR/MR), and allocation is instantaneous or planned over time (IA/TA). Matching one robot to one task (ST-SR-IA) can be solved optimally with the Hungarian method (Kuhn, 1955), but panel inspection, where each vehicle visits several points in sequence, is ST-SR-TA, which is much harder, so auctions are popular.

Sequential single-item auctions

Koenig et al. (2006) study sequential single-item auctions. In each round, every robot bids on each unallocated task; the bid is the extra distance if that task is inserted into its route at the best position. The lowest bidder wins the task, and a new round begins. The method distributes computation, needs little communication and can accept new tasks during work, but it does not guarantee the optimal answer.

Example 1 Two vehicles, five inspection points

UGV-1 is at (0, 0) m and UGV-2 at (100, 0) m. Panel inspection points A to E must be visited with the smallest total distance for both vehicles (no return to start) (simulated data).

import itertools
import numpy as np

robots = {"UGV-1": np.array([0.0, 0.0]), "UGV-2": np.array([100.0, 0.0])}
tasks = {"A": (10, 40), "B": (30, 80), "C": (60, 20), "D": (90, 70), "E": (50, 60)}
tasks = {k: np.array(v, float) for k, v in tasks.items()}

def route_cost(start, order):
    pts = [start] + [tasks[t] for t in order]
    return sum(np.linalg.norm(pts[i+1] - pts[i]) for i in range(len(pts) - 1))

def best_insert(start, order, t):
    best = None
    for k in range(len(order) + 1):
        new = order[:k] + [t] + order[k:]
        c = route_cost(start, new)
        if best is None or c < best[0]:
            best = (c, new)
    return best

routes = {r: [] for r in robots}
left = list(tasks)
while left:                       # auction one task at a time: lowest added cost wins
    bids = []
    for r in robots:
        base = route_cost(robots[r], routes[r])
        for t in left:
            c, new = best_insert(robots[r], routes[r], t)
            bids.append((c - base, r, t, new))
    bid, r, t, new = min(bids)
    routes[r] = new
    left.remove(t)
auction = sum(route_cost(robots[r], routes[r]) for r in robots)
print("auction:", {r: "".join(o) for r, o in routes.items()}, f"total {auction:.1f} m")

best = None                        # exhaustive search for the optimal answer
for mask in itertools.product([0, 1], repeat=len(tasks)):
    groups = [[t for t, m in zip(tasks, mask) if m == g] for g in (0, 1)]
    total = 0
    for r, g in zip(robots, groups):
        total += min(route_cost(robots[r], list(p)) for p in itertools.permutations(g))
    if best is None or total < best:
        best = total
print(f"optimal total {best:.1f} m  auction is {100*(auction/best - 1):.1f}% worse")
auction: {'UGV-1': 'A', 'UGV-2': 'CDEB'} total 213.8 m
optimal total 200.2 m  auction is 6.8% worse

The auction gives UGV-1 only point A, while UGV-2 detours through four points, 213.8 m in total. The optimum from exhaustive search is UGV-1 doing A, B, E, D and UGV-2 doing only C, 200.2 m in total. The auction is about 7% worse because each round takes the cheapest task at that moment without looking at the rest. In real work with hundreds of points, exhaustive search is impossible, and a gap of this size is usually acceptable in exchange for speed and flexibility.

Two diagrams side by side: on the left the auction result of 213.8 metres, with blue UGV-1 going to point A only and orange UGV-2 going to C, D, E and B; on the right the optimum of 200.2 metres, with UGV-1 going to A, B, E and D and UGV-2 going to C only
Figure 1 Auction routes compared with the optimal answer

Meeting a moving vehicle

A UGV carrying a drone need not stop and wait: the drone should fly to where the vehicle will be. If the vehicle drives straight along x at and the drone starts at flying at , the earliest meeting point is where the flight distance equals exactly , a quadratic in . If the drone keeps flying at the vehicle’s current position instead, it takes longer.

Example 2 A drone returning to land on a vehicle driving along a farm road

The UGV drives at 5 m/s along a road on the x axis from x = 0. The drone is at (300, 400) m, flies at 10 m/s and has 120 s of flight time left (simulated data).

import numpy as np

vg, va = 5.0, 10.0                 # UGV and drone speeds m/s
drone = np.array([300.0, 400.0])   # drone position when it starts returning m
battery_s = 120.0                  # remaining flight time s

# UGV drives along x from 0: find t where |(vg t, 0) - drone| = va t
a = va**2 - vg**2
b = 2 * vg * drone[0]
c = -(drone @ drone)
t_meet = (-b + np.sqrt(b**2 - 4*a*c)) / (2*a)
print(f"earliest meeting t = {t_meet:.1f} s at x = {vg*t_meet:.1f} m")

p, t = drone.copy(), 0.0           # compare: drone chases the current UGV position
while True:
    car = np.array([vg * t, 0.0])
    d = car - p
    if np.linalg.norm(d) < va * 0.1:
        break
    p += d / np.linalg.norm(d) * va * 0.1
    t += 0.1
print(f"pursuit t = {t:.1f} s")
print(f"battery left at meeting {battery_s - t_meet:.0f} s")
earliest meeting t = 41.1 s at x = 205.5 m
pursuit t = 46.6 s
battery left at meeting 79 s

Flying to intercept at the meeting point takes 41.1 s, 5.5 s faster than pursuit, leaving 79 s of battery as margin. A real system must keep sending the vehicle’s speed plan to the drone, and if the vehicle changes speed or communication fails, there must be a backup meeting point where the vehicle stops and waits.

An equal-scale diagram: a grey horizontal road at the bottom with the UGV starting at the left end; the blue drone above at 300, 400 metres; a straight green line down to the meeting point at x equals 205.5 metres taking 41.1 seconds; a curved pink dashed line chasing the vehicle to a slightly farther point taking 46.6 seconds
Figure 2 Rendezvous of a drone with a moving UGV

Integration that tolerates communication loss

Multi-robot systems over wide areas often lose communication for periods. Good designs give each robot work it can continue alone when out of contact, define rally points and return times, use two network tiers (for example Wi-Fi for large data and LoRa for position and status), and always show the control centre the latest status together with the age of that data.

Module lab

Lab: a joint UGV and drone mission

  1. Set 8 inspection points in the field, have two vehicles auction them following Example 1, and compare total distance with a manual split
  2. Add a new task mid-mission, auction only that task, and record how routes change
  3. Simulate a drone in SITL returning to land on a target on a slowly moving vehicle, computing the meeting point with Example 2
  4. Cut one vehicle’s communication mid-mission and check that it continues or returns to the rally point as designed
  5. Write a report on the system architecture, problems found and proposed improvements

Common mistakes

Watch out

  • Using one-to-one matching when robots must do several points in sequence
  • Assuming auctions always give the optimal answer
  • Having the drone chase the vehicle’s current position instead of computing a meeting point
  • Having no backup meeting point when communication fails or the vehicle changes plan
  • Not showing data age on the control-centre display

Summary

  • The ST/MT, SR/MR and IA/TA taxonomy helps choose an allocation method
  • Sequential single-item auctions bid added cost, distribute computation, but do not guarantee the optimum
  • The meeting point with a moving vehicle comes from a quadratic equation and is faster than pursuit
  • Multi-robot systems must continue safely when communication is lost

Check your understanding

  1. Which taxonomy class is a task where each vehicle visits several points in sequence?
  2. Which method gives the optimal answer for matching one robot to one task?
  3. An existing route is 120 m; inserting a new task makes it 150 m. What is the bid?
  4. The vehicle drives at 5 m/s and the drone flies at 10 m/s. Why should the drone fly to a meeting point rather than pursue?
  5. The auction gives 213.8 m and the optimum 200.2 m. By what percentage is the auction worse?
Answers
  1. ST-SR-TA
  2. The Hungarian method (Kuhn, 1955)
  3. m
  4. Pursuit aims at where the vehicle is about to leave, so the path curves and is longer

Key formulas

Bid (added cost)
Rendezvous equation

Key references

  1. Gerkey, B. P., & Matarić, M. J. (2004). A formal analysis and taxonomy of task allocation in multi-robot systems. The International Journal of Robotics Research, 23(9), 939–954. link
  2. Koenig, S., Tovey, C., Lagoudakis, M., Markakis, V., Kempe, D., Keskinocak, P., Kleywegt, A., Meyerson, A., & Jain, S. (2006). The power of sequential single-item auctions for agent coordination. In Proceedings of AAAI-06 (pp. 1625–1629). AAAI Press. link
  3. Kuhn, H. W. (1955). The Hungarian method for the assignment problem. Naval Research Logistics Quarterly, 2(1–2), 83–97. link
  4. Chung, S.-J., Paranjape, A. A., Dames, P., Shen, S., & Kumar, V. (2018). A survey on aerial swarm robotics. IEEE Transactions on Robotics, 34(4), 837–855. link

Further reading

Study the assigned knowledge units in advance, review media and take the module quiz

In class / field

Lab or field practice from worksheets with a safety checklist

Learning evidence: Checked worksheets and quiz results

Module quiz

This is a formative self-check, not a graded exam

Knowledge domain: Automation, robotics and swarms · Communications, networks and IoT