Back to catalog

Marine PID

H02 Marine PID Motion

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

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.

Examples

Representative runs

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.

Hard Turn Recovery

Description: 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.

Depth Step Response

Description: 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].

Case Matrix

All cases

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.

Source links

Harness README Mission README