Results

What we measured, and how far to trust it

The simulation shows what the navigation software can do with ideal inputs. The field test shows what Prototype 2 did on 14 October with a simpler controller. The two aren't the same test, so this page keeps them apart.

SimIsaac Sim FieldArgyle Square, 13–14 Oct Rovercommissioning on Prototype 2 Benchsoftware bench and dry run

Simulation Sim

A real paddock, an idealised rover

NVIDIA Isaac Sim 5.1.0 ran the full ROS 2 Jazzy navigation graph in real time on an 8 GB RTX 3060 Ti, with the main loop held at 60 Hz so simulated time matched wall-clock time.

ElementIn the simulationEffect
SoftwareNav2, robot_localization and the mission sequencerFaithful
RouteThe grower's John Deere AB line; 81 passes, 12 m apart, 36 m headlandsFaithful
GNSSNoise-free at 10 Hz by default; noise relays for RTK and standard gradeBest case
HeadingTrue attitude, no speed-dependent errorCan't test low-speed heading
Vehicle0.4 × 0.3 m, 20 kg, two driven wheels and two castersNot Prototype 2
TerrainFlat collision planeNo slope, roll or ruts
ImplementA 12 m geometric swathNo draft load or offset

Prototype 2's CAD couldn't be exported as a working robot: its mates formed 32 disconnected rigid groups, so the exporter produced one link with no wheel joints. Where Prototype 2 appears in a render, it's a visual shell on the smaller physics body.

Every configuration got one attempt, identified by its repository commit, with no intervention and no tuning between attempts. Trajectories were committed unedited and analysed offline by Python tools with 15 unit tests. An ideal pass layout run through the same pipeline returns exactly 100% coverage, zero overlap and zero missed area.

An earlier wheel-radius error made the simulated rover travel about 1.2 times its labelled speed. Every run was checked for it, and an affected GNSS-dropout study was withdrawn and repeated.

Reaching every waypoint wasn't enough

The first configuration sent the 162 waypoints one by one to Nav2's default controller. On a 17-pass test it reached all 34 waypoints and still only covered 74.8% of the target area: 25.2% was missed and 26.8% treated twice. Between waypoints it wandered 17–21 m on average on east-bound legs, and 33 m at worst.

Two changes fixed it. The mission sequencer now hands Nav2 a continuous path with a pose every 0.7 m, and Regulated Pure Pursuit replaced the Dynamic Window Approach controller. On the same route the worst cross-track error fell from 36.3 m to 0.336 m.

Show the numbers as a table
Cross-track statisticRPPDWADWA, alt. tuning
Median< 0.5 mm7.490 m9.558 m
95th percentile0.001 m27.967 m27.643 m
Maximum0.336 m36.336 m34.359 m

The full paddock, in one attempt

162of 162waypoints across 81 passes, with no aborts or recovery behaviours
8.47hand 56.9 km at a 2.0 m/s cruise; measured 1.995 m/s, filtered estimate 1.998 m/s
18.3mmcross-track RMSE on the straight passes over 144,859 samples; 3.8 mm after the first 20 m
99.95%coverage by a 12 m implement; 312.8 m² untreated, 0.0016% treated twice
Plot of the planned route and driven path over the whole paddock, with insets of one west and one east headland turn.
Planned route and driven path, full-route run. Insets: a west and an east headland turn.
Per-pass cross-track error for passes 1 to 81 on a log scale: per-pass RMS mostly near 1 centimetre, maximum after the first 20 metres near 10 centimetres, maximum including pass entry near 30 centimetres.
Per-pass cross-track error. The pass 1 peak is the run-in from the start point.

Where the error sits

Most of it is at pass entry. West-bound passes started a median 0.268 m left of the line, 40 of 41 on the same side, which is inside the 0.5 m arrival tolerance the sequencer accepts at the headland. In both directions error fell below 10 mm after about 23 m. The recorded data don't identify the cause; the headland manoeuvre and the heading check are the likely places to look.

The same offset shows up in coverage. Of the 1,251 untreated cells, 90.6% lie within 5 m of a pass start and 69.1% belong to west-bound passes.

Heading, estimated from course over ground at 5 Hz, was 0.98° RMS, or 0.58° after pass entry. The published sub-0.15° figure comes from a full-size tractor measured differently, so it's a reference only.

Coverage map of the paddock: almost entirely treated once, with thin untreated strips along the start-of-pass edge, and two insets of the largest untreated patches of 13.5 and 11.8 square metres.
Coverage map. Untreated cells are enlarged to show at field scale; insets show the two largest patches, 13.5 m² and 11.8 m², at true scale.

Neighbouring passes, and what GNSS quality does to them

The customer requirement is about neighbouring passes, so this is the closest test of it. Spacing error against the nominal 12.000 m, sampled every metre with the first 20 m and last 5 m of each pass excluded.

