Skip to content
Subsystems·Chapter 4.8

Software stack and autonomy

Autonomy decides 100 points of the 2027 score, and it is the only subsystem that can lose a task for a reason invisible in the hardware. Two route targets are exact coordinates inside 1 m, the hill has no guaranteed approach, and one target sits out of radio line of sight by design. The stack that wins is unremarkable in framework terms and precise in three places: the error budget at the stop, the terrain model on the hill, and the state machine around the astronaut.

5 of 100Score without an autonomy stackThe suit camera and microphone are the whole score2027S-URC27-RULES
1 mRoute-target stop toleranceTwo 25-point targets, taken in either order2027S-URC27-RULES
0.25–0.55 mPosition error at the stopRoot-sum-square of six sources, estimated rather than measured2027S-URC27-QA
15Follow! points from a gestureDevice 5, sign 5, audio 10, gesture 152027S-URC27-RULES

Key takeaways

  • A perfect chassis with no autonomy scores 5 of 100, the EVA suit camera and microphone. Autonomy is not a bonus task.
  • The 1 m stop is an error budget, not a feature. Six sources root-sum-square to 0.25–0.55 m, and heading error multiplied by distance dominates as soon as the rover is more than 10 m from its last fix.
  • The framework is not the differentiator. 9 of 11 teams with public code use ROS 2, and UMD Loop publishes the most textbook-correct Nav2 configuration in the field and finished 32nd overall in 2026 S-URC26-SCORES. Missouri S&T uses no ROS at all and won 2025 and 2026.
  • Follow! is a ladder, not a rung. Mode switching inside the mission is allowed [AUQ6], so a design that attempts gesture, falls back to audio and ends at the button adds probability at each step and never subtracts points.

What the subsystem must do

The Autonomy Mission is 40 minutes and 100 points, and software touches all of it S-URC27-RULES §1.e.i. Two route targets carry 25 points each, must be reached within 1 m of exact coordinates in either order, and require an arrival indication the judge can see S-URC27-RULES S-URC27-QA S-URC27-QA §1.e.xvii AUQ16 AUQ18. The astronaut sub-mission carries the other 50: a drive to a suited team-mate, five commands in binding order, a 15-point Follow!, a 5-point Stay!, a 10-point Fetch!, a 5-point Come! and a 5-point Give! S-URC27-RULES S-URC27-RULES S-URC27-QA §1.e.iv §1.e.x AUQ13. One target sits behind the hill and out of radio line of sight, so the stack must keep deciding with no link at all S-URC27-RULES §1.e.xvi.

Leaving autonomy is priced. An operator stop costs 20 % of that task, teleoperation back to a previously visited point costs 50 % capped at 50 % per task, and a physical intervention costs 20 % of the mission with the clock still running S-URC27-RULES S-URC27-RULES S-URC27-RULES §1.e.xi §1.e.xviii §3.e.viii. The rover’s own autonomous stop is free and the command may be re-given S-URC27-RULES §1.e.xi, which turns self-recovery from an error path into a feature worth engineering.

One requirement is not written as one. Judges score hands-off behaviour by observation rather than by reading code S-URC27-QA AUQ21, so the mode topic, the rear LED and the operator posture belong to the software contract S-URC27-RULES §1.e.ii.

The numbers that size the design

The budget, ladder and latency rows are engineering estimates from stated parameters. The rule, framework and configuration rows are sourced.

