a forklift that knows where it is
summer research internship at a defence company. autonomous forklift, naval dockyard, no GPS. we ended up writing our own radio ranging firmware.
may – jul 2025 · research intern · Krishna Defence, at IIT Gandhinagar · validated
The problem: a naval dockyard wants autonomous forklifts. GPS doesn’t work under all that steel. Wheel encoders drift every time a wheel slips. The forklift needs to know where it is, within a couple of centimeters, across a 200 × 200 m yard.
We looked at bluetooth, LoRa, RFID, radar, cameras — and landed on UWB: radio beacons that measure distance by timing the signal flight. Put three around the yard, do the math, you have a position.
The bot: a Raspberry Pi running ROS, a UWB tag, an IMU, LIDAR, SLAM and NAV2 on top.

the firmware part
The stock firmware maxes out at 45 meters. A dockyard is 200. So we wrote our own ranging protocol (double-sided two-way ranging) and tuned the radio ourselves — switching between channel 5 and channel 9, adjusting preamble length and PAC size, re-deriving the timing delays for every configuration.
| config | preamble | range | accuracy |
|---|---|---|---|
| short | 128 | ~10 m | ±2 cm |
| mid | 256 | ~50 m | ±10 cm |
| long | 512 | 315 m | ±40 cm |
Longer preamble, more range, slower updates. There’s no free lunch, only a trade — here, play with it:
instrument · drag the range, the physics answers
- range
- 10 m
- profile
- short
- preamble
- 128
- accuracy
- ±2 cm
- firmware
- stock OK
We tested in stages: a 2×2 m room, then a 7×7 m yard with no encoders and no LIDAR, then 50×60 m at IIT Gandhinagar — where we checked our numbers against a surveyor’s total station instead of trusting our own code. Final result: 0.4% error across 10,000 m².
What stuck with me: every time we made the test area 10× bigger, something new broke that the small test had hidden. And numbers only count when an independent instrument agrees with them.
made with
- UWB (Qorvo DWM3001CDK)
- custom DS-TWR firmware
- ROS
- SLAM + NAV2
- Raspberry Pi 4B
- IMU
- LIDAR