FAST-LIO2 + EGO-Planner Pipeline on a Ducted Whoop
Overview
This post documents the integration of FAST-LIO2 (LiDAR-inertial odometry) and EGO-Planner (gradient-based local planning) running on an Orange Pi 5 Pro (RK3588) onboard a 3.5-inch ducted whoop platform.
Hardware
- Flight Controller: Pixhawk-compatible running PX4
- Onboard Computer: Orange Pi 5 Pro (RK3588, 8-core, 6 TOPS NPU)
- LiDAR: Livox Mid-360 (mechanical-rotating, 360° FOV, 40m range)
- Camera: Intel RealSense D435 (used for target detection, not odometry)
- Platform: Custom 3.5-inch ducted whoop (~250g AUW with payload)
Software Stack
Livox Mid-360
|
v
livox_ros_driver2 --> FAST-LIO2 --> /Odometry
| /cloud_registered
v
EGO-Planner <-- /move_base_simple/goal
|
v
/planning/pos_cmd
|
v
ego_mavros_bridge
|
v
MAVROS
|
v
PX4
Key Parameters
The tuning process required several parameter adjustments for the small platform:
max_vel: 0.5 m/s (conservative for indoor navigation)inflation: 0.22 (reduced from default to prevent over-conservative obstacle avoidance for the small airframe)virtual_ceiling: 1.5 mtakeoff_height: 0.5 m
Lessons Learned
1. TF Alignment
The coordinate frame alignment between FAST-LIO2's odometry output and
MAVROS's expected frame required a dedicated bridge node
(fastlio_mavros_bridge) that republishes odometry on the correct topic
with proper frame IDs.
2. EGO-Planner Tuning for Small Platforms
The default EGO-Planner parameters assume a larger platform. For the 3.5-inch whoop:
- Inflation radius must account for the duct diameter plus safety margin
- Maximum velocity needs to be limited to prevent overshoot in tight spaces
- Distance checks (
dist0) should be tighter than default
3. Vibration Isolation
The Livox Mid-360 is sensitive to high-frequency vibration. On a small drone with high-RPM motors, soft mounting is essential. We used TPU dampeners between the LiDAR mount and the frame.
4. Compute Headroom
The RK3588 handles the full stack (LiDAR driver + FAST-LIO2 + EGO-Planner) at ~60% CPU utilization, leaving headroom for the YOLO/RKNN target detector and other nodes. The NPU offloading for YOLO is critical — running YOLO on CPU would saturate the board.