# How to Fuse VL53L1X Rangefinder for Height-Above-Ground (HAGL) Estimation with PX4 on VOXL2

Source: https://forum.modalai.com/topic/5093/how-to-fuse-vl53l1x-rangefinder-for-height-above-ground-hagl-estimation-with-px4-on-voxl2
Category: General Questions (https://forum.modalai.com/category/2/general-questions)
Posted: 2026-03-10 10:24:40 UTC by Sarika Sharma
Replies: 0 · Views: 199

## Sarika Sharma · 2026-03-10 10:24:40 UTC

Hi ModalAI Team,

I am working with a VOXL2 Mini test fixture (TF-M0104) and trying to integrate a VL53L1X ToF rangefinder with PX4 for altitude hold / height-above-ground estimation.

My goal is for PX4 EKF2 to fuse the rangefinder data so that the drone can use the sensor for altitude estimation (dist_bottom / HAGL).

Sensor configuration:

/etc/modalai/voxl-rangefinder-server.conf

{
    "i2c_bus": 0,
    "vl53l1x_timing_budget_ms": 50,
    "id_for_mavlink": 0,
    "sensors": [{
        "enabled": true,
        "sensor_id": 0,
        "type": "TOF_VL53L1X",
        "fov_deg": 15,
        "range_max_m": 3,
        "location_wrt_body": [0,0,0],
        "direction_wrt_body": [0,0,1],
        "is_on_mux": false
    }]
}
PX4 parameters
EKF2_HGT_REF = 2
EKF2_RNG_CTRL = 1
EKF2_RNG_A_HMAX = 11.5 ft
SENS_EN_VL53L1X : 1
Sensor data received in PX4
px4-listener distance_sensor

current_distance: 0.62
signal_quality: 100
orientation: 25

So PX4 is receiving the rangefinder data correctly.

However, when I check:

voxl2-mini-test-fixture (TF-M0104):/etc/modalai$ px4-listener vehicle_local_position

TOPIC: vehicle_local_position
 vehicle_local_position
    timestamp: 1258315007 (0.002534 seconds ago)
    timestamp_sample: 1258313140 (1867 us before timestamp)
    ref_timestamp: 0
    ref_lat: nan
    ref_lon: nan
    x: -58.15529
    y: -29.38294
    z: -43.47373
    delta_xy: [-8.27161, 3.48610]
    delta_z: 0.00000
    vx: -5.77044
    vy: -8.23159
    vz: 0.09748
    z_deriv: 0.09754
    delta_vxy: [-0.89175, 1.40937]
    delta_vz: 0.65828
    ax: 1.33592
    ay: -1.74908
    az: 0.01860
    heading: 2.12604
    delta_heading: 1.62808
    ref_alt: nan
    dist_bottom: 0.10000
    eph: 0.61074
    epv: 0.20321
    evh: 0.41361
    evv: 0.11114
    vxy_max: inf
    vz_max: inf
    hagl_min: inf
    hagl_max: inf
    xy_valid: True
    z_valid: True
    v_xy_valid: True
    v_z_valid: True
    xy_reset_counter: 32
    z_reset_counter: 6
    vxy_reset_counter: 37
    vz_reset_counter: 26
    heading_reset_counter: 17
    heading_good_for_control: False
    xy_global: False
    z_global: False
    **dist_bottom_valid: False
    dist_bottom_sensor_bitfield: 0**
    dead_reckoning: True

which means EKF2 is not fusing the rangefinder measurement.

Am I missing any configuration steps to enable rangefinder fusion for altitude hold on VOXL2?
