From f6974ff3f00b8d838048bef2ccf9ab6eaa957e58 Mon Sep 17 00:00:00 2001 From: "Claude (auto-RE)" Date: Thu, 13 Aug 2026 16:46:33 +0000 Subject: [PATCH] =?UTF-8?q?re(flight):=20settled=20turn=20rates=20match=20?= =?UTF-8?q?the=20definition=20exactly=20=E2=80=94=20withdraw=20the=20time-?= =?UTF-8?q?base=20claim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-measured with 5 s of settle per phase and the speed recorded at the moment the turn starts (flight_law3.py): pitch @ 130/s 74.9 deg/s vs AV_PitchMinus_Min 75 pitch @ 1821/s 41.1 vs AV_PitchMinus_Max 40 roll @ 110/s 129.5 vs AV_Roll_Min 200 roll @ 1722/s 149.3 vs AV_Roll_Max 125 Pitch lands on the definition's own numbers with NO scale factor, so the ~1.2x I attributed to the emulated time base two iterations ago was an artefact of differentiating during the AA_* acceleration ramp with too little settle. That explanation is withdrawn: AV_* can be used verbatim. What remains is only on the linear side — settled speeds still read high and vary between runs (RT full: 1342 in one flight, 1821 in another, vs MaximumVelocity 1200), consistent with a craft being shoved around in a firefight. The HUD reads exactly CruisingVelocity at neutral. A clean linear measurement needs a quiet map; no cause is claimed until then. Roll re-measured with proper settles confirms the axis difference: no speed dependence, both regimes near AV_Roll_Max, where pitch moved 75 -> 40. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NptfmpjdpNCKEez6d2xvA9 --- docs/re/captures/turn-law-settled.csv | 397 ++++++++++++++++++++++++++ docs/re/flight-speed-law.md | 41 ++- tools/re-capture/flight_law3.py | 82 ++++++ 3 files changed, 519 insertions(+), 1 deletion(-) create mode 100644 docs/re/captures/turn-law-settled.csv create mode 100644 tools/re-capture/flight_law3.py diff --git a/docs/re/captures/turn-law-settled.csv b/docs/re/captures/turn-law-settled.csv new file mode 100644 index 0000000..4b98883 --- /dev/null +++ b/docs/re/captures/turn-law-settled.csv @@ -0,0 +1,397 @@ +phase,t,ax,ay,az +pitch_slow,0.0,-0.9999999999979217,-5.364418989006872e-07,-1.9669536293025197e-06 +pitch_slow,0.05,-0.9999999999976801,-5.364418029772711e-07,-2.0861625671338324e-06 +pitch_slow,0.101,-0.9999946097522772,-0.002899959954216824,0.0015397073276159146 +pitch_slow,0.151,-0.9996914710730174,-0.02193220056967232,0.011659384290695667 +pitch_slow,0.201,-0.9990433177471238,-0.03861357394968149,0.02052903240905178 +pitch_slow,0.251,-0.9955393575780669,-0.08330440446892036,0.04429180182752193 +pitch_slow,0.301,-0.9945412469804451,-0.09213126987556873,0.048985070845069034 +pitch_slow,0.352,-0.9945412469804451,-0.09213126987556873,0.048985070845069034 +pitch_slow,0.402,-0.9945412469804451,-0.09213126987556873,0.048985070845069034 +pitch_slow,0.452,-0.9665289434485363,-0.2265277037558541,0.120445011965445 +pitch_slow,0.503,-0.9524349663446977,-0.2690718666714829,0.14306629739354546 +pitch_slow,0.553,-0.9108739498774162,-0.3643795134075017,0.19374265829606738 +pitch_slow,0.604,-0.8927282973927168,-0.39785273467789245,0.21154051277148683 +pitch_slow,0.654,-0.8045973153675007,-0.5243130904039117,0.27878117464152785 +pitch_slow,0.707,-0.7919632518359564,-0.539100668887106,0.2866438147717345 +pitch_slow,0.757,-0.7919632518359564,-0.539100668887106,0.2866438147717345 +pitch_slow,0.807,-0.7919632518359564,-0.539100668887106,0.2866438147717345 +pitch_slow,0.858,-0.6306143663605143,-0.6852525159721327,0.36435492352044474 +pitch_slow,0.909,-0.5969978086641158,-0.7083385123283029,0.3766300152706506 +pitch_slow,0.989,-0.4901269140966694,-0.7696220973259926,0.40921563433673497 +pitch_slow,1.039,-0.2959745212014831,-0.8433875991219522,0.4484377776758578 +pitch_slow,1.089,-0.27580244899421963,-0.8487015247581735,0.45126348290321716 +pitch_slow,1.139,-0.27580244899421963,-0.8487015247581735,0.45126348290321716 +pitch_slow,1.189,-0.27580244899421963,-0.8487015247581735,0.45126348290321716 +pitch_slow,1.24,-0.06819632577165725,-0.8808914329655914,0.4683797011817154 +pitch_slow,1.291,-0.04700410626905134,-0.8819710505695748,0.46895381430482924 +pitch_slow,1.341,0.0804919641427089,-0.8800818771721879,0.46794971223575604 +pitch_slow,1.392,0.12273622707003892,-0.8762710913963212,0.465923591319126 +pitch_slow,1.443,0.24764949379728085,-0.8554426534039724,0.454848980387031 +pitch_slow,1.493,0.2680409389698348,-0.850637454777343,0.45229412506254507 +pitch_slow,1.543,0.2680409389698348,-0.850637454777343,0.45229412506254507 +pitch_slow,1.593,0.2680409389698348,-0.850637454777343,0.45229412506254507 +pitch_slow,1.646,0.44568378731971126,-0.790405284398606,0.42026830491379813 +pitch_slow,1.696,0.5199457201418952,-0.7542121380720035,0.40102431209464473 +pitch_slow,1.746,0.6404468011624063,-0.6781048415424452,0.36055751102637784 +pitch_slow,1.796,0.7030142148952,-0.6279298245105502,0.33387894384856803 +pitch_slow,1.848,0.7323232029501937,-0.6012483512095225,0.3196922685780814 +pitch_slow,1.898,0.7323232029501937,-0.6012483512095225,0.3196922685780814 +pitch_slow,1.948,0.7323232029501937,-0.6012483512095225,0.3196922685780814 +pitch_slow,1.998,0.7323232029501937,-0.6012483512095225,0.3196922685780814 +pitch_slow,2.048,0.8897380340111771,-0.4030392516581421,0.21430257221221208 +pitch_slow,2.099,0.933233802564986,-0.31721510699436495,0.1686690417493688 +pitch_slow,2.149,0.9603861359896795,-0.24605226051444695,0.1308310165616077 +pitch_slow,2.199,0.980573947813806,-0.17318882586052553,0.09208888893835017 +pitch_slow,2.249,0.9958260680318584,-0.08058666195316148,0.042851279367782436 +pitch_slow,2.299,0.9958260680318584,-0.08058666195316148,0.042851279367782436 +pitch_slow,2.349,0.9958260680318584,-0.08058666195316148,0.042851279367782436 +pitch_slow,2.399,0.9958260680318584,-0.08058666195316148,0.042851279367782436 +pitch_slow,2.449,0.9867075939747381,0.14348496871944313,-0.07629015496224935 +pitch_slow,2.502,0.9788907200689967,0.18046150766335733,-0.09595104175916487 +pitch_slow,2.552,0.9376915842954128,0.30679733050810604,-0.16312538347743036 +pitch_slow,2.602,0.8955218717201378,0.3929277552667634,-0.208921890695742 +pitch_slow,2.652,0.8074786582920991,0.5208483459556673,-0.2769390129939024 +pitch_slow,2.705,0.7948361291190185,0.5357942751067662,-0.2848859817714975 +pitch_slow,2.755,0.7948361291190185,0.5357942751067662,-0.2848859817714975 +pitch_slow,2.805,0.7948361291190185,0.5357942751067662,-0.2848859817714975 +pitch_slow,2.855,0.7948361291190185,0.5357942751067662,-0.2848859817714975 +pitch_slow,2.907,0.5994415250023212,0.706727700968031,-0.3757736217290043 +pitch_slow,2.957,0.49283526451379894,0.7682725100239381,-0.408498166939745 +pitch_slow,3.007,0.39786304462993477,0.810055404003031,-0.430714801421178 +pitch_slow,3.089,0.318739170854854,0.8368948941205249,-0.4449857044420142 +pitch_slow,3.139,0.17535239247571457,0.8692665281025396,-0.46219827084661375 +pitch_slow,3.189,0.17535239247571457,0.8692665281025396,-0.46219827084661375 +pitch_slow,3.24,0.17535239247571457,0.8692665281025396,-0.46219827084661375 +pitch_slow,3.29,0.17535239247571457,0.8692665281025396,-0.46219827084661375 +pitch_slow,3.341,-0.09908743529417109,0.8786016525498629,-0.4671625159443696 +pitch_slow,3.391,-0.14138414029685945,0.8740774161778089,-0.464757135932783 +pitch_slow,3.441,-0.26633940859742644,0.8510540435243772,-0.45251556263711057 +pitch_slow,3.491,-0.30709438990594357,0.8402818955853142,-0.44678783739023986 +pitch_slow,3.541,-0.46368621578966956,0.7822901813508235,-0.41595332123779405 +pitch_slow,3.591,-0.46368621578966956,0.7822901813508235,-0.41595332123779405 +pitch_slow,3.642,-0.46368621578966956,0.7822901813508235,-0.41595332123779405 +pitch_slow,3.695,-0.46368621578966956,0.7822901813508235,-0.41595332123779405 +pitch_slow,3.745,-0.6562113189584854,0.6662510666680376,-0.3542544580304771 +pitch_slow,3.796,-0.7469125955220236,0.5870904643133257,-0.31216399754442814 +pitch_slow,3.846,-0.8253836786665388,0.49848665361931915,-0.2650525215015027 +pitch_slow,3.899,-0.8702852029309188,0.43489315599579026,-0.23123928824382511 +pitch_slow,3.949,-0.9257474045462728,0.3338789511759494,-0.17752912137868407 +pitch_slow,3.999,-0.9257474045462728,0.3338789511759494,-0.17752912137868407 +pitch_mid,0.0,-0.9816648888232054,-0.16830355359423707,0.08948720522664506 +pitch_mid,0.05,-0.9810975290596479,-0.17086321869736415,0.09084821940704273 +pitch_mid,0.1,-0.9789055744250569,-0.18039841850141844,0.09591812634604903 +pitch_mid,0.151,-0.9720546521805088,-0.2072765936920349,0.11020964967577598 +pitch_mid,0.201,-0.9685934206365122,-0.21954537835213525,0.11673308161733022 +pitch_mid,0.251,-0.9621063375474502,-0.24075780571714026,0.12801200817618447 +pitch_mid,0.301,-0.9621063375474502,-0.24075780571714026,0.12801200817618447 +pitch_mid,0.352,-0.9621063375474502,-0.24075780571714026,0.12801200817618447 +pitch_mid,0.403,-0.9299022445524333,-0.3247544249367914,0.17267419917382107 +pitch_mid,0.453,-0.8941007235504668,-0.39544242183534284,0.21025980871181893 +pitch_mid,0.503,-0.878818394880348,-0.42130434615048,0.22401088530391827 +pitch_mid,0.553,-0.8210382535878776,-0.5040511900472064,0.26800855202280954 +pitch_mid,0.603,-0.7987442841989482,-0.531243736804092,0.2824670964306011 +pitch_mid,0.653,-0.7987442841989482,-0.531243736804092,0.2824670964306011 +pitch_mid,0.704,-0.7987442841989482,-0.531243736804092,0.2824670964306011 +pitch_mid,0.754,-0.7987442841989482,-0.531243736804092,0.2824670964306011 +pitch_mid,0.804,-0.6703148659769064,-0.6552147427406548,0.3483843012330774 +pitch_mid,0.855,-0.5483367797483034,-0.7383712411310113,0.3925999060696661 +pitch_mid,0.905,-0.5483367797483034,-0.7383712411310113,0.3925999060696661 +pitch_mid,0.955,-0.4487495579282873,-0.7890522755928274,0.4195477811178932 +pitch_mid,1.007,-0.3966576493503013,-0.8105158880387838,0.43096021214097596 +pitch_mid,1.058,-0.3966576493503013,-0.8105158880387838,0.43096021214097596 +pitch_mid,1.108,-0.3966576493503013,-0.8105158880387838,0.43096021214097596 +pitch_mid,1.158,-0.2145711905918272,-0.8623815090531974,0.45853826122924113 +pitch_mid,1.208,-0.19538810247600916,-0.8659288745293109,0.46042444946725575 +pitch_mid,1.258,-0.020561785443441487,-0.8827600285609496,0.46937399262682766 +pitch_mid,1.309,-0.020561785443441487,-0.8827600285609496,0.46937399262682766 +pitch_mid,1.359,0.15293449802923037,-0.8725598819330923,0.4639507428094662 +pitch_mid,1.409,0.17190451458064285,-0.869802646207114,0.4624848046345908 +pitch_mid,1.459,0.17190451458064285,-0.869802646207114,0.4624848046345908 +pitch_mid,1.509,0.17190451458064285,-0.869802646207114,0.4624848046345908 +pitch_mid,1.559,0.32147374512483523,-0.8360783992242294,0.4445531931569748 +pitch_mid,1.61,0.39499557938420454,-0.8111479471335701,0.43129746130476065 +pitch_mid,1.66,0.5495718115709906,-0.7376542883593693,0.3922205690572743 +pitch_mid,1.711,0.5815293845209076,-0.7182991118346882,0.38192926161297525 +pitch_mid,1.761,0.6124392459964019,-0.6979845517377493,0.37112765391279023 +pitch_mid,1.811,0.6124392459964019,-0.6979845517377493,0.37112765391279023 +pitch_mid,1.861,0.6124392459964019,-0.6979845517377493,0.37112765391279023 +pitch_mid,1.911,0.6124392459964019,-0.6979845517377493,0.37112765391279023 +pitch_mid,1.961,0.7785765031694168,-0.5540923970909359,0.294618811684698 +pitch_mid,2.013,0.8368345419742745,-0.4833737565967571,0.257017043777733 +pitch_mid,2.063,0.8954853668773045,-0.3929909578852798,0.20895948106996629 +pitch_mid,2.113,0.9122278787664543,-0.3617276762612271,0.19233664608677187 +pitch_mid,2.165,0.9346839297400513,-0.3138690827235641,0.1668896353760875 +pitch_mid,2.216,0.9346839297400513,-0.3138690827235641,0.1668896353760875 +pitch_mid,2.266,0.9346839297400513,-0.3138690827235641,0.1668896353760875 +pitch_mid,2.316,0.9858281374907293,-0.1481209242722237,0.078759603378267 +pitch_mid,2.366,0.9941186237329943,-0.09561938551914852,0.050843830109049304 +pitch_mid,2.416,0.9995934657948521,-0.025173307197407468,0.01338684970338031 +pitch_mid,2.466,0.9887113359982596,0.13229521133882916,-0.07034110551698297 +pitch_mid,2.516,0.9780864001457492,0.18382969276719566,-0.09774271280790084 +pitch_mid,2.566,0.958687336730862,0.25116550323250036,-0.133545798802701 +pitch_mid,2.618,0.958687336730862,0.25116550323250036,-0.133545798802701 +pitch_mid,2.7,0.958687336730862,0.25116550323250036,-0.133545798802701 +pitch_mid,2.75,0.958687336730862,0.25116550323250036,-0.133545798802701 +pitch_mid,2.8,0.8655891820395757,0.44214057059579587,-0.23508952288284238 +pitch_mid,2.85,0.774505313261317,0.5585239764741124,-0.29697219976545675 +pitch_mid,2.901,0.7486457582891431,0.5853679923169459,-0.3112456299556701 +pitch_mid,2.951,0.649419187957182,0.6714202776236611,-0.35700074104797064 +pitch_mid,3.001,0.5873275292440099,0.71461285445045,-0.3799668954610477 +pitch_mid,3.051,0.4708037762291508,0.7789694709287421,-0.4141863924000489 +pitch_mid,3.101,0.4708037762291508,0.7789694709287421,-0.4141863924000489 +pitch_mid,3.151,0.4708037762291508,0.7789694709287421,-0.4141863924000489 +pitch_mid,3.201,0.4708037762291508,0.7789694709287421,-0.4141863924000489 +pitch_mid,3.251,0.2519525835347419,0.8544627076303289,-0.4543273895763011 +pitch_mid,3.302,0.2128006333502304,0.8627235754094408,-0.4587198740827476 +pitch_mid,3.352,0.05407075118963116,0.8816552045589018,-0.468786149688736 +pitch_mid,3.402,0.01418978409318777,0.8828579500186226,-0.46942570244534326 +pitch_mid,3.453,-0.14418506374713955,0.8737205730756915,-0.46456757051748526 +pitch_mid,3.503,-0.16365548928393295,0.8710424080824322,-0.4631436107183107 +pitch_mid,3.553,-0.16365548928393295,0.8710424080824322,-0.4631436107183107 +pitch_mid,3.604,-0.16365548928393295,0.8710424080824322,-0.4631436107183107 +pitch_mid,3.654,-0.35427595284385854,0.8256794667561332,-0.4390238802319113 +pitch_mid,3.704,-0.3912019273537199,0.8125800850081012,-0.43205862736781675 +pitch_mid,3.754,-0.5482164422060858,0.7384403493165538,-0.3926379795640603 +pitch_mid,3.804,-0.5807364030212269,0.7187993267341519,-0.38219465994764656 +pitch_mid,3.856,-0.6427510623155457,0.6764032530991501,-0.35965220851417645 +pitch_mid,3.907,-0.6427510623155457,0.6764032530991501,-0.35965220851417645 +pitch_mid,3.957,-0.6427510623155457,0.6764032530991501,-0.35965220851417645 +pitch_fast,0.0,-0.9658675830256226,0.2287146756684362,-0.1216117148720633 +pitch_fast,0.052,-0.9658676051980126,0.2287146636567734,-0.12161156136414396 +pitch_fast,0.102,-0.9658676051980126,0.2287146636567734,-0.12161156136414396 +pitch_fast,0.152,-0.9658676051980126,0.2287146636567734,-0.12161156136414396 +pitch_fast,0.202,-0.9664701307517564,0.22672168832295678,-0.1205519075281309 +pitch_fast,0.252,-0.9672076235909816,0.22425644292630353,-0.11924118698473131 +pitch_fast,0.302,-0.9708059463052539,0.21178855073766029,-0.11261183061651185 +pitch_fast,0.352,-0.9767019499389217,0.18948015575759153,-0.10075004496071996 +pitch_fast,0.402,-0.9828596538946014,0.16277540934979576,-0.0865509494875172 +pitch_fast,0.453,-0.9840999852715604,0.15682439933205652,-0.08338661021203694 +pitch_fast,0.503,-0.9840999852715604,0.15682439933205652,-0.08338661021203694 +pitch_fast,0.553,-0.9840999852715604,0.15682439933205652,-0.08338661021203694 +pitch_fast,0.604,-0.9969658526909927,0.06872814001554328,-0.03654492219345491 +pitch_fast,0.654,-0.9997555993589555,0.01951919570264511,-0.010379910863662752 +pitch_fast,0.704,-0.999639503820263,-0.023706604137760323,0.01260394074223997 +pitch_fast,0.754,-0.9949411990718958,-0.08870043606639172,0.047161881122471744 +pitch_fast,0.804,-0.9868629348189862,-0.14264913437357063,0.07584703252552663 +pitch_fast,0.855,-0.9847624772088613,-0.15354912716138713,0.08164269121876744 +pitch_fast,0.905,-0.9847624772088613,-0.15354912716138713,0.08164269121876744 +pitch_fast,0.955,-0.9847624772088613,-0.15354912716138713,0.08164269121876744 +pitch_fast,1.005,-0.9556544968116132,-0.2600196152203893,0.13825441195268626 +pitch_fast,1.055,-0.9350970976005369,-0.3129094240539954,0.16637641178138443 +pitch_fast,1.106,-0.9163015999238947,-0.35361089987496885,0.18801784347908457 +pitch_fast,1.186,-0.8838134201281153,-0.41307791101375835,0.21963715039572226 +pitch_fast,1.236,-0.8324192085803622,-0.4892822509035454,0.26015599193023287 +pitch_fast,1.287,-0.8324192085803622,-0.4892822509035454,0.26015599193023287 +pitch_fast,1.338,-0.8324192085803622,-0.4892822509035454,0.26015599193023287 +pitch_fast,1.388,-0.8324192085803622,-0.4892822509035454,0.26015599193023287 +pitch_fast,1.438,-0.7493450951253482,-0.5846697798695479,0.3108748573282781 +pitch_fast,1.488,-0.7319942059929913,-0.6015615906409889,0.31985642882107823 +pitch_fast,1.54,-0.6685767864516847,-0.6565976821256674,0.34911969930833103 +pitch_fast,1.59,-0.6495652494628392,-0.6713099785415564,0.35694243149395194 +pitch_fast,1.64,-0.600269177220929,-0.7061793659967437,0.3754831792756447 +pitch_fast,1.692,-0.5902399761670327,-0.7127394615556399,0.378971279222736 +pitch_fast,1.742,-0.5902399761670327,-0.7127394615556399,0.378971279222736 +pitch_fast,1.792,-0.5902399761670327,-0.7127394615556399,0.378971279222736 +pitch_fast,1.842,-0.4744737419514673,-0.7772313800698689,0.413262688895646 +pitch_fast,1.894,-0.41659370360552633,-0.8026806747323841,0.426794353907588 +pitch_fast,1.944,-0.36930494798762,-0.8205298691575033,0.43628498623288875 +pitch_fast,1.994,-0.3214551905466611,-0.8360842723890491,0.4445555645071649 +pitch_fast,2.044,-0.2729415791863457,-0.8494219198880473,0.45164731413456627 +pitch_fast,2.094,-0.2729415791863457,-0.8494219198880473,0.45164731413456627 +pitch_fast,2.145,-0.2729415791863457,-0.8494219198880473,0.45164731413456627 +pitch_fast,2.195,-0.2729415791863457,-0.8494219198880473,0.45164731413456627 +pitch_fast,2.246,-0.15018401469533893,-0.8729324279310241,0.4641484008336534 +pitch_fast,2.296,-0.085167143910571,-0.8797387312536471,0.46776738057536615 +pitch_fast,2.347,-0.00785863441309952,-0.8829194777000005,0.46945866459478597 +pitch_fast,2.397,0.017787069774809663,-0.882807050745268,0.4693989042416567 +pitch_fast,2.447,0.06928193596374152,-0.880825046181548,0.46834522669542594 +pitch_fast,2.497,0.06928193596374152,-0.880825046181548,0.46834522669542594 +pitch_fast,2.55,0.06928193596374152,-0.880825046181548,0.46834522669542594 +pitch_fast,2.6,0.06928193596374152,-0.880825046181548,0.46834522669542594 +pitch_fast,2.651,0.21198297365514238,-0.8628802036656676,0.4588038502478148 +pitch_fast,2.702,0.2764694675691825,-0.8485316906739566,0.4511746928009255 +pitch_fast,2.786,0.37429753186942033,-0.8187640417930946,0.4353467600695977 +pitch_fast,2.836,0.40981689666516385,-0.8053954345525633,0.4282386077989958 +pitch_fast,2.886,0.40981689666516385,-0.8053954345525633,0.4282386077989958 +pitch_fast,2.936,0.40981689666516385,-0.8053954345525633,0.4282386077989958 +pitch_fast,2.986,0.40981689666516385,-0.8053954345525633,0.4282386077989958 +pitch_fast,3.036,0.5566205022404467,-0.733522684693819,0.39002318844546285 +pitch_fast,3.087,0.5998982910452404,-0.7064244402176132,0.37561489675495024 +pitch_fast,3.137,0.6701810944739728,-0.6553205823511672,0.34844258487819035 +pitch_fast,3.187,0.6891597392050487,-0.639791239336044,0.34018527882270017 +pitch_fast,3.243,0.725701824041233,-0.6074752934115958,0.3230025239494625 +pitch_fast,3.293,0.725701824041233,-0.6074752934115958,0.3230025239494625 +pitch_fast,3.343,0.725701824041233,-0.6074752934115958,0.3230025239494625 +pitch_fast,3.393,0.725701824041233,-0.6074752934115958,0.3230025239494625 +pitch_fast,3.445,0.8389337242743994,-0.4805288759274782,0.25550382712390113 +pitch_fast,3.495,0.8799044064239339,-0.4195323653889136,0.22307135617763135 +pitch_fast,3.545,0.9141904204223267,-0.35784452205993644,0.19027131481057563 +pitch_fast,3.596,0.9243948817285977,-0.33678800362072325,0.17907524466307298 +pitch_fast,3.646,0.9473286584095463,-0.2827747557609607,0.1503557463494435 +pitch_fast,3.696,0.9473286584095463,-0.2827747557609607,0.1503557463494435 +pitch_fast,3.746,0.9473286584095463,-0.2827747557609607,0.1503557463494435 +pitch_fast,3.796,0.9473286584095463,-0.2827747557609607,0.1503557463494435 +pitch_fast,3.846,0.9877392592272928,-0.13783858151526024,0.07329175415406497 +pitch_fast,3.899,0.9948580115516917,-0.08942388935224614,0.04754897332783676 +pitch_fast,3.949,0.999765524196005,-0.019118849051913748,0.010166918904840748 +pitch_fast,3.999,0.9990569989225466,0.03833614305138446,-0.020382665179474877 +roll_slow,0.0,0.49464193227975,-0.7673659362109184,0.4080182333838721 +roll_slow,0.051,0.4945496776180339,-0.7598559960158229,0.4219472498864052 +roll_slow,0.101,0.490520535370487,-0.7112149514342452,0.5035502926582757 +roll_slow,0.151,0.47881435208968187,-0.6485736215805378,0.5916832544722247 +roll_slow,0.201,0.45245216893643586,-0.5542244875816128,0.6986574641336151 +roll_slow,0.252,0.4323161301272065,-0.4947074292801451,0.7539014014092735 +roll_slow,0.302,0.4323161301272065,-0.4947074292801451,0.7539014014092735 +roll_slow,0.352,0.4323161301272065,-0.4947074292801451,0.7539014014092735 +roll_slow,0.402,0.24096377557112272,-0.08105081943187036,0.967143848417562 +roll_slow,0.452,0.10030562620891256,0.16679538851627507,0.9808761796070606 +roll_slow,0.502,-0.08212564081597067,0.4415128599898792,0.8934885413837849 +roll_slow,0.552,-0.20200007527010713,0.595981384950017,0.7771757577176032 +roll_slow,0.602,-0.38780473662709397,0.7847876353439257,0.4834416755523667 +roll_slow,0.652,-0.4102647584203325,0.8018482887633847,0.4344216267700514 +roll_slow,0.703,-0.4102647584203325,0.8018482887633847,0.4344216267700514 +roll_slow,0.77,-0.4102647584203325,0.8018482887633847,0.4344216267700514 +roll_slow,0.82,-0.5758197542243373,0.789110513896689,-0.21386025227406602 +roll_slow,0.87,-0.5718945362478904,0.6698446984239761,-0.4735448441310526 +roll_slow,0.921,-0.5101713830730059,0.453525450011233,-0.7307802857805381 +roll_slow,0.971,-0.476863939310634,0.36772720461622704,-0.7983592464362641 +roll_slow,1.021,-0.2648817218028197,-0.0631100664684199,-0.9622134861688052 +roll_slow,1.071,-0.2077269214538732,-0.16080378491037264,-0.9648790954631544 +roll_slow,1.121,-0.2077269214538732,-0.16080378491037264,-0.9648790954631544 +roll_slow,1.171,-0.2077269214538732,-0.16080378491037264,-0.9648790954631544 +roll_slow,1.222,-0.2077269214538732,-0.16080378491037264,-0.9648790954631544 +roll_slow,1.272,0.17893611908814816,-0.7049346351677062,-0.6863301140316116 +roll_slow,1.322,0.3333006981050639,-0.8462206472685584,-0.4157177657727163 +roll_slow,1.372,0.41270347148109937,-0.8873011969134804,-0.20584564747245515 +roll_slow,1.422,0.4865576824524262,-0.8645598977193693,0.12568931896544588 +roll_slow,1.472,0.4978190954600369,-0.8348605144988362,0.23491289774316146 +roll_slow,1.522,0.5014421756195666,-0.7708306670667784,0.3929068938302064 +roll_slow,1.573,0.5014421756195666,-0.7708306670667784,0.3929068938302064 +roll_slow,1.623,0.5014421756195666,-0.7708306670667784,0.3929068938302064 +roll_slow,1.673,0.4166169613758028,-0.46082806205764126,0.7836247856686206 +roll_slow,1.724,0.3173553910906107,-0.2302952385040919,0.9199182892344672 +roll_slow,1.774,0.16147651620343692,0.06606448650839164,0.9846627942281478 +roll_slow,1.825,-0.0783437241000817,0.4380676421854982,0.8955216366811963 +roll_slow,1.875,-0.13886219900504984,0.5188239454963641,0.8435277133959901 +roll_slow,1.926,-0.19803797831806363,0.5925181248079477,0.7808349575408157 +roll_slow,1.976,-0.19803797831806363,0.5925181248079477,0.7808349575408157 +roll_slow,2.026,-0.19803797831806363,0.5925181248079477,0.7808349575408157 +roll_slow,2.076,-0.19803797831806363,0.5925181248079477,0.7808349575408157 +roll_slow,2.126,-0.5222051882739432,0.8439920179771123,0.12238960303349734 +roll_slow,2.176,-0.5753348981855904,0.7898716215308815,-0.21235012698360206 +roll_slow,2.226,-0.5652936143706975,0.6403510022902671,-0.5199939647895575 +roll_slow,2.277,-0.5240535417867741,0.49631946930012355,-0.6921234497792873 +roll_slow,2.327,-0.4937895498524031,0.41409211552018416,-0.7646565244085605 +roll_slow,2.377,-0.4937895498524031,0.41409211552018416,-0.7646565244085605 +roll_slow,2.428,-0.4937895498524031,0.41409211552018416,-0.7646565244085605 +roll_slow,2.479,-0.3215006227186099,0.03693793982139597,-0.9461886377426528 +roll_slow,2.529,-0.08885249584475184,-0.3498540853722495,-0.9325810168186488 +roll_slow,2.579,-0.027265554342407936,-0.4388170553388613,-0.8981626698377816 +roll_slow,2.629,0.2091778463424695,-0.7300533910213715,-0.6505894825907677 +roll_slow,2.679,0.2360296376178349,-0.7571521572053442,-0.6091064118898168 +roll_slow,2.729,0.2360296376178349,-0.7571521572053442,-0.6091064118898168 +roll_slow,2.78,0.2360296376178349,-0.7571521572053442,-0.6091064118898168 +roll_slow,2.83,0.2360296376178349,-0.7571521572053442,-0.6091064118898168 +roll_slow,2.88,0.4820781498777898,-0.8684021265489136,0.1160965288702979 +roll_slow,2.93,0.49670236634390524,-0.7496290263282555,0.4374278022194253 +roll_slow,2.98,0.47126382569148145,-0.6219313535323155,0.6253893172161569 +roll_slow,3.03,0.3840408409877701,-0.3747603670690986,0.8438408023600428 +roll_slow,3.08,0.34339375730743976,-0.28183413723003453,0.8959074988714412 +roll_slow,3.131,0.29780950842709214,-0.1856293249325127,0.9364033588232761 +roll_slow,3.181,0.29780950842709214,-0.1856293249325127,0.9364033588232761 +roll_slow,3.231,0.29780950842709214,-0.1856293249325127,0.9364033588232761 +roll_slow,3.283,0.014967353835082657,0.29998979365854544,0.9538249850050473 +roll_slow,3.333,-0.16737993925757846,0.5523554967923565,0.8166317169308319 +roll_slow,3.383,-0.22576571916360996,0.6227711415790569,0.7491234512861391 +roll_slow,3.433,-0.44830963594391343,0.8253296124209226,0.3432921513535746 +roll_slow,3.483,-0.4849676037351503,0.8416531335127756,0.2375424723612857 +roll_slow,3.534,-0.4849676037351503,0.8416531335127756,0.2375424723612857 +roll_slow,3.584,-0.4849676037351503,0.8416531335127756,0.2375424723612857 +roll_slow,3.634,-0.4849676037351503,0.8416531335127756,0.2375424723612857 +roll_slow,3.684,-0.5802453680987208,0.7549564144331459,-0.305542345847884 +roll_slow,3.734,-0.5611914651497782,0.6147249024521652,-0.5542359008113974 +roll_slow,3.784,-0.482471837248575,0.3791959988327134,-0.7895766718509644 +roll_slow,3.834,-0.35219315832064674,0.09734608547423916,-0.9308510723391632 +roll_slow,3.884,-0.24419845097576873,-0.10001761109088095,-0.9645535723912427 +roll_slow,3.935,-0.15607902585337452,-0.24554580947801147,-0.9567374734672253 +roll_slow,3.985,-0.15607902585337452,-0.24554580947801147,-0.9567374734672253 +roll_fast,0.0,0.4274921031039902,-0.892995645067824,-0.14074544281655502 +roll_fast,0.055,0.4274921031039902,-0.892995645067824,-0.14074544281655502 +roll_fast,0.106,0.4274921031039902,-0.892995645067824,-0.14074544281655502 +roll_fast,0.156,0.4274921031039902,-0.892995645067824,-0.14074544281655502 +roll_fast,0.206,0.4290243150695981,-0.8931294880771208,-0.13512162893542323 +roll_fast,0.256,0.4364763111133057,-0.8933822372001555,-0.10656738756376555 +roll_fast,0.309,0.45598085615143524,-0.8897766198339296,-0.019468580336297992 +roll_fast,0.359,0.4710183775560644,-0.8794502007709485,0.0686223897018397 +roll_fast,0.409,0.48614999379346735,-0.8481296101097635,0.21055723210014018 +roll_fast,0.459,0.48614999379346735,-0.8481296101097635,0.21055723210014018 +roll_fast,0.509,0.48614999379346735,-0.8481296101097635,0.21055723210014018 +roll_fast,0.56,0.48614999379346735,-0.8481296101097635,0.21055723210014018 +roll_fast,0.611,0.4522165107922734,-0.6191590493907155,0.6419830986283418 +roll_fast,0.661,0.3948458905804791,-0.45576815372939883,0.7977293480484489 +roll_fast,0.711,0.31297543284889107,-0.26644512261413045,0.911621289279814 +roll_fast,0.761,0.24722211208448244,-0.13184762873360015,0.9599465766873772 +roll_fast,0.811,0.17443191144629244,0.005508304311644434,0.9846538309745223 +roll_fast,0.862,0.17443191144629244,0.005508304311644434,0.9846538309745223 +roll_fast,0.912,0.17443191144629244,0.005508304311644434,0.9846538309745223 +roll_fast,0.962,0.17443191144629244,0.005508304311644434,0.9846538309745223 +roll_fast,1.015,-0.07028931952835214,0.4009372621088909,0.9134050160869863 +roll_fast,1.065,-0.19181828427149575,0.5682368786979131,0.8001953483411366 +roll_fast,1.115,-0.3047168205187675,0.7027745223635194,0.6428496169475878 +roll_fast,1.165,-0.3877485638908776,0.7843408476187816,0.48421119974367904 +roll_fast,1.216,-0.4028277976127009,0.797062751252426,0.4499119203093136 +roll_fast,1.266,-0.4028277976127009,0.797062751252426,0.4499119203093136 +roll_fast,1.316,-0.4028277976127009,0.797062751252426,0.4499119203093136 +roll_fast,1.366,-0.5117094565052331,0.8509062608923823,0.11879380159445974 +roll_fast,1.416,-0.5463802858802032,0.8341169424957295,-0.07561421455680888 +roll_fast,1.467,-0.5614516425968921,0.7703677587767183,-0.30216811423872614 +roll_fast,1.517,-0.5361264604361383,0.617802887890881,-0.5752286589991021 +roll_fast,1.567,-0.5218812351566515,0.5690784589905927,-0.6354444774362747 +roll_fast,1.617,-0.49494010214581236,0.4890850190322566,-0.7182131573886056 +roll_fast,1.667,-0.49494010214581236,0.4890850190322566,-0.7182131573886056 +roll_fast,1.717,-0.49494010214581236,0.4890850190322566,-0.7182131573886056 +roll_fast,1.767,-0.3440174302857372,0.1396931047835701,-0.9285137824154925 +roll_fast,1.82,-0.23525805420746415,-0.06570749303078906,-0.9697093241225057 +roll_fast,1.87,-0.19625879783423691,-0.13411075867198055,-0.9713376285726225 +roll_fast,1.92,-0.0949890023289495,-0.30100858394679586,-0.9488787708800822 +roll_fast,1.971,-0.07453710913781955,-0.3329263212727339,-0.9400022787021216 +roll_fast,2.021,-0.07453710913781955,-0.3329263212727339,-0.9400022787021216 +roll_fast,2.071,-0.07453710913781955,-0.3329263212727339,-0.9400022787021216 +roll_fast,2.121,0.14448794249717334,-0.6431590637002322,-0.7519771627205005 +roll_fast,2.171,0.18283601243163217,-0.6892883761074453,-0.7010367516195289 +roll_fast,2.221,0.3204922974597805,-0.8299477804497861,-0.4565866500407401 +roll_fast,2.272,0.3498674652034662,-0.8530130176217724,-0.38724869084336405 +roll_fast,2.322,0.4124430332010092,-0.8877915231565959,-0.20424729074149947 +roll_fast,2.372,0.4124430332010092,-0.8877915231565959,-0.20424729074149947 +roll_fast,2.454,0.4124430332010092,-0.8877915231565959,-0.20424729074149947 +roll_fast,2.504,0.4745114350931557,-0.8744296665576758,0.10105273974349113 +roll_fast,2.554,0.48267297224869277,-0.8576071884180729,0.17758578837919575 +roll_fast,2.604,0.4790699338423226,-0.7195469224608153,0.5027367351462215 +roll_fast,2.654,0.46937636788590276,-0.6762101067234576,0.56782542813376 +roll_fast,2.704,0.41135253131562505,-0.49459186357414753,0.7656160809873834 +roll_fast,2.756,0.4003164340439995,-0.46567532370481146,0.7892358617844955 +roll_fast,2.806,0.4003164340439995,-0.46567532370481146,0.7892358617844955 +roll_fast,2.856,0.4003164340439995,-0.46567532370481146,0.7892358617844955 +roll_fast,2.909,0.23776990821948535,-0.11571873999513957,0.9644037764127819 +roll_fast,2.959,0.16427200734952954,0.021719340056452676,0.9861759365695698 +roll_fast,3.009,0.045283382036564734,0.22486689122887976,0.9733366820069969 +roll_fast,3.06,-0.036992167616838594,0.3533761993353274,0.9347496142167305 +roll_fast,3.11,-0.11945927877262154,0.4727802269146366,0.8730454385389513 +roll_fast,3.16,-0.11945927877262154,0.4727802269146366,0.8730454385389513 +roll_fast,3.21,-0.11945927877262154,0.4727802269146366,0.8730454385389513 +roll_fast,3.26,-0.11945927877262154,0.4727802269146366,0.8730454385389513 +roll_fast,3.31,-0.34832219782009477,0.7463942489988824,0.5670690183453625 +roll_fast,3.36,-0.41060542302987857,0.8020551652797916,0.43371730242919837 +roll_fast,3.412,-0.5060192508828523,0.8512722526760851,0.1388526901422534 +roll_fast,3.462,-0.5367672669096389,0.8435913083033272,-0.015316844630572738 +roll_fast,3.514,-0.5424930121603433,0.838335256896307,-0.05380825960575971 +roll_fast,3.564,-0.5424930121603433,0.838335256896307,-0.05380825960575971 +roll_fast,3.614,-0.5424930121603433,0.838335256896307,-0.05380825960575971 +roll_fast,3.664,-0.5596773753080179,0.7324962784354845,-0.3875699132369452 +roll_fast,3.715,-0.5187323267754228,0.5571689196924458,-0.6484439590950855 +roll_fast,3.765,-0.5007518821327692,0.5038887555605733,-0.7038065604696406 +roll_fast,3.815,-0.4301120965633418,0.32618176435100704,-0.8417891903527572 +roll_fast,3.865,-0.41609751831590275,0.29451533035891825,-0.8603043504684399 +roll_fast,3.915,-0.41609751831590275,0.29451533035891825,-0.8603043504684399 +roll_fast,3.965,-0.41609751831590275,0.29451533035891825,-0.8603043504684399 diff --git a/docs/re/flight-speed-law.md b/docs/re/flight-speed-law.md index d92a509..614fdcb 100644 --- a/docs/re/flight-speed-law.md +++ b/docs/re/flight-speed-law.md @@ -83,7 +83,7 @@ Two claims of the field names are confirmed: * **Pitching up is about twice as fast as pitching down**, exactly as the pair 150/75 (slow) and 70/40 (fast) says. -## The ~1.2× factor is a TIME BASE, not a unit scale +## The ~1.2× factor — ⚠️ WITHDRAWN, see "Settled rates match exactly" below The speed law measured 1.21 / 1.28 / 1.32 × its definition values; the pitch rates measure 1.16 / 1.35 / 1.17 / 1.94 × theirs. A **unit scale** would have to differ @@ -222,3 +222,42 @@ not perfectly separated pair of regimes. Raw samples: [`captures/throttle-curve-lt.csv`](captures/throttle-curve-lt.csv) · [`captures/turn-law-roll.csv`](captures/turn-law-roll.csv). + +--- + +# ⚠️ Settled rates match the definition EXACTLY — the "time base" reading is withdrawn + +The earlier turn measurements settled each phase for 1.5 s and then differentiated +from the first second. Re-running with **5 s of settle** and the craft's speed +recorded *at the moment the turn starts* +([`tools/re-capture/flight_law3.py`](../../tools/re-capture/flight_law3.py)): + +| phase | speed at turn | measured rate | definition | +|---|---|---|---| +| pitch, minimum speed | 130 /s | **74.9 °/s** | `AV_PitchMinus_Min` **75** | +| pitch, half throttle | 388 /s | 73.7 °/s | (between, see below) | +| pitch, maximum speed | 1 821 /s | **41.1 °/s** | `AV_PitchMinus_Max` **40** | +| roll, minimum speed | 110 /s | 129.5 °/s | `AV_Roll_Min` 200 | +| roll, maximum speed | 1 722 /s | 149.3 °/s | `AV_Roll_Max` 125 | + +**Pitch lands on 75 and 40 — the definition's own numbers, with no scale factor.** +So the ~1.2× I attributed to the emulated time base was an artefact of measuring +during the `AA_*` acceleration ramp with too little settle, and that explanation is +**withdrawn**: angular rates need no correction, and a reimplementation should use +`AV_*` verbatim. + +What remains unexplained is only on the **linear** side: settled speeds still read +high and vary between runs (`RT` full measured 1 342 in one flight and 1 821 in +another, against `MaximumVelocity` 1 200), which is what a craft being shoved around +in a firefight looks like. The HUD, meanwhile, reads exactly `CruisingVelocity` at +neutral throttle. A clean linear measurement wants a quiet corner of a map, not this +one — until then, no cause is claimed. + +**Roll, re-measured with proper settles, confirms the axis difference**: 129.5 at +110 /s and 149.3 at 1 722 /s — no speed dependence, both near `AV_Roll_Max` **125**, +where pitch moved 75 → 40 across the same range. The mid-throttle pitch point does +not discriminate lerp-versus-switch, because at half throttle the craft only reached +388 /s, where an interpolation would predict ~66 °/s against a measured 73.7 — inside +this probe's noise. + +Raw samples: [`captures/turn-law-settled.csv`](captures/turn-law-settled.csv). diff --git a/tools/re-capture/flight_law3.py b/tools/re-capture/flight_law3.py new file mode 100644 index 0000000..2f223d5 --- /dev/null +++ b/tools/re-capture/flight_law3.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +"""Is the `_Min`/`_Max` pair a LERP on speed, and is roll really speed-independent? + +Pitch measured 87 deg/s at minimum speed and 54 at maximum, against +`AV_PitchMinus_{Min,Max}` 75/40 — consistent with either a two-state switch or an +interpolation. A THIRD point settles it: at half throttle the craft sits midway +between cruise and maximum, so an interpolation must put the pitch rate between the +two, while a switch cannot. + +Roll measured ~144 and ~150 in the two regimes, but only 2 s apart — not enough +settle for a 126 -> 1342 speed change. Here every phase settles 5 s. + +Usage: flight_law3.py [dwell_s] +""" +import json, math, os, struct, subprocess, sys, time +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +import speed_law + +SETTLE = 5.0 + +def pad(*a): + subprocess.run(["vgamepad", *a], capture_output=True) + +def row_at(fd, off, cfg, row): + at = off + cfg["rot_delta"] + row * cfg["rot_stride"] + v = struct.unpack(">3f", os.pread(fd, 12, at)) + n = math.sqrt(sum(c * c for c in v)) or 1.0 + return tuple(c / n for c in v) + +def ang(a, b): + return math.degrees(math.acos(max(-1.0, min(1.0, sum(a[i] * b[i] for i in range(3)))))) + +def main(): + out_csv = sys.argv[1] + dwell = float(sys.argv[2]) if len(sys.argv) > 2 else 4.0 + cfg = json.load(open("/tmp/nav-live.json")) + w, off, nm = speed_law.find_player() + if not w: + sys.exit("player entity not found after retries") + print(f"# locked on {nm}") + fwd, other = cfg.get("fwd_row", 0), (1 if cfg.get("fwd_row", 0) != 1 else 2) + rows = [] + phases = [ + # label, throttle, stick, matrix row to watch + ("pitch_slow", ("LT", 1.0), ("LY", 1.0), fwd), + ("pitch_mid", ("RT", 0.5), ("LY", 1.0), fwd), + ("pitch_fast", ("RT", 1.0), ("LY", 1.0), fwd), + ("roll_slow", ("LT", 1.0), ("LX", 1.0), other), + ("roll_fast", ("RT", 1.0), ("LX", 1.0), other), + ] + for label, (trig, tv), (axis, av), row in phases: + pad("trig", "RT", "0.0"); pad("trig", "LT", "0.0") + pad("axis", "LX", "0.0"); pad("axis", "LY", "0.0") + pad("trig", trig, str(tv)) + time.sleep(SETTLE) # 5 s: a full 126 -> 1342 change needs ~2 s + # speed at the moment of the turn, so the regime is recorded not assumed + p0 = speed_law.pos_at(w.fd, off); time.sleep(0.6); p1 = speed_law.pos_at(w.fd, off) + v_at_turn = math.dist(p0, p1) / 0.6 + pad("axis", axis, str(av)) + seq, t0 = [], time.time() + while time.time() - t0 < dwell: + seq.append((round(time.time() - t0, 3), *row_at(w.fd, off, cfg, row))) + time.sleep(0.05) + pad("axis", axis, "0.0") + rows += [(label, *s) for s in seq] + rates = [] + for t in range(int(dwell) - 1): + a = [s for s in seq if s[0] >= t][0] + b = [s for s in seq if s[0] <= t + 1][-1] + rates.append(ang(a[1:], b[1:]) / (b[0] - a[0])) + mean = sum(rates) / len(rates) + print(f"# {label:<11} speed {v_at_turn:6.0f}/s rate {mean:6.1f} deg/s " + + " ".join(f"{r:5.0f}" for r in rates)) + pad("trig", "RT", "0.0"); pad("trig", "LT", "0.0"); pad("reset") + with open(out_csv, "w") as f: + f.write("phase,t,ax,ay,az\n") + for r in rows: + f.write(",".join(str(x) for x in r) + "\n") + print(f"# wrote {out_csv}") + +if __name__ == "__main__": + main()