We flew our first mapper-based path flight on a Starling 2 Max and the drone did follow the planned path. However, the local planner was unable to deliver a single trajectory for the entire flight, so the drone was flying on the one path computed before departure, with no replanning.
What happened
Global planning succeeded:
05:13:38 Client requested plan to location
05:13:38 Using start pose of: x: 1.67, y: -0.80, z: -1.46
05:13:38 Using goal pose of: x: 5.16, y: -1.34, z: -0.89
05:13:38 Starting RRTConnect planner
05:13:38 Immediate collision free path found!
Then, from the instant we pressed Follow Path, this repeated continuously for 2 min 16 s until we took manual control:
05:14:10 Client requested to follow last path
05:14:10 Local Planner failed to send trajectory
05:14:10 ERROR: Cannot insert trajectory. Total segments = 20, Max segments = 20
... (repeats at roughly 1-2 s intervals through 05:16:26)
Throughout those 2 min 16 s the planner itself was running normally — A* took = 0.07-0.14 ms for 13 iterations and Smoother took = 6-12 ms were interleaved with every failure. So it computes a trajectory and then cannot insert it.
The drone moved 2.68 m straight-line / 8.79 m total path at up to 1.04 m/s, which matches the pre-computed path. It stopped 0.81 m short of the goal only because the pilot intervened.
What we ruled out
Not a planning failure — the global path was found and reported collision-free.
Not a VIO problem — dt held at 33.3 ms for all 44 samples in flight, features 15-30, cs_ev_pos / cs_ev_yaw / cs_ev_hgt all True.
Not a map problem — voxl_mapper_aligned_ptcloud was producing 1,489-2,925 points at ~10 Hz before and during the flight.
Not CPU load — load average dropped from 7.75 on the ground to 4.5 in flight; governor was performance.
Not thermal throttling — 94-96 C, but scaling_cur_freq equalled cpuinfo_max_freq on all cores and dmesg showed no throttle events.
Not a config we changed — voxl-mapper.conf is stock; loco_num_segments is 10.
What we could not find
The limit of 20 does not appear in voxl-mapper.conf. loco_num_segments is 10, which is not the number in the error. We could not locate a setting that exposes Max segments.
One thing we suspect, but have not tested
Before the successful Go, we had two failed ones — both rejected with ERROR: End point is in collision because the goal came in at z: 0.00 (we were clicking in the 2D view, which puts the point at ground level). The Max segments = 20 error appeared immediately on the first Follow Path, which makes us wonder whether failed plans leave segments behind. We have not yet tested whether pressing Clear Paths first avoids it.
Questions
Where is the 20-segment limit set, and is it configurable?
What normally fills the segment buffer, and what clears it? Does a failed Go leave segments allocated?
Is Clear Paths the correct way to reset this state before Follow Path?
Is there a way to detect this condition other than reading the mapper journal? From the Portal UI everything looked correct — the path was drawn and Immediate collision free path found! was reported — so an operator has no indication that obstacle avoidance is not active.
Environment
Hardware: Starling 2 Max, SKU MRB-D0012-4-V4-C29-T8-M36
voxl-version: system-image 1.8.08-M0054-14.1a-perf, voxl-suite 1.6.4~beta5
voxl-mapper 0.2.4, voxl-vision-hub with offboard_mode: "trajectory"
Services active at the time: voxl-vision-hub, voxl-open-vins-server, voxl-mapper, voxl-px4, voxl-portal
We have the full mapper journal and the PX4 .ulg from this flight and can share either.