Skip to content

Polaris Transfer Plan#

The goal is one control system with measured performance in ACRES Core, Unreal and the real Polaris. Transfer to an unseen field is an evaluation result. It is not a property that a proof or calibration guarantees. Training starts after the data, map, model and classical controller checks below pass.

Control System#

The command path is:

Mission planner → phase controller → pure pursuit → learned correction → launch hold → safety shield → gear and actuator control.

Part Algorithm and Responsibility State
Mission planner Exact dynamic programming selects field order, entries and directions from measured costs Implemented; empty missions are supported
Phase controller A finite state machine selects GoTo, Scout and Return Classical tracker exists; the proved framework automaton needs integration
Pure pursuit Geometric path following gives the base curvature and speed Implemented; forward speed preview and F50 coverage are corrected
Learned correction Local residual PPO changes the base command within stated bounds Specified in Lean; production implementation remains open
Launch hold Supplies the low-speed launch demand Existing deployment order puts it before the final safety checks
Safety shield Projects the command into the safe set Proved model exists; the complete production shield remains open
Gear and actuators Gear state machine and drive-by-wire steering, speed, throttle and brake controllers Implemented models; real latency envelopes need validation

PPO handles a local driving correction. The mission planner and phase controller handle the long horizon. The older flat PPO experiment remains a historical baseline.

Core runs the shared physics quickly for costs and training. Unreal adds the visual world and rendered sensors. ROS 2 carries the sensor observations and actuator commands in simulation and on the vehicle. Lean states and proves the command, mission, reward and planner rules. Runtime conformance tests connect those rules to code. See Framework and Verification for the proof assumptions and limits.

Data and Map#

The 2 October 2026 recording has approximately 41 minutes of driving. Its maximum GNSS forward speed is 22.83 m/s, approximately 51 mph. About 91 % of the sampled navigation states report fixed RTK. Centimetre accuracy is not established for the remaining samples. Exclude non-fixed, stale or uncertain samples from precision fits.

The route spans approximately 3.2 km east to west and 2.5 km north to south. About 84 % of the samples are outside the current 1.524 km simulator tile. Regional soil polygons extend the calibration analysis. They do not extend the terrain or roads of Unreal.

GPS points join to SSURGO polygons by soil map unit key. The regional files contain soil names, component proportions, drainage classes and shallow-horizon properties. The public source supports this spatial query and attribute join. NRCS Soil Data Access.

Use texture and drainage as model priors. Determine the driven surface from imagery and the recorded camera. A soil polygon under a paved road does not make that road a soil contact surface. Retain raw SSURGO property fields until their units and conversions are verified.

The analysis groups wheel-speed disagreement by soil, surface and speed. It also reports steady straight segments separately. This proxy is not a measurement of each driven wheel's slip. Moisture, tyre effects and soil strength are not separately identifiable from this drive alone. Do not assign a measured water content to a field from its colour or soil name.

Work Order and Acceptance Gates#

Order Work Gate before the Next Stage
1 Finish the full sensor-bag transfer; verify source hashes and SQLite integrity; preserve raw data Complete camera, LiDAR and control data with a quality report
2 Align sensor times, datum, GNSS antenna position, LiDAR mount and camera mount; label surfaces by segment Held-out segments with valid RTK and reviewed surface labels
3 Extend terrain, imagery, roads, soil grids and collision coverage around the actual route; preserve the world origin Every replay pose and vehicle footprint lies inside mapped coverage
4 Fit wheel-speed scale, steering response, rolling resistance and effective traction; record uncertainty and source hashes Improved held-out motion error across grass, soil and pavement; stable fits across speed ranges
5 Validate LiDAR ranges, ground returns, ring geometry and intensity; validate camera projection, exposure and blur Sensor residuals on held-out structures and surfaces, in Core and Unreal
6 Update the ICSC rear area, dust collectors, parking, trees and tractor meshes from the photographs Correct dimensions, pivots, materials, collision and LiDAR export; game compiles
7 Correct the remaining integration defects below; rebuild costs and references for the current dynamics Dry, wet, noisy, hardware-shift and multi-field classical acceptance, plus Core/Unreal comparison
8 Implement the residual chain, local observations, privileged critic, segment curriculum, shaping and plan checker Lean conformance tests against production code; zero-strength and invalid-input checks
9 Train residual PPO on local segments; evaluate unseen fields and conditions Improvement over pure pursuit without more safety interventions or failures
10 Export to ROS 2; run recorded replay, shadow operation and supervised low-speed trials Sensor freshness, command limits, latency and stop behavior pass on the real vehicle