RunPass pairsStationsRMSMaxWithin ±20 mmWithin ±50 mmCoverage
Full route, 2.0 m/s8051,9445.7 mm122.4 mm99.26%99.59%99.9534%
Noise-free, 17 passes1610,3940.6 mm1.8 mm100.00%100.00%99.9275%
RTK-grade noise, 17 passes1610,39015.8 mm57.8 mm79.56%99.88%99.9147%
Standard-grade noise, 17 passes1610,3981,848 mm7,943 mm0.75%2.05%97.3560%

Measured as RMS, or as the share of stations within tolerance, the simulated stack met the tighter ±20 mm bound with ideal GNSS. Measured by its single worst point, it didn't meet 50 mm. The site visit didn't say which reading Knuckey means, so that needs confirming before it becomes an acceptance test.

With standard-grade GNSS, modelled on Prototype 1's u-blox receiver, the rover never settled into a steady cruise, kept stopping and restarting, and took 7.3 h against 2.9 h with RTK-grade noise. 13.38% of the area was treated twice, which for a seeder means wasted seed. The result backs RTK as the position source.

Read with care

All three receiver-grade runs predate the wheel-radius fix and ran at about 1.18 m/s against a 1.0 m/s setting. The noise-free and RTK runs ran at the same speed, so they compare like for like, but the study shows sensitivity to receiver quality rather than a controlled estimate of it. Each condition ran once. Headland turning accuracy couldn't be measured, because the planned headland paths weren't logged.

Field test Field

Argyle Square, Carlton, 13 and 14 October

Flat, open to the sky, and paved with painted lines and a central disc that show up in aerial imagery. Four tests, each involving more of the system than the one before.

Argyle Square: a paved plaza with radiating painted lines and a central white disc, ringed by trees.
Argyle Square. The painted lines and centre disc gave reference geometry visible in aerial imagery.
TestPlatformSpeedArrival radius
Reference point R0Capture box, static——
Walking testCapture box, hand-carriedWalking pace—
Chocks checkPrototype 2, wheels raised0.45 m/s commanded—
RectanglePrototype 2, laptop on a cable≤ 0.25 m/s2 m
Base-station rowsPrototype 2 over the radio≤ 0.25 m/s0.5 m
Obstacle stopPrototype 2——

Corrections over NTRIP from AUSCORS station EML200AUS0, about 1.4 km away. The rover's route executor steered straight from the GNSS fix, not from the fused estimate. Distances are measured from logged GNSS against the planned points; nobody surveyed the rover independently.

Reference point

The capture box sat with its master antenna over the disc's centre dot for 10 minutes, held RTK fix the whole time, and spread 3.8 mm east, 3.7 mm north and 6.7 mm vertical (1σ). A second base station, PKVL00AUS0, agreed to within 3.6 mm horizontally. That's the receiver's static precision, not the accuracy of a moving vehicle.

Walking test

Carried twice round a 39 m loop traced on the aerial image: cross-track RMSE 0.166 m on the straights and 0.099 m on the arcs, but the two laps agreed to 0.057 m RMS. Shifting the traced loop by the R0 offset made the fit worse, so most of the absolute error came from the tracing and the walker.

Rectangle

A 31.6 × 8.5 m rectangle, closed in 334 s on RTK throughout. With a 2 m arrival radius the rover turned 1.61–1.70 m early at every corner and started each later leg inside the line. On the first attempt it turned away from J and spun round: the planner and /cmd_vel disagreed on the sign of yaw rate.

Left: the logged RTK track over the traced walking loop. Right: cross-track error on each leg against plus and minus 0.30 metre lines.
Walking test. Logged RTK track (green) over the traced loop (black); dotted, the loop shifted by the R0 offset.
The planned rectangle I, J, K, L with the rover's RTK track cutting inside each corner, and 2 metre arrival circles at the corners.
Rectangle test. Dashed, the plan; green, the rover's RTK track; circles, the 2 m arrival radius.

Base-station rows: the rover drives itself

The operator loaded an eight-point plan, I to P, on the base station and sent ARM, GO and AUTO from its touchscreen. Prototype 2 drove itself over the radio link with a 0.5 m arrival radius. Faults ended the first two runs, so reaching all eight points took three runs of 191 s, 654 s and 602 s.

It reached six points on RTK and passed within 0.08–0.19 m of each. It reached M and P on a standard 3D fix, accurate only to metres, so no distance is given for those. On most legs the mean signed error was close to the RMSE: a steady offset to one side, not a weave.

The three base-station runs in blue, orange and green against the planned rows I to P, with 0.5 metre arrival circles and triangles marking each run's start.
The three runs (blue, orange, green) against the planned rows (dashed).
IJKL MNOP 0.19 m0.08 m 0.08 m0.18 m 3D fix0.17 m 0.14 m3D fix row RMSE 0.296 m · run 1 row RMSE 0.895 m · run 2 no RTK-fixed samples row RMSE 0.237 m* · run 3 31.6 m rows, 8.5 m apart, drawn to scale
Closest approach to each point on RTK. Ringed points reached on RTK; dashed points reached on a metre-level 3D fix. *Under 50% of samples RTK fixed. The real rows lie at an angle across the square.