Quantity Value Basis
1 m route stop, error allocation root-sum-square 0.25–0.55 m, leaving 0.45–0.75 m margin Six-source budget, engineering judgement
Stop distance at 1.0 m/s, 0.3 m/s² ≈1.7 m, twice the tolerance Kinematics: the stop is a controlled terminal approach
Follow! ladder gesture 15 · audio 10 · sign 5 · device 5, maximum 15 The method, not the capability, sets the score S-URC27-RULES §1.e.vi
Expected Follow! value gesture 8.25 · audio 7.00 · device 4.75 points Points multiplied by an assumed success probability
Teams on ROS 2 9 of 11 with public code Read from the public code, last commit checked 2026-10-25
ROS 2 Humble end of life May 2027, one month before the 2–5 June finals S-ROS-REP2000
ArUco at 10 m, 1080p/60° 25 px on the 15 cm tag, 4.2 px per module A terminal aid only, inside about 5 m
Glass-to-glass latency 80–230 ms one way; published guidance below 500 ms Capture and encode 40–90 ms, radio 20–80, decode 20–60 S-TELEOP-LATENCY-IEEE
UMD Loop published configuration Smac Dubin, 1.5 m turn radius · pure pursuit 1.0 m/s, 2.5 m lookahead · goal tolerance 1.0 m · DEM slope cap 15° A real 2027-shaped Nav2 setup S-GH-UMD-ATHENA

Design space, in one table

Decision Options Recommended for a first build
OS and middleware Jazzy 2024–2029 · Humble, end of life May 2027 · Rolling · ROS 1 · a custom RoveComm-class protocol Ubuntu 24.04 with ROS 2 Jazzy when two or more software people continue; Humble only if the JetPack image forces it, with migration planned for spring 2027
Localisation dual-antenna RTK with a dual EKF · custom Kalman filter · wheel odometry · visual or lidar odometry Dual-antenna RTK, robot_localization dual EKF, wheel odometry and a magnetometer as a third yaw check
Map source GNSS waypoints only · DEM slope costmap · onboard SLAM · hybrid A 1 m DEM into a slope costmap plus a live obstacle layer; waypoints alone fail the hill by construction
Global planner NavFn · Smac 2D with Dubin · Route Server · custom A · RRT SmacPlanner2D over the DEM costmap, with the Route Server where graph-level semantics matter
Local planner Regulated Pure Pursuit · MPPI · DWB · lattice · custom model-predictive control Pure pursuit at or below 1.0 m/s with a 2.5 m lookahead; MPPI when someone enjoys tuning critics
Behaviour layer Nav2 behaviour tree · hand-written state machine · mission sequence Nav2 behaviour tree with three to five custom nodes: LED state, task start and end, person visible, pick visible
Human perception YOLO · MediaPipe Pose · depth clustering · lidar clustering YOLO plus depth for range, MediaPipe Pose for gesture, designed for the 6–8 m band
Simulation Gazebo · Unity · Unreal 5 · a viewer built from the flight code Whatever runs the flight code, because a general simulator that has to be fought into shape for a semester loses
Release discipline tagged competition build with CI · branch per field test · no tags Monorepo, pull-request review, a tagged competition release and a field-test branch

The 1 m stop is an error budget

The tolerance is a total error, so every contribution has to be named before it can be reduced. The allocation below is engineering judgement rather than measurement, and it is the calculation a first build should reproduce and then improve.

Error source Budget Why
Base-station position, RTK fixed 0.05–0.15 m An own base station is required, because no correction service is available S-URC27-QA RQ11
Rover position, RTK fixed 0.02–0.10 m Fix noise and multipath near posts and rocks
Antenna-to-body lever arm 0.02–0.05 m Missouri S&T subtracts a measured 0.20 m northing and 0.85 m altitude offset S-MST-DOCS-NAVBOARD
Heading error multiplied by distance 0.05–0.30 m 1° at 3 m is 0.05 m; at 20 m it is 0.35 m
Controller overshoot and stop detection 0.15–0.35 m A 1.0 m/s approach at 0.3 m/s² needs about 1.7 m to stop
Target coordinate interpretation 0 The coordinates are exact S-URC27-QA AUQ16
Root-sum-square 0.25–0.55 m 0.45–0.75 m of margin against the rule