Keep hold-out drives and fields separate from fitting and training. Use measured moisture or strength checks where the drive cannot identify a parameter. Record the tyre pressure, load, differential mode and ground condition for subsequent calibration drives.

Corrections Completed on Main#

  • RTK helpers use checksum-checked OxTS navigation and position mode. Generic ROS fix status does not establish fixed RTK.
  • A completed Scout below the coverage threshold fails with insufficient_coverage. It cannot advance to the next phase.
  • Core LiDAR uses the currently placed Unreal meshes. A stale obstacle revision causes a load error.
  • Cost tables and frozen mission references require matching map and dynamics identities. Corrupt or incomplete caches are rejected.
  • Obstacle repair now retains enough margin after smoothing. F57's minimum loop clearance increases from 2.94 m to 3.18 m.
  • Direct wheel-speed and GNSS reports support a speed scale of 1.042029. Held-out error is approximately 0.078 m/s.

The steering ratio estimate remains provisional. It needs physical replay and a check of the differential mode and INS lever arm. The fixed energy normalization is now 2567.4 J per step, measured after the speed-scale change. Historical baselines used different inputs. Keep their measurements and provenance.

Remaining Defects and Observations#

Item Evidence or Limitation Required Work
NPC road routing Fixed lateral offsets ignore vehicle width; nearby graph nodes join without a road-surface check Bound offsets and validate links and swept footprints on narrow lanes and junctions
Optimizer hitch model Steady-state planning differs from runtime linkage behavior Align the models; repeat the two chisel-plow visualizations
Implement position mode Holds linkage angle; it does not directly hold working depth State the mode correctly; calibrate linkage and soil response; test float travel limits
Real localization Vehicle odometry was absent during this recording; license validation needs a separate check Resolve bringup and license behavior before closed-loop deployment
Sensor coverage Camera calibration messages were absent; the full camera/LiDAR bag is still in transfer Verify intrinsics, timing and mount measurements; finish sensor QA
Map coverage Most of this drive is outside the authored tile Extend the simulation map before full-route replay
Soil calibration Wheel-speed disagreement does not identify absolute moisture or independent soil strength Review surface labels and collect targeted ground measurements
Residual implementation Proofs and reference models exist; several production components do not Complete stage 8 and test real runtime code
Public ROS launch Private purdue_ranger dependency remains deferred Keep in WIP until the public bringup work resumes

Local Analysis#

Use torchenv. Raw bags, extracted frames and the original photographs stay outside Git. The compact report is Calibration/Polaris/field_drive_2026-10-02.json. The download status is ~/data/polaris/2026-10-02/progress.json.

PYTHON=~/miniconda3/envs/torchenv/bin/python
$PYTHON Calibration/Polaris/field_drive.py CONTROL_BAG.db3 \
    --interfaces INTERFACES_DIR --datum nad83_2011 --out ANALYSIS_DIR
$PYTHON Calibration/Polaris/fetch_drive_soils.py ANALYSIS_DIR/drive.npz

Set the datum from the receiver and correction-network configuration. RTK status does not select it. Restart simulation and learning processes after a model or calibration change. The cache checks do not provide live model reload. drive.npz, report.json and trajectory.png are local analysis outputs.