Warehouse and industrial applications
UAT 366 Indoor Autonomous and Multi-Unmanned Aircraft Systems
Lesson
By the end of this module you will be able to
- Split aisle-scanning jobs among several drones with the LPT rule and compare with the optimum
- Check time overlaps between drone zones and forklift and staff activity
- Design the zone layout, charging docks and operating rules for a factory warehouse
- Assess safety requirements and aviation rules for indoor flight
Why this matters
The factory wants the stock count finished before the morning shift starts. If jobs are split badly, one drone works far longer than the others and everyone waits for the slowest. And if a drone flies into an aisle while a forklift is working there, an accident may follow. This module brings everything in the course together into a real operating system for the factory warehouse.
Splitting jobs with the LPT rule
Splitting jobs of different lengths among identical machines to finish as early as possible (minimum makespan) is a hard problem. The LPT (longest processing time first) rule sorts jobs from longest to shortest and gives each next job to the machine that becomes free first. Graham (1969) proved that this rule is never worse than times the optimum.
Example 1 Splitting 8 aisles among 3 drones
Scan time per aisle, in minutes, is assumed.
from itertools import product
aisles = [14, 12, 11, 9, 8, 7, 6, 5]
M = 3
loads, plan = [0] * M, [[] for _ in range(M)]
for idx, t in sorted(enumerate(aisles, 1), key=lambda x: -x[1]):
k = loads.index(min(loads))
loads[k] += t
plan[k].append(f"A{idx}")
lpt = max(loads)
best = min(max(sum(t for t, a in zip(aisles, asg) if a == k) for k in range(M))
for asg in product(range(M), repeat=len(aisles)))
lower = max(sum(aisles) / M, max(aisles))
for k in range(M):
print(f"D{k + 1}: {plan[k]} = {loads[k]} min")
print(f"LPT makespan {lpt} min, optimum {best} min, lower bound {lower:.1f} min")
print(f"LPT / optimum = {lpt / best:.3f} (Graham bound {4 / 3 - 1 / (3 * M):.3f})")
D1: ['A1', 'A6'] = 21 min
D2: ['A2', 'A5', 'A7'] = 26 min
D3: ['A3', 'A4', 'A8'] = 25 min
LPT makespan 26 min, optimum 25 min, lower bound 24.0 min
LPT / optimum = 1.040 (Graham bound 1.222)
LPT is only 1 minute slower than the optimum and well within Graham’s bound. Exhaustive search works here because there are few jobs (3⁸ = 6,561 options), but a real warehouse may have hundreds of aisles, so LPT is a good, explainable choice.
Separating drones from forklifts and people
The safest approach is separation in time and space: drones fly an aisle only when it is free of forklifts and people. The warehouse management system knows when forklifts will enter which aisle, so it can be used to check the schedule before flight.
Example 2 Checking the drone schedule against forklift jobs
drone_slots = {"A1": (0, 14), "A2": (0, 12), "A3": (0, 11), "A4": (11, 20), "A5": (12, 20)}
forklift = [("A4", 18, 25), ("A2", 30, 40), ("A5", 5, 10)] # aisle, start, end (min)
BUFFER = 2 # buffer minutes between jobs
for aisle, f0, f1 in forklift:
d0, d1 = drone_slots.get(aisle, (None, None))
if d0 is None:
continue
clash = d0 < f1 + BUFFER and f0 < d1 + BUFFER
print(f"{aisle}: drone {d0}-{d1} min, forklift {f0}-{f1} min -> {'CONFLICT' if clash else 'ok'}")
A4: drone 11-20 min, forklift 18-25 min -> CONFLICT
A2: drone 0-12 min, forklift 30-40 min -> ok
A5: drone 12-20 min, forklift 5-10 min -> ok
A4 overlaps with a forklift, so one of the jobs must move. A5 is separated from the forklift job by exactly the buffer.
Safety and requirements
- Flight-controller systems: enable Collision Prevention (Module 3), set a geofence for the room, and set the behaviour on loss of position, for example landing immediately instead of returning to base, which needs a position.
- Charging docks: place them in a separate area away from combustible materials, and size their number to the flight cycle (Module 1 of UAT 364).
- Risk assessment: use a likelihood-severity matrix following the ICAO SMS guidance (UAT 362), considering effects on workers, goods and the fire-suppression system.
- Indoor flight rules: we found no CAAT announcement that states clearly whether flight inside a closed building falls under its requirements. Teams should ask CAAT through the UAS Portal and always follow the factory’s own safety rules.
The ETH Zurich report (Wawrla et al., 2019) identifies battery safety and integration with existing systems as key challenges for warehouse drones, so a well-designed system must address both from the start.
Module lab
Lab: a multi-drone stock-counting operations plan
- Measure scan time per aisle in the lab and use the code from Example 1 to split jobs among two or three drones.
- Create a hypothetical forklift schedule, check it with the code from Example 2 and adjust until nothing overlaps.
- Draw the zone layout, charging dock locations, fire exits and no-fly areas.
- Write the risk assessment and the behaviour on loss of position, low battery and lost communication.
- Test the whole system in the lab and record the actual finish time against the plan.
Common mistakes
Watch out
- Splitting jobs evenly by number of aisles without looking at each aisle’s time.
- No buffer between drone and forklift jobs.
- Setting return to base on loss of position, even though returning needs a position.
- Charging batteries near combustible goods.
- Assuming indoor flight has no requirements.
Summary
- The LPT rule splits jobs close to optimally, with Graham’s guaranteed bound.
- Separate drones from forklifts and people in time and space, and check the schedule with a buffer before flight.
- The system needs avoidance, a geofence, loss-of-position behaviour and safe charging docks.
- Ask CAAT about indoor flight and follow the factory’s requirements.
Check your understanding
- Jobs of 10, 8, 6 and 4 minutes with 2 drones: what makespan does LPT give?
- What is Graham’s bound for 2 drones?
- Total work 60 minutes, longest job 15 minutes, 3 drones: what is the lower bound on completion time?
- A drone at 10–20 minutes and a forklift at 21–30 minutes with a 2-minute buffer: do they overlap?
- Why is automatic return to base unsuitable when position is lost indoors?
Answers
- 10 → drone 1, 8 → drone 2, 6 → drone 2 (total 14), 4 → drone 1 (total 14); makespan 14 minutes.
- minutes
- Yes, because 10 < 30 + 2 and 21 < 20 + 2.
- Returning to base requires knowing the position, so on loss of position the drone should land immediately.
Key formulas
| Bound of the LPT rule | |
| Lower bound on completion time |
Key references
- Graham, R. L. (1969). Bounds on multiprocessing timing anomalies. SIAM Journal on Applied Mathematics, 17(2), 416–429. link
- Wawrla, L., Maghazei, O., & Netland, T. (2019). Applications of drones in warehouse operations (White paper). ETH Zurich, D-MTEC, Chair of Production and Operations Management. link
- 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
- PX4 Autopilot. Collision prevention. PX4 user guide (main). link
- International Civil Aviation Organization. (2018). Safety management manual (Doc 9859, 4th ed.). link
- สำนักงานการบินพลเรือนแห่งประเทศไทย. (2569). ประกาศ กพท. เรื่อง หลักเกณฑ์และวิธีการในการอนุญาตให้ผู้บังคับหรือปล่อยอากาศยานซึ่งไม่มีนักบิน ประเภทอากาศยานที่ควบคุมการบินจากภายนอก ที่มีน้ำหนักไม่เกิน 25 กิโลกรัม ปฏิบัติแตกต่างไปจากเงื่อนไขที่กำหนด พ.ศ. 2569 (มีผล 17 พฤษภาคม 2569). link
Further reading
Study the assigned knowledge units in advance, review media and take the module quiz
In class / field
Intensive lab and field practice recorded in a lab notebook
Learning evidence: Lab notebook signed by the instructor