{
  "date": "2026-09-28",
  "passed": true,
  "seconds": 1.532,
  "execution_observation": {
    "cpu_affinity": [
      0,
      1
    ],
    "rlimits": {
      "RLIMIT_AS": [
        6442450944,
        6442450944
      ],
      "RLIMIT_CPU": [
        280,
        280
      ],
      "RLIMIT_NPROC": [
        128,
        128
      ],
      "RLIMIT_NOFILE": [
        256,
        256
      ],
      "RLIMIT_FSIZE": [
        33554432,
        33554432
      ]
    },
    "route_table": "",
    "process_security": [
      "CapEff:\t0000000000000000",
      "CapBnd:\t0000000000000000",
      "NoNewPrivs:\t1"
    ],
    "input_mounts_readonly": {
      "/trajectory": true,
      "/images": true,
      "/home/peakadmin/.cache/drone-course-evo-verify/bin": true
    }
  },
  "versions": {
    "python": "3.12.3",
    "evo": "1.37.1",
    "opencv": "5.0.0",
    "numpy": "2.5.2",
    "matplotlib": "3.11.1"
  },
  "trajectory": {
    "input_pose_counts": {
      "reference": 16702,
      "estimate": 807
    },
    "associated_poses": 798,
    "association_tolerance_seconds": 0.01,
    "max_association_difference_seconds": 9.5367431640625e-07,
    "duration_seconds": 79.29999995231628,
    "alignment": "SE(3) Umeyama over all associated poses; no scale correction",
    "scale": 1.0,
    "ape_translation_m": {
      "rmse": 0.09172711520685747,
      "mean": 0.08152162194619846,
      "median": 0.07791194901949544,
      "std": 0.04204864824739553,
      "min": 0.0026199870973829826,
      "max": 0.2558167338139711,
      "sse": 6.714263204009339
    },
    "rpe_translation_m": {
      "rmse": 0.05752205146109086,
      "mean": 0.04499027517479794,
      "median": 0.037123346434571505,
      "std": 0.03584217549184682,
      "min": 0.0036127113727517386,
      "max": 0.2180507829162626,
      "sse": 0.2613941259390984
    },
    "rpe_protocol": {
      "delta_frames": 10,
      "all_pairs": false,
      "pair_count": 79,
      "actual_pair_seconds_min": 0.8999991416931152,
      "actual_pair_seconds_max": 1.0000004768371582,
      "note": "evo CLI does not support seconds as delta unit; ten associated frames are not claimed to equal exactly one second."
    },
    "cli_api_statistics_agree": true,
    "commands": [
      {
        "argv": [
          "/home/peakadmin/.cache/drone-course-evo-verify/bin/evo_ape",
          "euroc",
          "/trajectory/V102_groundtruth.csv",
          "/trajectory/V102.txt",
          "--align",
          "--pose_relation",
          "trans_part",
          "--t_max_diff",
          "0.01",
          "--save_results",
          "/work/out/ape.zip"
        ],
        "stdout": "\u001b[93mInitialized new /work/home/.evo/settings.json\u001b[39m\nAPE w.r.t. translation part (m)\n(with SE(3) Umeyama alignment)\n\n       max\t0.255817\n      mean\t0.081522\n    median\t0.077912\n       min\t0.002620\n      rmse\t0.091727\n       sse\t6.714263\n       std\t0.042049\n\n",
        "stderr": "",
        "exit_code": 0
      },
      {
        "argv": [
          "/home/peakadmin/.cache/drone-course-evo-verify/bin/evo_rpe",
          "euroc",
          "/trajectory/V102_groundtruth.csv",
          "/trajectory/V102.txt",
          "--align",
          "--pose_relation",
          "trans_part",
          "--t_max_diff",
          "0.01",
          "--save_results",
          "/work/out/rpe.zip",
          "--delta",
          "10",
          "--delta_unit",
          "f"
        ],
        "stdout": "RPE w.r.t. translation part (m)\nfor delta = 10 (frames) using consecutive pairs\n(with SE(3) Umeyama alignment)\n\n       max\t0.218051\n      mean\t0.044990\n    median\t0.037123\n       min\t0.003613\n      rmse\t0.057522\n       sse\t0.261394\n       std\t0.035842\n\n",
        "stderr": "",
        "exit_code": 0
      }
    ]
  },
  "calibration": {
    "pattern_internal_corners": [
      9,
      6
    ],
    "square_side": 1,
    "square_unit": "arbitrary board unit; physical size unknown",
    "image_size_px": [
      640,
      480
    ],
    "predeclared_holdout": [
      "left03.jpg",
      "left07.jpg",
      "left12.jpg"
    ],
    "fit_views": [
      "left01.jpg",
      "left02.jpg",
      "left04.jpg",
      "left05.jpg",
      "left06.jpg",
      "left08.jpg",
      "left09.jpg",
      "left11.jpg",
      "left13.jpg",
      "left14.jpg"
    ],
    "detection_failures": [],
    "model": "pinhole, k1 k2 p1 p2 k3, calibrateCamera defaults",
    "camera_matrix_px": [
      [
        536.5277753113556,
        0.0,
        342.3076501333392
      ],
      [
        0.0,
        536.4405570793269,
        235.9607898138797
      ],
      [
        0.0,
        0.0,
        1.0
      ]
    ],
    "distortion": [
      -0.25499271289800435,
      -0.09842006021779348,
      0.0018221200071360931,
      -0.0006810259947713711,
      0.35367090209411
    ],
    "fit_rms_px": 0.45139843941891505,
    "holdout_rms_px": 0.2177971657996616,
    "heldout_pose_method": "solvePnP ITERATIVE using every detected corner; fixed fitted intrinsics/distortion",
    "views": [
      {
        "image": "left01.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.19255776703357697,
        "mean_px": 0.1686936467885971,
        "max_px": 0.40325498580932617
      },
      {
        "image": "left02.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 1.2122962474822998,
        "mean_px": 0.8380382061004639,
        "max_px": 4.789951324462891
      },
      {
        "image": "left03.jpg",
        "split": "holdout",
        "corners": 54,
        "rms_px": 0.18540745973587036,
        "mean_px": 0.16564618051052094,
        "max_px": 0.39026305079460144
      },
      {
        "image": "left04.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.20216676592826843,
        "mean_px": 0.18348653614521027,
        "max_px": 0.41890767216682434
      },
      {
        "image": "left05.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.17007717490196228,
        "mean_px": 0.14685441553592682,
        "max_px": 0.44620370864868164
      },
      {
        "image": "left06.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.18701113760471344,
        "mean_px": 0.16567496955394745,
        "max_px": 0.46502164006233215
      },
      {
        "image": "left07.jpg",
        "split": "holdout",
        "corners": 54,
        "rms_px": 0.24644966423511505,
        "mean_px": 0.19910432398319244,
        "max_px": 0.9138855338096619
      },
      {
        "image": "left08.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.2569188177585602,
        "mean_px": 0.22538593411445618,
        "max_px": 0.527427077293396
      },
      {
        "image": "left09.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.2960500717163086,
        "mean_px": 0.2162577509880066,
        "max_px": 1.1772311925888062
      },
      {
        "image": "left11.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.17130284011363983,
        "mean_px": 0.15495745837688446,
        "max_px": 0.42024803161621094
      },
      {
        "image": "left12.jpg",
        "split": "holdout",
        "corners": 54,
        "rms_px": 0.21724054217338562,
        "mean_px": 0.18965739011764526,
        "max_px": 0.6055539846420288
      },
      {
        "image": "left13.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.4592037796974182,
        "mean_px": 0.2833092212677002,
        "max_px": 2.675318717956543
      },
      {
        "image": "left14.jpg",
        "split": "fit",
        "corners": 54,
        "rms_px": 0.1795128434896469,
        "mean_px": 0.1567516028881073,
        "max_px": 0.40933606028556824
      }
    ]
  },
  "sources": {
    "trajectory": [
      {
        "name": "V102.txt",
        "url": "https://raw.githubusercontent.com/MichaelGrupp/evo/bc52497d7f403bf2afb25be3f760f3d6be1432c1/test/data/V102.txt",
        "bytes": 163477,
        "sha256": "b8dd5ce6907cb00a57521767113fbe9fb640034208941aae5a7ee6ee81d2ecdc"
      },
      {
        "name": "V102_groundtruth.csv",
        "url": "https://raw.githubusercontent.com/MichaelGrupp/evo/bc52497d7f403bf2afb25be3f760f3d6be1432c1/test/data/V102_groundtruth.csv",
        "bytes": 2837076,
        "sha256": "fed415eee44313584b9c4f61010dac146d5e4a4a35301db25b1ecd7d4d91b5f0"
      }
    ],
    "images": [
      {
        "name": "left01.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left01.jpg",
        "sha256": "9621899098adffa1440c8264606bb7be535ccfd9ad126ae8e0bd9b0c5a5b8676",
        "bytes": 27908
      },
      {
        "name": "left02.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left02.jpg",
        "sha256": "052e700bbcc865c112958ec2ea105cb1bce4deca50ac8d6efae13adca9df7a2c",
        "bytes": 28611
      },
      {
        "name": "left03.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left03.jpg",
        "sha256": "c85b9426c3d8fcf161e1e727356105091009c3fd0b1b1a65bc2da91fea2724d2",
        "bytes": 29553
      },
      {
        "name": "left04.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left04.jpg",
        "sha256": "b490599dccfbfe5eb56d33363415b02227a9548ab8c9b8e7b05d3580e97266d9",
        "bytes": 25150
      },
      {
        "name": "left05.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left05.jpg",
        "sha256": "40bab8934fa76f82ec614a7fd0e6ebb4d9f74391d5e8b0c6f2f0ed6080c6c4de",
        "bytes": 28743
      },
      {
        "name": "left06.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left06.jpg",
        "sha256": "1cb164db61b3bd52f58a7e9340bb27c5e0278895bc80b6f292fba5cf9bccc4a1",
        "bytes": 28530
      },
      {
        "name": "left07.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left07.jpg",
        "sha256": "d2211fe9f971646b6ff88ed93a4f0d3f443741eb2894095cba15caade7c8c6e4",
        "bytes": 29864
      },
      {
        "name": "left08.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left08.jpg",
        "sha256": "f7a0737894812a28243af5b409c5689f4fadfe7610958b8ca5fc79aec2f2cd1b",
        "bytes": 28689
      },
      {
        "name": "left09.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left09.jpg",
        "sha256": "753939bc62d093c001d9118e989bef2b887f1b2f9ac03603df915a8b85aa81d3",
        "bytes": 27244
      },
      {
        "name": "left10.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left10.jpg",
        "status": 404
      },
      {
        "name": "left11.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left11.jpg",
        "sha256": "e736ace3d515c94c547009c3c10d818c81506ed7059cb31123749b9cc3f94ee8",
        "bytes": 27749
      },
      {
        "name": "left12.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left12.jpg",
        "sha256": "04bdd78b3b507fe0551aa7062a3ffd94846a147ee2bea7fb38082c720bdbe231",
        "bytes": 25603
      },
      {
        "name": "left13.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left13.jpg",
        "sha256": "2637fb6dd5e557f4fadb06b353a453eb0b9223f4671f6f572f815302bc4a70b3",
        "bytes": 28129
      },
      {
        "name": "left14.jpg",
        "url": "https://raw.githubusercontent.com/opencv/opencv/4.12.0/samples/data/left14.jpg",
        "sha256": "d4c032971dd7b859f9d6aed5090c9888bd8039b82e0604bee5bfe05444fce834",
        "bytes": 27875
      }
    ]
  },
  "limitations": [
    "Existing evo test estimate evaluated; no new OpenVINS or other estimator execution.",
    "Calibration is camera-only on official example photos, not a drone camera, stereo, IMU, timing or Kalibr calibration.",
    "Holdout means unseen views for intrinsic fitting; pose is fitted to all corners of each holdout view, so residuals are not independent unseen-corner prediction.",
    "Global trajectory alignment uses reference across the full sequence; errors do not establish online navigation performance.",
    "No raw third-party photographs or trajectories redistributed in the lesson outputs."
  ]
}
