Mars Rover Autonomy

Autonomy software for Yale's Mars rover: a mission coordinator that drives Nav2 navigation, tested in Gazebo simulation.

Autonomy Lead · Yale Mars Rover Team · Sep 2026 to now · tested in Gazebo simulation

Results

The problem

For University Rover Challenge 2027 the rover has to run two autonomy missions on its own. Commands can arrive at the wrong moment, navigation can fail or be cancelled, and old results can show up late. A new student team also needed a shared, reproducible ROS environment before anyone could test autonomy at all.

What I built

The hard part

A localization bug that only showed up sometimes. In fresh simulation runs the fused position of a rover sitting still could start kilometres away, and a successful retry hid the bug. I traced it to robot_localization: a GPS fix that arrived before the datum was set got projected from the default origin and cached. I pinned the package with a five-line guard, made the installer verify the exact revision and patch, and added a test that forces GPS to arrive first. Every startup position then stayed within 1 m of the origin.

How it fits together

The coordinator only trusts results tagged with the current goal, so a late answer from a cancelled goal can never end a mission. I integrated the coordinator with fused localization and fixed its startup race.

Decisions

Tech: ROS 2, Nav2, Python, Gazebo, Docker.

By David Antwi (david.antwi@yale.edu). Markdown version: /work/mars-rover-autonomy.md. Full profile: /llms.txt.