Problem
The rover had to move reliably across a line-based map it had never seen, report discovered paths to a remote server, react to blocked routes, and navigate to a target once one was assigned.
University course project · 2023
A LEGO EV3 rover that follows lines, detects obstacles, maps an unknown planet, and coordinates routes with a central server.
A three-person robotics project built in Python on ev3dev. I was responsible for the robot layer: motor control, sensor calibration, PID line following, station scanning, and obstacle handling. We integrated it with the team's odometry, graph routing, and MQTT communication modules for autonomous exploration.
The rover had to move reliably across a line-based map it had never seen, report discovered paths to a remote server, react to blocked routes, and navigate to a target once one was assigned.
I implemented the EV3 hardware-control layer, including calibration, a PID steering loop, motor-position sampling, station centering, path scanning, and ultrasonic obstacle detection. The team connected it to odometry, an in-memory planet graph, Dijkstra routing, and MQTT callbacks.
The integrated rover completed the course's final autonomous run, combining physical navigation, map exploration, route selection, and server communication on the EV3 platform.
The software runs on ev3dev Linux. A controller coordinates the robot, odometry, planet graph, and communication facade. The robot module drives the motors and reads color and distance sensors; the graph module tracks explored and blocked paths; an asynchronous MQTT client exchanges path and target messages with the course server.
Requests, parses, and validates target coordinates from the central server via MQTT.
A calibrated proportional-integral-derivative loop keeps the rover centered on the track.
Station centering, four-direction path scans, motor-position sampling, and obstacle recovery.
Maps the maze in memory and computes the shortest path to the assigned goal.
Calibrated the sensors and established telemetry sessions via MQTT.
Integrated line following, path scanning, odometry, and graph-based exploration.
Refined the routing algorithms to compute paths quickly.
The rover completed the formal evaluation under real-time constraints.