81 lines
2.9 KiB
Bash
81 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
# =========================================================================
|
|
# ISSUE #102 -- OWENS RUN->REVERSE GAIT HANG (night18)
|
|
# Solo expert Owens, grass/day. BT_KEYSIM drives the REAL virtual-controls
|
|
# chain (lever integrator + ZERO DETENT + gait SM) on a schedule -- the
|
|
# forcedThrottle harnesses bypass the lever, which is where the suspect
|
|
# lives (mech4.cpp zero detent: a held sweep that crosses 0 latches at 0
|
|
# until BOTH keys rest -> demand pinned to exactly 0.0 while reverse held).
|
|
#
|
|
# run A (repro): 3s rest, 10s full fwd (run), 20s HOLD BACK -- the
|
|
# Lynx shape. Twist pulse at t=38 (the rescue leg).
|
|
# run B (control): same but RELEASE 1.5s then re-press back -- the
|
|
# documented detent recovery; reverse must engage.
|
|
#
|
|
# Receipts: [gaitSM] per frame (legState/legCycle/legFrm/spd), [vctl] 1Hz
|
|
# (keys + lever). Park signature: legState=0 with legFrm frozen mid-clip,
|
|
# spd=0 while back key held; reverse states (16-19) never entered.
|
|
# usage: gaithang_bench.sh <A|B> [extra env pairs...]
|
|
# =========================================================================
|
|
set -x
|
|
. /c/git/bt411/scratchpad/night6/bench_common.sh
|
|
cd /c/git/bt411/content || exit 1
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
sleep 2
|
|
|
|
VARIANT=$1; shift
|
|
bt_expert_egg MP.EGG GH102.EGG
|
|
sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; 0,/^vehicle=.*/s//vehicle=owens/" GH102.EGG
|
|
LOG=gaithang_${VARIANT}.log
|
|
rm -f "$LOG"
|
|
|
|
if [ "$VARIANT" = "A" ]; then
|
|
# S-key sweep shape (keyboard-bridge rigs only; dead channel on glass)
|
|
KS="0:3,0.7:10,-0.7:20,0:8"
|
|
KT="38:2.5"
|
|
KR=""
|
|
XTRA=""
|
|
DUR=55
|
|
elif [ "$VARIANT" = "C" ]; then
|
|
# THE AUTHENTIC LALT SHAPE (glass rig = what Lynx flies): full forced
|
|
# throttle, REVERSE BUTTON held t=14..34 (gBTReverseHeld -> reverseThrust
|
|
# sign-flip), release at 34 = the recovery probe (a Standing-class park
|
|
# recovers on the demand flip; a frozen-clip park stays parked).
|
|
KS="0:1"
|
|
KT=""
|
|
KR="14:20"
|
|
XTRA="BT_AUTODRIVE=1.0"
|
|
DUR=55
|
|
elif [ "$VARIANT" = "D" ]; then
|
|
# THE GLASS S-KEY SHAPE: demand pinned at EXACTLY 0 after a full run
|
|
# (PadRIO throttle clamps [0,1] -- S can never reverse; the keyboard-
|
|
# bridge detent pins the same way). BT_KEY_BRIDGE=1 forces the bridge
|
|
# so BT_KEYSIM's lever drives the mapper. Twist pulse at t=38 = the
|
|
# Lynx rescue. Park signature: legState=0, legFrm frozen != 0, spd=0.
|
|
KS="0:3,0.7:10,-0.7:20,0:10"
|
|
KT="38:2.5"
|
|
KR=""
|
|
XTRA="BT_KEY_BRIDGE=1"
|
|
DUR=55
|
|
else
|
|
KS="0:3,0.7:10,-0.7:2,0:1.5,-0.7:15"
|
|
KT=""
|
|
KR=""
|
|
XTRA=""
|
|
DUR=45
|
|
fi
|
|
|
|
( export BT_GAIT_TRACE=1 BT_KEY_LOG=1 BT_KEYSIM="$KS"
|
|
[ -n "$KT" ] && export BT_KEYSIM_TURN="$KT"
|
|
[ -n "$KR" ] && export BT_KEYSIM_REV="$KR"
|
|
[ -n "$XTRA" ] && export $XTRA
|
|
for kv in "$@"; do export "$kv"; done
|
|
bt_launch "$LOG" GH102.EGG 0x03 )
|
|
sleep $DUR
|
|
bt_kill_ours
|
|
sleep 3
|
|
taskkill //F //IM btl4.exe > /dev/null 2>&1
|
|
echo "--- $LOG"
|
|
grep -ac "gaitSM" "$LOG"
|
|
grep -a "vctl" "$LOG" | head -40
|