Straight-section error by leg

Cross-track RMSE on RTK-fixed samples, log scale. Every leg sits above the customer band, the receiver's hand-carried walk included.

Show the numbers as a table
LegRMSE
Walk legs 1, 3, 50.151, 0.139, 0.203 m
Rectangle I→J, J→K, K→L, L→I0.407, 1.26, 2.02, 1.32 m
Run 1 I→J, J→K0.296, 1.68 m
Run 2 J→K, K→L, L→M*2.07, 0.895, 0.396 m
Run 3 N→O, O→P*0.119, 0.237 m
M→N, P→Ino RTK-fixed samples

Things the simulation never showed us

Lost corrections. The laptop cable carrying RTK corrections came out twice. Both times the receiver held its fixed solution on ageing corrections for 600 s, then dropped straight to a 3D fix of 1.6–2.1 m with no float stage in between. Both drops happened in AUTO, and the rover kept driving on the degraded fix. Fix type and correction age need to become safety inputs.

A heading reset. After the motor bus collapsed at the end of run 1, the heading estimate fell back to the magnetometer and read about 107° with the rover facing east. Commanded east, it drove roughly 175°. Switching on the receiver's dual-antenna heading fixed it without a reboot.

A slow first fix. At the rover's first position the receiver sat in RTK float for over 10 minutes, and fixed about 10 s after the rover moved 8 m to a more open spot.

Vibration wasn't measured: raw IMU data wasn't logged in the field.

Receiver fix type and correction age over 50 minutes of base-station runs: both times corrections stopped, the fix dropped from RTK fixed to 3D exactly 600 seconds later.
RTK hold. Fix type (left axis) and correction age (right). Both drops come 600 s after the last correction.

Safety

Every stop we tried removed motion

The targets come from the team's Completion Plan. They're our own working criteria, not published benchmarks.

MeasurementResultConditionsSource
Physical E-stop to main bus below 1 Vabout 100 msBench. Target was 0 A motor current in 100 ms; current wasn't measured.Rover
Stopping distance0.5 mAbout 1 m/s; stop path not recorded. Target 1 m.Rover
Stop key to motor contactor open0.8 sWheels raised on chocks, one trialField
Arming time6.9 sWheels raised, two trialsField
Obstacle stop500 mm1 m object, one trial, no timestampsField
Internal faults in AUTO caught and latched2 of 2Motor bus collapse; stale voltage telemetryField
Link-loss software stop after 0.5 sPassedDry run with injected packets; not tested on the moving roverBench

During run 1 the motor bus collapsed from 45.7 V to 14.6 V while the battery still read 45.7 V. The bus-voltage monitor caught it and latched the E-stop. The same collapse happened twice more during pre-charge. Run 2 ended when bus-voltage telemetry went silent for 1.01 s, which the monitor also treated as a fault. Run 3 ended when the operator stopped it at I.

We haven't found the cause of the collapse. With no electrical feedback from the pre-charge and contactor hardware, the software sees the effect but not the cause.

The obstacle detector held the rover 10 times across the three runs. Nobody recorded what triggered each hold, so we can't say how many were real.

DC bus voltage across the three base-station runs: steady near 45.7 volts in AUTO, with sharp dips to 14.6, 9.8 and 5.9 volts marked.
DC bus voltage over the three runs. Shaded: AUTO. Triangles mark dip minima.
The timeout question

The 0.5 s link timeout adds 0.5 m of travel at 1 m/s before braking starts. With the measured 0.5 m stop, that's about 1.0 m in total: on the 1 m target, with no margin. At the 1.67 m/s design speed the timeout alone adds 0.84 m. Until it's validated against stopping performance, the operating speed should stay low.

Assessment

The receiver is ready. The control loop isn't, yet.

The positioning layer is capable. Its static precision and lap-to-lap repeatability are at the scale of the ±20–50 mm requirement. The simulated navigation software also meets the requirement on RMS with RTK-grade input.

Closed-loop tracking on Prototype 2 falls short by a factor of 5 to 18, and the error is a steady offset. That points at the control loop and its inputs: heading, steering, and a 2 Hz, 0.1 m position feed. It doesn't point at the receiver.

The safety monitoring caught both internal faults it was built for. The missing piece is a response to degraded positioning.

These results come from single runs on paving at 0.25 m/s. They show feasibility at prototype scale, not field performance.

QuestionStatus
RQ1 AccuracySimulation yes; rover not yet
RQ2 CoverageSimulation only
RQ3 RobustnessCorrection loss seen; no response
RQ4 Safe stopFast where tested; reliability open

See the Project page for each question in full.