Three consequences follow, and each one changes a design decision.

  • ArUco is a terminal aid, not the navigation source. The 15 cm black tag is about 25 px wide at 10 m through a 1080p camera with a 60° field of view, which is 4.2 px per module. GNSS closes the route; the tag confirms the last few metres.
  • Heading dominates once the rover is 10 m or more from the last fix. One degree of yaw error is 0.05 m at 3 m and 0.35 m at 20 m, which is why dual-antenna RTK yaw with a magnetometer as a third check is worth its mass.
  • The last metre is a control problem. Inside 3 m the terminal approach is made at or below 0.3 m/s, the stop is commanded at 0.6 of the tolerance, and a 3 s hold gives the judge time to see the green LED. UMD’s 1.0 m goal tolerance only works because the controller closes that last metre.

The hill turns a straight line into a contour

A slope limit on a 1 m elevation model is what makes route finding a real task. At the 15° passable-slope cap that UMD Loop uses, the direct 200 m line to a hilltop target becomes a 400–600 m contour-following route, so the planner has to be cost-aware and the time budget has to absorb the detour. Nothing in the rules guarantees a shorter path: not all approach directions will be navigable S-URC27-RULES §1.e.xv.

The dependency most teams take on is the wrong one. URC’s own elevation model is described as an attempt with an unconfirmed timeline S-URC27-QA AUQ20, while USGS 3DEP serves 1 m coverage that has been verified at the site. Building against the public model costs an afternoon of raster work and removes a schedule risk. The only public implementation in the field is eight lines long, and those eight lines are worth copying.

The DEM to costmap converter configuration at 1 m resolution
Eight lines are the whole hill capability: a 1 m map resolution, a 15° passable-slope cap, and an origin offset 400 m in each direction. The 15° is a choice, not a measured limit for any particular rover, so it belongs in the test plan rather than in a comment.UMD Loop (University of Maryland), athena-code, 2026. Original source Full resolution

Four planning details separate a costmap that works from one that refuses the hill. The unknown space must be traversable, or a mostly unmapped start area makes the only route look lethal. Inflation must stay below about 0.4 of the narrowest gap the rover intends to drive, because an inflated costmap seals a gap long before the rover is too wide for it; UMD runs 1.5 with a cost-scaling factor of 3.0 and Monash uses 1.28 at twice the robot radius. A progress checker converts a six-minute oscillation into a bounded recovery, and UMD sets 0.5 m in 10 s. A stay-out zone drawn while the rover is stopped is legal S-URC27-RULES §1.e.iii and is the only mechanism that turns “do not go there” into a rule the planner obeys.

Localisation lives in one file of constants

Most localisation failures are not filter failures. They are a coordinate frame, a lever arm or a yaw source that nobody wrote down. Missouri S&T converts incoming WGS-84 coordinates to UTM and subtracts a measured antenna offset S-MST-DOCS-NAVBOARD; one file of constants and a ten-minute field calibration are the whole defence.

The recommended structure is a dual extended Kalman filter, one for the smooth odometry frame and one for the jump-tolerant map frame, fed by wheel odometry, IMU, GNSS and a magnetometer. Tuning is the work: days of log replay are normal, and a monitor on the innovation and covariance makes divergence visible rather than discovered at the target. Heading noise from a pair of antennas scales as the position noise divided by their separation, so 1 cm over 0.5 m is about 1.15° and 1 cm over 1 m is about 0.57°.

Monash dual extended Kalman filter configuration
The per-source mask is the part that matters: each of the fifteen state entries is enabled or disabled per sensor, so wheel odometry contributes position and zero-rate yaw while GNSS heading contributes yaw alone. Missouri S&T won 2025 and 2026 without this stack, which is a reminder that the configuration is not the achievement.Monash Nova Rover, 2026. Original source Full resolution

The astronaut state machine

