{
  "version": "1.16.9",
  "date": "2026-10-04",
  "scope": "Synthetic scalar roll recurrence, no true-angle or hardware evidence",
  "sources": [
    {
      "url": "https://ahrs.readthedocs.io/en/stable/filters/complementary.html",
      "use": "prediction and complementary weighting concept; not library execution"
    },
    {
      "url": "https://www.analog.com/en/resources/app-notes/an-1057.html",
      "use": "gravity-only assumptions for inclination"
    },
    {
      "url": "https://docs.px4.io/v1.16/en/assembly/flight_controller_orientation",
      "use": "orientation must match sensor/body axes"
    },
    {
      "url": "https://docs.px4.io/v1.16/en/advanced_config/tuning_the_ecl_ekf",
      "use": "further system estimator reading, not configuration tuning here"
    }
  ],
  "model": {
    "method": "Euler, scalar roll only",
    "angularUnit": "degree",
    "gyroUnit": "deg/s",
    "timeUnit": "second",
    "initialMs": 0,
    "initialEstimateDeg": "0",
    "tauSeconds": "0.5",
    "alphaRule": "tau/(tau+dt)",
    "predictionRule": "previous_estimate+gyro_rate*dt",
    "estimateRule": "alpha*prediction+(1-alpha)*acc_angle",
    "trueAngleDeclared": false,
    "timeClock": "single sample clock",
    "rateRepresentsEntireInterval": true
  },
  "rows": [
    {
      "sampleMs": 10,
      "dtSeconds": "1/100",
      "gyroDegPerSecond": "10",
      "accAngleDeg": "0",
      "alpha": "50/51",
      "predictionDeg": "1/10",
      "estimateDeg": "5/51"
    },
    {
      "sampleMs": 20,
      "dtSeconds": "1/100",
      "gyroDegPerSecond": "10",
      "accAngleDeg": "0",
      "alpha": "50/51",
      "predictionDeg": "101/510",
      "estimateDeg": "505/2601"
    },
    {
      "sampleMs": 40,
      "dtSeconds": "1/50",
      "gyroDegPerSecond": "10",
      "accAngleDeg": "3",
      "alpha": "25/26",
      "predictionDeg": "5126/13005",
      "estimateDeg": "33433/67626"
    }
  ],
  "hardwareStatus": "not-run",
  "figure": "Matplotlib synthetic discrete points linked for order and recurrence flow; not measured continuous waveform"
}
