The Outdoor-to-Indoor Transition Handoff
The transition handoff (transition_1..3) is the dataset’s hardest truth structure. There is no single stitched full-run truth lane. Three regimes:
- Outdoor:
ground_truth_8hz/80hz.csv(PX4-IMU, ENU) — covers the early outdoor segment; ontransition_3the80hzlane numerically continues through the gap but is unreliable there (below). - Building-approach: marker-based pose, surviving only inside the derived
transition_gt_in_{gps,moap}.csvhelpers. - Indoor:
mocap_vehicle_data.csv(rigid-body, mocap world) — covers the late segment only.
Coverage differs structurally between runs:
transition_1: outdoor GT then a 4.97 s gap then mocap (sequential, no overlap).transition_2: same shape, 5.50 s gap.transition_3: the outdoor8hzlane is split by a 77.75 s gap (≈[113.8, 191.5] s rel. IMU start) and the contiguousmocap_vehiclesegment (≈42.8 s, [124.9, 167.7] s) falls entirely inside that GT8 hole.- So there is no co-temporal overlap between
ground_truth_8hzandmocap_vehicleon any transition run (an earlier “overlap ~70 s” reading was wrong; what spans the whole run is the staticmocap_tag_boardlane, not the vehicle pose). - The
ground_truth_80hzlane does span this gap (its own largest interior gap is 0.05 s), but its in-gap trajectory is unreliable: strict-gap net displacement 8.0 m vs 2.6–3.4 m from three independent estimates (stereo VO,rs_odom, the fiducial marker bridge), a ~2.4× overshoot — do not use80hzas truth inside thetransition_3gap (verified by the camera-feasibility probe). transition_3also lackstime_info.yamland a<run>_sensors/README.txt.- Its shipped GT attitude is ~16° gravity-inconsistent like the other KLU runs (a “26°” sometimes quoted is a regeneration artifact, not the shipped product).
- So there is no co-temporal overlap between
All three transition runs nevertheless have real raw dual-RTK overlap with mocap_vehicle even though none has co-temporal overlap between ground_truth_8hz and mocap_vehicle.
- Quantitatively, with the cleaned
mocap_vehiclelane used by dir-5:transition_1has39.09 s / 313dual-RTK paired rows inside the overlap window,transition_2has35.48 s / 282rows, andtransition_3has42.77 s / 339rows. - On all three runs those overlap rows carry
rtk_status == -1on both receivers, even though the rows still contain positions andgps_fix_typecan be2or3, so the overlap is real geometry on disk but diagnostic-only under the published RTK status semantics.
To evaluate across a full transition trajectory you must stitch the three lanes yourself, accounting for their different frames (ENU vs mocap-world), the PX4-IMU-vs-rigid-body reference-point difference, and the gaps. The _in_gps and _in_moap helpers are two different aligned frames (tens of metres apart) and are not primary scoring truth.
Gap and detection-window geometry (windows in seconds rel. IMU start; the truth gap is outdoor-GT8-end → mocap-start):
| Run | Outdoor GT8 | mocap_vehicle | Truth gap | nav-cam >=4 tags, raw full-run scan |
nav-cam >=4 tags, undistorted full-run scan |
|---|---|---|---|---|---|
| transition_1 | [0.8, 168.2] | [173.2, 212.2] | 4.97 s | [150.5, 196.6] | [151.2, 182.3] |
| transition_2 | [0.6, 174.9] | [180.4, 221.0] | 5.50 s | [156.1, 202.9] | [156.9, 185.1] |
| transition_3 | [0.3, 113.8] ∪ [191.5, 194.9] | [124.9, 167.7] | 11.1 s | [93.7, 170.6] | [97.5, 170.6] |
The nav-cam >=4-tag window overhangs the gap on both sides on every run under both the raw full-run scan and the undistorted full-run scan, so the fiducial field bridges outdoor and indoor in time. The dir-6 gate and the dir-7 fiducial front-end use the undistorted detector path. (transition_3’s 11.1 s truth gap is the leading slice of the 77.75 s GT8 hole, before mocap begins.)
In-gap witness coverage (counts are samples strictly inside the truth gap, per run t1/t2/t3) — the gap is narrow and several non-GT sensors cover it continuously, so it is reconstructable:
- nav-cam fiducials (downward camera, ArUco DICT_7X7_250):
- ≥4 tags on 99 / 110 / 222 gap frames; the tags form a single connected co-visibility component, but no tag is seen on both immediate handover flanks — so the field yields absolute, anchored in-gap localization (tied to the static
mocap_tag_board, Motion Capture), not a direct outdoor↔︎indoor tag bridge. - A full-run scan later does find
transition_3shared outdoor/indoor tags, but only far deeper into the indoor side, outside the local pre/post-gap flank pair that matters for a direct tag-only bridge: the raw-image scan finds47,49,51, and53, while the undistorted detector path used by dir-6/dir-7 finds51and53. - Detection coverage is not a usable PnP fix everywhere: on
transition_1all 99 gap frames see ≥4 tags yet planar-PnP degeneracy leaves only ~21 with reprojection < 3 px.
- ≥4 tags on 99 / 110 / 222 gap frames; the tags form a single connected co-visibility component, but no tag is seen on both immediate handover flanks — so the field yields absolute, anchored in-gap localization (tied to the static
- LRF (
lrf_range): 100% valid through every gap, ~30 Hz (149 / 164 / 332 samples), range 0.86–1.47 m — the tightest in-gap vertical witness (~37 mm agreement). - baro (
px4_baro): 100% temporal coverage, ~18 Hz delivered (92 / 102 / 203 samples); independent vertical physics but coarse (5–10 cm random noise) with a dynamic-pressure bias during the powered descent. - UWB (
uwb_range): 27 / 30 / 50 in-gap ranging rows (≥1 valid anchor on 27 / 28 / 50, up to 3 anchors), 3–8.5 m — horizontal information, not an absolute 2-D fix. - rs_odom: finite through the gap on
transition_1/transition_3(100%) but all-NaN ontransition_2.