Module 3/5 · Weeks 7–9 · 27 h

Drones in warehouses

UAT 363 Unmanned Aircraft Systems Technology for Transportation and Smart Warehousing

About 90 minDraft, awaiting reviewLast updated 27 September 2026

Lesson

By the end of this module you will be able to

  1. Explain drone use in warehouses and the difference between stock taking and cycle counting
  2. Plan rack-scanning flights and estimate the time required
  3. Compare indoor positioning methods without GNSS, namely VIO, motion capture, UWB and AprilTag
  4. Compute position from ranges to UWB anchors by least squares

Prerequisites: UAT 363 modules 1–2 · UAT 322 (navigation and SLAM)

Why this matters

A medical store holds thousands of items on high racks. Counting by hand needs forklifts, takes a long time and often stops work. Differences between real stock and records mean medicines run out or expire unnoticed. A drone scanning the racks can count more often, but indoors there is no GNSS signal, so the drone must know its position some other way.

Drones in the warehouse

The ETH Zurich report (Wawrla and colleagues, 2019) studied 12 real deployments in three groups: inventory management, intra-logistics, and inspection and surveillance. It concludes that inventory management has the highest potential, while intra-logistics is not yet feasible because of battery and payload limits. The main challenges are limited flying space, navigation without GPS, integration with existing systems, and battery safety.

The same report distinguishes stock taking, counting the whole warehouse usually once a year, from cycle counting, counting part of it daily or weekly. Drones suit cycle counting, because they can recount often without stopping work.

Top view of seven grey rack rows with six aisles between them. A pink line shows the drone flying up and down each aisle in turn
Figure 1. Stock-scanning path in the warehouse

Example 1. Number of locations and scan time

Assumed warehouse: 6 aisles, racks 40 m long divided into 16 bays and 5 levels high. The drone scans both faces of the aisle at once, level by level, at 0.5 m/s.

import math

AISLES, RACK_M, BAYS, LEVELS = 6, 40.0, 16, 5
SPEED, LEVEL_CHANGE_S, AISLE_CHANGE_S, BATTERY_MIN = 0.5, 10, 30, 15

locations = AISLES * 2 * BAYS * LEVELS
per_aisle_s = LEVELS * RACK_M / SPEED + LEVELS * LEVEL_CHANGE_S
total_s = AISLES * per_aisle_s + (AISLES - 1) * AISLE_CHANGE_S
flights = math.ceil(total_s / 60 / BATTERY_MIN)
print(f"{locations} locations, {per_aisle_s / 60:.1f} min per aisle, "
      f"total {total_s / 60:.1f} min -> {flights} battery flights")
print(f"daily cycle count of one aisle covers {2 * BAYS * LEVELS} locations "
      f"= all {locations} in {AISLES} working days")
960 locations, 7.5 min per aisle, total 47.5 min -> 4 battery flights
daily cycle count of one aisle covers 160 locations = all 960 in 6 working days

Counting the whole warehouse at once needs several battery changes, but cycle counting one aisle a day takes under 15 minutes and covers the whole warehouse every week.

Indoor positioning

MethodPrincipleStrengthsLimits
VIO (visual-inertial odometry)Onboard camera plus IMU estimates motionNo installation in the buildingDrift accumulates; plain walls or low light are hard
Motion captureCameras around the room track markers on the droneVery high accuracyExpensive, limited area
UWBUltra-wideband radio ranging to anchors at known positionsWider coverage, independent of lightAnchors must be installed; obstructions bias ranges
AprilTagVisual fiducial markers at known positionsCheap, clearly identifiableMust be seen; used to correct drift

The PX4 guide explains feeding position from external systems (VIO or motion capture) into the EKF2 estimator and recommends a message rate of 30–50 Hz. UWB ranging is standardised in IEEE 802.15.4z-2020. The review by Alarifi and colleagues (2016) concludes that UWB performs better than other technologies for indoor positioning, while real accuracy depends on installation and environment and must be measured on site. AprilTag markers (Olson, 2011) serve both for positioning and as reference points on the racks.

A 20 by 10 metre room with four UWB anchors A1 to A4 at the corners. Blue dashed lines from each anchor to the drone are labelled r1 to r4 for the measured ranges
Figure 2. Positioning from ranges to UWB anchors

Example 2. Position from UWB ranges by least squares

The measured ranges carry small errors (assumed values). Subtracting the first equation from the others gives a linear system, solved by least squares.

import math