The astronaut sub-mission has a fixed command order S-URC27-QA AUQ13 and an unfixed number of retries, because the rover may self-abort for free and re-accept the command S-URC27-RULES §1.e.xi. That combination is exactly what a behaviour tree or a disciplined state machine expresses and a chain of conditionals does not. Five properties are worth copying outright.

  1. Every free recovery is a state. A self-stop and a safe hold exist so that a fault costs time rather than points. A team that turns a recoverable fault into an operator abort donates 20 % of that task.
  2. Link loss is two policies, not one. During the astronaut sub-mission the rover holds, because a human is nearby. During route finding it keeps driving and queues telemetry, because the second target is out of radio line of sight by design. A stop-on-link-loss handler is a 25-point defect S-URC27-RULES §1.e.xvi.
  3. The armed state is a listening state. The rover waits visibly parked with the LED red while it scans, so the operators must already be hands-off before the astronaut commands.
  4. Fetch is a camera and arm sweep from where Follow ended. The pick lies in the immediate area S-URC27-QA AUQ8, so driving with an arm extended is an avoidable tip-over and self-collision risk.
  5. Come! closes the last 20 m on the person detector. The rules guarantee the astronaut is in the field of view at that moment S-URC27-QA AUQ7, which makes the geometry a free safety margin.

Interfaces that bite

  • Compute and sensors. Camera streams at 720p30 or better with valid camera intrinsics, RTK fixed position with dual-antenna heading, and an IMU at 100 Hz or more. Uncalibrated intrinsics or unsynchronised odometry halve the value of everything above them.
  • Communications. A round-trip budget of 80 ms and 4 Mbit/s for one 1080p stream, and route finding that survives a total outage. The camera count is frozen with the communications design before the operator interface is written, because video bandwidth is the binding constraint.
  • Power. A brownout during an arm stall looks exactly like a software crash. The E-stop also removes power from the log storage, so mode transitions must be flushed to non-volatile storage and logged at the station as well S-URC27-RULES §2.a.v.
  • Arm. A 100–200 Hz joint loop and a Cartesian mode at or below 0.1 m/s for the grasp, with inverse kinematics and joint limits shared between the arm and the autonomy code.
  • Operator station. Hands-off is a procedure as much as a setting: a physical autonomy key kept out of reach, one E-stop owner, and only the drone pilot holding a live controller S-URC27-QA AUQ25.

Failure modes

Failure Mechanism Prevention
Rover stops dead 40 m behind the hill with 25 points pending One link-ok flag gates the drive, and the watchdog calls the E-stop path Two fault policies; an autonomous return is a planned behaviour S-URC27-RULES §1.e.xvi
Yaw drifts 20° over two minutes of driving Wheel slip plus magnetometer disturbance and no heading observation Dual-antenna heading as the primary yaw source; re-initialise when the fix quality drops
Rover drives 1.4 m past the target and scores zero The tolerance is measured at rest, so the stop is not treated as a control problem Terminal approach at or below 0.3 m/s and a 3 s hold for the LED
Planner returns no path because inflation sealed the gap Inflation radius at or above half the gap width Keep inflation below 0.4 of the intended gap and check it on the elevation model
Zero autonomy credit because the judge did not see red The LED washes out in sun with no shade A mechanical shade, a daylight test at 20 m, and a second LED copy visible from the side S-URC27-QA AUQ3
Penalty because an operator touched a gamepad during a near miss Reflex during autonomous driving The autonomy key out of reach, a rehearsed freeze, and a visible autonomous banner S-URC27-QA AUQ21

Shortlist for a first build

Item Choice Why
OS and middleware Ubuntu 24.04 with ROS 2 Jazzy Supported to 2029, and it pairs with the current Gazebo release S-ROS-REP2000
Localisation Dual-antenna RTK, dual EKF, wheel odometry, magnetometer The cheapest way to buy the dominant error term
Mapping A 1 m USGS 3DEP elevation model into a slope costmap, plus a live obstacle layer Removes a dependency on an unreleased model and answers the hill directly S-USGS-3DEP-EPQS
Global planning SmacPlanner2D with a Dubin model Kinematically feasible for a skid-steer rover S-NAV2-REPO
Local planning Regulated Pure Pursuit at or below 1.0 m/s Stable on rough ground, few parameters, terminal accuracy from the goal checker
Behaviour Behaviour tree with custom nodes for LED and task state Re-entrant recovery comes free, which the retry rule rewards
Perception YOLO with depth, MediaPipe Pose for gesture Two open models beat one custom pipeline in a first season
Simulation Whatever runs the flight code A passing simulation test only means something when it exercises the same code path
Follow! Audio with the device as the floor, gesture only after a measured test 10 points for three and a half weeks is the best return on the ladder

