Multi-Sensor Characterisation Dataset and GUM Uncertainty Analysis Pipeline for a Low-Cost Indoor Autonomous Vehicle (Camera, 2D LiDAR, MEMS Gyroscope, Wheel Encoder)

Published: 21 July 2026| Version 1 | DOI: 10.17632/stcrryjk28.1
Contributors:
aria hendrawan,

Description

This dataset contains characterisation measurements and a fully reproducible GUM-compliant (JCGM 100:2008) uncertainty-analysis pipeline for a five-sensor, low-cost perception suite of an indoor autonomous vehicle: an RGB detection camera (W7 Pro with YOLO), a lane camera (Sony IMX219), a 2D laser-triangulation LiDAR (YDLiDAR X2, characterised over a 36-angle × 40-distance grid, 10–400 cm), a MEMS gyroscope (MPU6050, 18 reference angles), and a 600 PPR optical wheel encoder (10 reference distances). Distances are referenced to a ±1 mm standard and angles to a ±0.5° index. The workbook (Data_Sensor.xlsx) provides one sheet per sensor, including datasheet parameters, reference values, and measured readings. The Python pipeline (multisensor_pipeline.py) reproduces every result table in the results/ folder: per-sensor calibration models (linear pulse-to-distance encoder calibration; gyroscope bias analysis; distance-indexed lookup-table LiDAR correction), GUM uncertainty budgets combining Type A and Type B components with Welch–Satterthwaite effective degrees of freedom and t-based coverage factors for small samples, and a system-level propagation with dominance analysis for obstacle localisation and dead reckoning. Headline results: expanded uncertainties of 0.72 cm (encoder distance, k = 2.28), 1.35° (heading), and 0.12 cm (LUT-corrected LiDAR range); heading uncertainty contributes over 99.7% of propagated obstacle-position variance. Recorded values are single-session means; the LiDAR grid exhibits zero cross-angle variance, so all LiDAR analyses are distance-only. This dataset accompanies a manuscript currently under double-anonymised review; author details will be added upon acceptance.

Files

Steps to reproduce

To reproduce all result tables and the figure from the raw workbook: Requirements: Python 3.9+ with numpy, pandas, scipy, matplotlib, and openpyxl. Install with: pip install numpy pandas scipy matplotlib openpyxl Place Data_Sensor.xlsx and multisensor_pipeline.py in the same directory, then run: DATA_XLSX=Data_Sensor.xlsx OUT_DIR=results python multisensor_pipeline.py (On Windows Command Prompt: set DATA_XLSX=Data_Sensor.xlsx && set OUT_DIR=results && python multisensor_pipeline.py) The pipeline parses each sensor sheet, fits the calibration models (two-parameter linear pulse-to-distance for the encoder; bias analysis for the gyroscope; 40-entry distance-indexed lookup table for the LiDAR), evaluates Type A and Type B uncertainty components, combines them under the law of propagation of uncertainty with Welch–Satterthwaite effective degrees of freedom and t-based coverage factors (JCGM 100:2008), and propagates the per-sensor budgets to obstacle-localisation and dead-reckoning tasks with a dominance analysis. Outputs are written to the results/ folder: T1_sensor_suite.csv, T2_encoder_calibration.csv, T3_imu_characterisation.csv, T4_lidar_characterisation.csv, T5_camera_characterisation.csv, T6_gum_budgets.csv, T7_system_propagation.csv, and F_characterisation_panels.png (300 dpi). Verification values: T6 should report expanded uncertainties U = 0.72 cm (encoder, k = 2.28, ν_eff = 8.6), U = 1.35° (gyroscope, k = 2.06), and U = 0.12 cm (LUT-corrected LiDAR range); T7 should report an obstacle-position expanded uncertainty of 2.30 cm at 1 m rising to 9.19 cm at 4 m, with the heading term contributing over 99.7% of the variance. The run is deterministic (no random seed involved), so results are bit-identical across executions. Measurement provenance: distances were referenced to a ±1 mm calibrated standard and angles to a ±0.5° index; recorded sensor values are single-session means of repeated readings.

Institutions

Categories

Sensor, Uncertainty Analysis, Control Instrumentation, Instrument Calibration, Autonomous Vehicle

Licence