Stem Mission
Baseline scenario context
The stem mission runs one simulated vehicle and one shoreside evaluation community. The vehicle uses pHelmIvP, pMarinePIDV22, and uSimMarineV22; the shoreside evaluator grades bridged nav and actuator evidence.
Marine PID
Moving correctness tests for pMarinePIDV22 closed-loop behavior. These cases add pHelmIvP and uSimMarineV22 and verify that PID output drives arrival, turn recovery, speed-PID transit, depth response, and expected authority failures.
Stem Mission
The stem mission runs one simulated vehicle and one shoreside evaluation community. The vehicle uses pHelmIvP, pMarinePIDV22, and uSimMarineV22; the shoreside evaluator grades bridged nav and actuator evidence.
Examples
This motion harness uses PID-focused generated visuals instead of raw pMarineViewer captures because the verdict depends on bridged navigation, actuator output, and closed-loop vehicle response. The visuals call out the evidence that makes each case pass.
Case Matrix
baseline_transit_pass
Starts at (0,-60) heading east and follows a BHV_Waypoint to (70,-60) using speed_factor=20, testing the normal helm-to-PID-to-simulator chain; passes on ARRIVED=true with 55<=x<=80, -72<=y<=-48, heading in [85,95], and speed at most 3.0.
turn_recover_pass
Starts at (0,-60) heading north while the waypoint remains east at (70,-60), testing closed-loop correction from a 90-degree initial heading error; passes on arrival with 55<=x<=80, -76<=y<=-44, heading in [80,115], and speed at most 3.0.
hard_turn_recover_pass
Starts at (0,-60) heading west, opposite the eastbound waypoint, testing recovery from a 180-degree initial heading error; passes on arrival with 55<=x<=80, -76<=y<=-44, heading in [70,115], and speed at most 3.0.
rudder_bias_recover_pass
Sets sim_instability=18 on an initially straight eastbound transit, requiring the growing disturbance to drive DESIRED_RUDDER<-1 at four seconds before grading recovery; passes on arrival with 55<=x<=80, -76<=y<=-44, heading in [75,125], and speed at most 3.0.
speed_pid_transit_pass
Sets speed_factor=0 and speed_pid_kp=40, selecting closed-loop speed PID control for the eastbound transit; passes on arrival with 55<=x<=80, -72<=y<=-48, heading in [85,95], and speed at most 3.0.
runtime_speed_factor_update_pass
Starts with speed_factor=4 and posts SPEED_FACTOR=20 at eight seconds, testing that an underway factor update restores enough speed to reach (70,-60) by the 48-second deadline; passes on arrival with 55<=x<=80, -72<=y<=-48, heading in [85,95], and speed at most 3.0.
depth_step_pass
Extends the waypoint to (140,-60), enables PID depth control, and commands BHV_ConstantDepth to 10 meters, testing closed-loop elevator and depth response during transit; at 45 seconds, passes with x>=50, -74<=y<=-46, heading in [85,95], and depth in [8,13].
override_release_pass
Starts deployed under manual override and, at six seconds, requires the override still true with x in [-0.25,0.25] and speed at most 0.1; after release at eight seconds, it passes on arrival with 55<=x<=80, -72<=y<=-48, heading in [85,95], and speed at most 3.0.
low_rudder_authority_fail
Starts heading north and limits maxrudder=2, testing the degraded turn response under insufficient rudder authority; at 42 seconds, the harness passes when x<55, y>-48, heading is below 80, and DESIRED_RUDDER<=2.5.
low_thrust_authority_fail
Limits maxthrust=8 on the eastbound transit, testing the degraded progress caused by insufficient thrust authority; at the inherited 45-second evaluation, the harness passes when x<55, speed is at most 0.8, and DESIRED_THRUST<=8.5.
low_elevator_authority_fail
Extends the waypoint to (140,-60), commands depth 30, and limits maxelevator=0.25; at 45 seconds, the expected-degraded case passes only after diving at least 10 meters but remaining shallower than 25 meters while DESIRED_ELEVATOR stays in the saturated [0.2,0.3] band.
depth_control_disabled_fail
Extends the waypoint to (140,-60) and commands depth 10 while pMarinePIDV22 keeps depth_control=false, testing that the helm's depth request cannot move the simulator vertically without PID elevator control; at 45 seconds, the harness passes with x>=50, -74<=y<=-46, heading in [85,95], and depth at most 1.
manual_override_fail
Deploys the helm while holding MOOS_MANUAL_OVERRIDE_ALL=true, testing the expected no-motion state under sustained override; at the inherited 45-second evaluation, the harness passes when x<=5, speed is at most 0.1, and DESIRED_THRUST=0.