Open problems

  • What slope can the rover actually climb? URC publishes no inclinations S-URC27-QA AUQ17, and 15° is a choice with no cited basis. An instrumented wheel-slip test at 10, 15, 20 and 25° sets the costmap cap from measurement.
  • Does dual-antenna heading hold under the rover’s own multipath? A 30-minute static test and a 200 m run against a surveyed bearing give the heading error; the target is 1° at one standard deviation with no drift after a fix loss.
  • Is the 1 m stop repeatable? Thirty runs around a surveyed point give the hit rate. The pass criterion is 90 % inside 1.0 m and 100 % inside 1.5 m, because 25 points turn on it.
  • Does the audio channel survive motor noise and wind? Thirty utterances at three distances with the drive motors at mission speed settle a false-accept rate of one per ten minutes or better.
  • How long does an autonomous return actually take? The 20 % penalty is cheap only if a return from 300 m plus a re-attempt fits inside the 40 minutes with five minutes to spare.
  • Does the hands-off procedure survive a near-collision? Ten injected near misses with an instructed operator measure whether reflex beats procedure. Zero control touches is the only acceptable result.

Further reading

Sources for this page

  1. S-URC26-SCORESURC2026 Official ScoresURC, 2026-05/06.Original Archived copy
  2. S-URC27-RULESUniversity Rover Challenge 2027 – Requirements and GuidelinesThe Mars Society / URC.Original Archived copy
  3. S-URC27-QAURC2027 Questions & Answers (updated through 2026-10-11)URC Director / judges, 2026-10-11.Original Archived copy
  4. S-ROS-REP2000REP 2000, ROS 2 Releases and Target Platforms (Humble May 2022–May 2027; Iron May 2023–Nov 2024; Jazzy May 2024–May 2029; Foxy May 2020–May 2023)ROS 2 TSC / Open Robotics.Original
  5. S-TELEOP-LATENCY-IEEE"Impact of High Communication Latency on Teleoperated Driving Performance Independent of Driver Experience", recommends targeting end-to-end latency below 500 msIEEE (authors per paper), 2025–2026.Original
  6. S-GH-UMD-ATHENAUMD Loop athena-code monorepo (Nav2 + DEM costmap + MoveIt + behaviour trees; 1408 files; last commit 2026-05-30)UMD Loop, University of Maryland, 2026 (repo active to 2026-05-30).Original
  7. S-MST-DOCS-NAVBOARDBinder §07 "Navigation Board Driver", RoveComm UDP GPS/IMU ingest, WGS-84→UTM, antenna offset compensation, 2.0 s/1.0 s staleness failsafeMRDT, 2026.Original
  8. S-USGS-3DEP-EPQSUSGS Elevation Point Query Service, sample at 38.418 N, 110.777 W returns 1394.07 m, "resolution": 1 (1 m raster, rasterId 83271)USGS, 2026.Original
  9. S-NAV2-REPOros-navigation/navigation2, Nav2 source tree; package inventory checked on main (2026-10-23) includes nav2_navfn_planner, nav2_smac_planner, nav2_theta_star_planner, nav2_dwb_controller, nav2_mppi_controller, nav2_regulated_pure_pursuit_controller, nav2_graceful_controller, nav2_rotation_shim_controller, nav2_route, nav2_following, nav2_collision_monitor, nav2_loopback_simOpen Navigation / Nav2 contributors, 2026.Original