anchors = [(0, 0), (20, 0), (20, 10), (0, 10)]
true_pos = (7, 4)
noise = [0.05, -0.03, 0.04, -0.02]            # m
ranges = [math.dist(a, true_pos) + e for a, e in zip(anchors, noise)]

(x1, y1), r1 = anchors[0], ranges[0]
rows, rhs = [], []
for (xi, yi), ri in zip(anchors[1:], ranges[1:]):
    rows.append((2 * (xi - x1), 2 * (yi - y1)))
    rhs.append(r1 ** 2 - ri ** 2 + xi ** 2 - x1 ** 2 + yi ** 2 - y1 ** 2)

a11 = sum(r[0] * r[0] for r in rows); a12 = sum(r[0] * r[1] for r in rows)
a22 = sum(r[1] * r[1] for r in rows)
b1 = sum(r[0] * v for r, v in zip(rows, rhs)); b2 = sum(r[1] * v for r, v in zip(rows, rhs))
det = a11 * a22 - a12 * a12
x, y = (a22 * b1 - a12 * b2) / det, (a11 * b2 - a12 * b1) / det
print(f"ranges {[round(r, 2) for r in ranges]}")
print(f"estimate ({x:.2f}, {y:.2f}) m, error {math.dist((x, y), true_pos) * 100:.1f} cm")
ranges [8.11, 13.57, 14.36, 9.2]
estimate (7.01, 4.01) m, error 1.6 cm

Counting with images needs barcodes or labels on the boxes to be read. The RFly research (Ma and colleagues, 2017) instead used a drone as a relay to read and locate battery-free RFID tags in a warehouse, which does not require a direct view of the tag.

Module lab

Lab: scanning a mock rack

  1. Set up a mock rack in the lab with a barcode or AprilTag on every slot
  2. Apply Example 1 to the hospital store or lab dimensions and plan cycle counting
  3. Install the lab’s indoor positioning system (UWB or motion capture), feed positions into PX4 following the guide, and measure the error against reference points
  4. Apply Example 2 to real UWB ranges from several points and record the error
  5. Fly a manual or automatic scan in an enclosed area and record the tag read success rate

Common mistakes

Watch out

  • Using GNSS-dependent flight modes indoors
  • Not surveying UWB anchor positions accurately, shifting every position
  • Flying near people and forklifts without separating time or space
  • Trusting VIO for too long without references to correct drift
  • Not checking the tag read success rate before concluding stock is missing

Summary

  • Inventory management is the best-suited warehouse task according to the ETH report, and suits cycle counting
  • Estimate scan time from aisles, levels and speed, then plan the counting cycle
  • Indoors, use VIO, motion capture, UWB or AprilTag to feed position to the flight controller
  • Ranges to several anchors give position by least squares

Check your understanding

  1. Four aisles, two faces each, 20 bays per face and 4 levels. How many locations?
  2. How many minutes does it take to scan 4 levels of a 30 m rack at 0.5 m/s?
  3. How does stock taking differ from cycle counting?
  4. Why does VIO need references such as AprilTags?
  5. How many UWB anchors are needed at minimum for 2D positioning?
Answers
  1. locations
  2. s = 4 minutes
  3. Stock taking counts the whole warehouse once a year; cycle counting counts part of it daily or weekly
  4. VIO error accumulates over time, and references reset it
  5. 3 (not in a straight line); a fourth reduces the error

Key formulas

Range to an anchor
Linear equation after subtracting the first

Key references

  1. 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
  2. PX4 Autopilot. Using vision or motion capture systems for position estimation. PX4 guide (main). link
  3. Olson, E. (2011). AprilTag: A robust and flexible visual fiducial system. In 2011 IEEE International Conference on Robotics and Automation (pp. 3400–3407). IEEE. link
  4. IEEE. (2020). IEEE standard for low-rate wireless networks — Amendment 1: Enhanced ultra wideband (UWB) physical layers (PHYs) and associated ranging techniques (IEEE Std 802.15.4z-2020). link
  5. Alarifi, A., Al-Salman, A., Alsaleh, M., Alnafessah, A., Al-Hadhrami, S., Al-Ammar, M. A., & Al-Khalifa, H. S. (2016). Ultra wideband indoor positioning technologies: Analysis and recent advances. Sensors, 16(5), 707. link
  6. Ma, Y., Selby, N., & Adib, F. (2017). Drone relays for battery-free networks. In Proceedings of ACM SIGCOMM 2017 (pp. 335–347). ACM. 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

Module quiz

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

Knowledge domain: Delivery, indoor operations and warehousing · Control, autopilot and navigation