How to Fuse VL53L1X Rangefinder for Height-Above-Ground (HAGL) Estimation with PX4 on VOXL2
-
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_sensorcurrent_distance: 0.62
signal_quality: 100
orientation: 25So 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: Truewhich means EKF2 is not fusing the rangefinder measurement.
Am I missing any configuration steps to enable rangefinder fusion for altitude hold on VOXL2?