Project Description
Freelance IMU Data Analyst — Ground Truth Validation & Filter Design (BLE Wearable / MEMS IMU)
Engagement: Freelance / Contract (remote)
Duration: 3–4 weeks
Budget: open to fixed-price or hourly proposals
Start: immediate
────────────────────────────────────────
ABOUT THE PROJECT
────────────────────────────────────────
We are developing a Bluetooth-LE wearable that streams 9-DOF IMU data over BLE in a fixed 68-byte packet. The firmware runs in two parallel configurations that must produce equivalent output:
• Configuration A — Bosch BHI260AP: 6-axis IMU + magnetometer with on-chip sensor fusion (BHY2 virtual sensor engine), sampled at 17 Hz.
• Configuration B — Bosch BMI323: 6-axis IMU only, with a Mahony filter running on the MCU for orientation, gravity, and linear acceleration, sampled at 25 Hz.
Both configurations transmit the same five sensor blocks per packet: accelerometer (g), gyroscope (dps), linear acceleration (g), gravity vector (g), and orientation as Euler angles (yaw / pitch / roll, in degrees).
We need an experienced IMU specialist for two related deliverables:
1. Independently VALIDATE that the data we transmit is correct — from raw int16 sensor output, through scaling and sensor fusion, to the final float32 values delivered to the host.
2. DESIGN AND ANALYSE the digital filters and fusion-filter tuning used in our pipeline — characterise sensor noise, recommend pre-filtering, and tune (or propose alternatives to) the on-MCU Mahony filter for Config B so that its output matches the BHI260AP fused output as closely as possible.
────────────────────────────────────────
SCOPE OF WORK
────────────────────────────────────────
You will be provided with a detailed validation reference document, BLE packet captures from both firmware configurations, and the hardware unit shipped to you (or remote test-bench access — to be agreed).
--- PART 1: VALIDATION ---
1. Decode the 68-byte BLE packet and verify that all 60 float32 fields parse cleanly (no NaN/Inf, correct endianness, correct field order).
2. Verify scaling of raw int16 data against documented LSB constants (accel 0.000244 g/LSB, gyro 0.061 dps/LSB, orientation 0.00549°/LSB for Config A).
3. Run static / at-rest tests — confirm gravity reads ~1 g on the up-axis, gyro reads ~0 dps, linear accel reads ~0 g, and gravity vector magnitude ≈ 1 g.
4. Run dynamic tests — controlled tilts (90° on X / Y), 360° yaw rotation, free-fall drop, and known-rate angular velocity if a rate table is available.
5. Cross-validate Configuration A vs. Configuration B for the same motion sequences.
6. Verify calibration state for Config A (per-sensor accuracy bytes must reach 3 before data is considered trustworthy).
--- PART 2: FILTER DESIGN & ANALYSIS ---
7. Characterise raw sensor noise — Allan variance / PSD analysis of accelerometer and gyroscope at the operating ODR; identify bias instability, random walk, and any structured noise (e.g. mains pickup, mechanical resonance).
8. Pre-filter design — propose and prototype digital filters for the raw IMU stream (typically low-pass for accel noise, high-pass / notch for gyro drift and structured noise). Provide filter coefficients, magnitude/phase plots, group-delay analysis, and quantify SNR improvement.
9. Mahony filter tuning (Config B) — tune Kp and Ki gains for our use-case, characterise convergence time, steady-state error, and yaw-drift rate. Quantify trade-offs between responsiveness and noise rejection.
10. Quaternion-norm stability check — confirm |q| stays within tolerance over long runs; flag any normalisation issues.
11. Comparative analysis — benchmark our Mahony output against at least one alternative (e.g. Madgwick, complementary filter, lightweight EKF) on the same recorded data; recommend whether to keep, retune, or replace.
12. Cross-config alignment — quantify the residual error between Config A (BHI260AP fusion) and Config B (Mahony) outputs after your tuning, and document the remaining gap.
13. Document findings with pass/fail against documented criteria, and root-cause any deviations.
────────────────────────────────────────
REQUIRED SKILLS & BACKGROUND
────────────────────────────────────────
• 3+ years hands-on experience with MEMS IMUs (Bosch, ST, InvenSense, or similar)
• Strong understanding of sensor fusion: complementary / Mahony / Madgwick / EKF, quaternion math, Euler angle conventions
• Solid DSP background: FIR/IIR filter design, Allan variance, PSD analysis, group delay, fixed-point vs. floating-point trade-offs
• Experience tuning fusion-filter gains for embedded targets (memory and CPU constrained)
• Comfortable with raw int16 sensor data, scaling, and BLE packet parsing
• Proficient in Python (NumPy, SciPy, Pandas, Matplotlib) for analysis, filter design, and plotting
• Experience comparing IMU output against a reference (rate table, optical tracking, surveyed reference IMU, or calibrated turntable)
• Bonus: prior experience with Bosch BHI260AP or BMI323, BLE sniffing tools (Wireshark + nRF Sniffer / TI sniffer), or embedded firmware debugging
────────────────────────────────────────
DELIVERABLES
────────────────────────────────────────
1. Validation report (PDF) — pass/fail table per test, with measured values, deviations, and plots.
2. Filter design report (PDF) — noise characterisation results, proposed filter topologies, coefficients, frequency-response plots, Mahony tuning recommendations, and comparative benchmarks against alternative fusion algorithms.
3. Python scripts / notebooks used for decoding, analysis, filter design, and benchmarking (well-commented, runnable on a fresh environment).
4. Raw and decoded data files from each test run.
5. Drop-in C/C++ reference implementation (or pseudocode) for any new filter to be ported to the MCU.
6. Recommendations for any failures or out-of-spec behaviour, with proposed root cause and suggested fixes.
7. Wrap-up call (~1 hour) to walk us through findings.
────────────────────────────────────────
HOW TO APPLY
────────────────────────────────────────
Please include in your proposal:
• A short note on your relevant IMU validation and filter-design experience (links to past work / writeups appreciated)
• The reference equipment you have access to (rate table, optical mocap, reference IMU, etc.)
• Your availability and proposed timeline
• A fixed-price quote OR hourly rate with estimated hours, ideally split across Part 1 (validation) and Part 2 (filter design)
• Any clarifying questions about the project
We will share the full validation reference document and a sample BLE capture with shortlisted candidates under a brief NDA.
Looking forward to working with someone who can be rigorous about the math and methodical about the testing.