- #mechatronics
- #embedded
- #cad
- #web
Line-Following Delivery Robot
Arduino-based delivery robot built for the ETH Innovationsprojekt: line tracking with a custom motor shield, a spring-loaded shooter to deliver payloads, benchmark testing and a web interface.
2 min readLast updated
- Role
- Mechatronics & firmware lead
- Timeframe
- –
- Team
- 4 people
- Status
- Completed
- Tools
- Arduino
- C++
- SolidWorks
- KiCad
- 3D printing
- JavaScript
- Links
- Mean speed on the test track
- 0.42m/s
- Successful deliveries (n = 50)
- 96%
- Shooter landing accuracy at 1 m
- ±12mm
- Total mass incl. battery
- 1.1kg
Problem
The ETH Innovationsprojekt asked teams to build an autonomous robot that follows a marked track, stops at delivery stations and hands over a small payload — within a fixed budget, a 10-week timeline and with parts from the course kit. The evaluation rewarded speed, reliability over repeated runs, and the precision of the delivery itself.
Our main constraints:
- Budget: CHF 150 for everything not in the kit
- Size: footprint of max. 250 × 250 mm
- Reliability: at least 45 of 50 runs without manual intervention
Approach
Drive and sensing. A differential drive with two geared DC motors and an array of five reflective IR sensors. The line position is estimated as a weighted average of the sensor readings and fed into a PID controller running at 500 Hz on the Arduino.
Custom motor shield. Instead of stacking off-the-shelf boards, I sketched a single motor shield (dual H-bridge, current sensing, sensor headers, servo outputs) in KiCad. It reduced wiring errors and halved the stack height.
Spring-loaded shooter. Payloads are launched by a compression spring that is tensioned by a servo-driven cam and released by a latch. Launch distance is set by the cam angle, calibrated against measured landing positions.
Benchmark tests. We defined a fixed test protocol (50 runs, three track layouts, logged lap times and failures) and used it after every significant change, so design decisions were driven by data rather than by single impressive runs.
Web interface. The robot streams telemetry over serial to a small web app (Web Serial API), which shows sensor values and PID terms live and allows tuning gains without re-flashing.
Result
The robot completed 48 of 50 benchmark runs autonomously, with a mean track speed of 0.42 m/s and a shooter landing accuracy of ±12 mm at 1 m distance. Live tuning via the web interface cut our PID tuning time from hours to minutes.
What I would do differently: characterise the spring and cam earlier — the shooter needed two redesigns because the first spring constant estimate was off by about 30 %.
3D model
GLB · Simplified 3D model of the delivery robot chassis with drive wheels and shooter housing.
Drag to rotate · scroll or pinch to zoom