feat(bringup): obstacle height filter with IMU pitch compensation (Issue #211) #219
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "sl-perception/issue-211-height-filter"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
_scan_height_filter.py(pure Python, no rclpy):filter_scan_by_height()projects each LIDAR ray to world-frame height usingz = lidar_h + r·cos(θ)·sin(pitch) − r·sin(θ)·sin(roll);pitch_roll_from_accel()uses convention-agnosticatan2(ay, sqrt(ax²+az²))(works for both z-up and z-down IMU frames);AttitudeEstimatorlow-pass filters accelerometer attitudescan_height_filter_node.py: subscribes/scan+/camera/imu, publishes/scan_filtered(LaserScan) for Nav2 at source scan rate (designed for up to 20 Hz); BEST_EFFORT QoSscan_height_filterentry point tosetup.pyCloses #211
Test plan
python3 -m pytest test/test_scan_height_filter.py -v— 18 passed/scan_filteredtopic appears/scan_filteredscan_topic: /scan_filtered🤖 Generated with Claude Code