Cone History Tracking
Single-frame color is noisy under projection error, intermittent LiDAR misses, and left/right disagreement. Planning wants a stabler /associated_colored_cones than raw per-frame labels.
Prod behavior
Section titled “Prod behavior”After the frame is colored:
- Prune stale tracks (lifetime param)
- Associate current detections within
cone_hist_min_dist_thresh_m - Update color vote counts (and position smoothing when present on the branch)
- Optionally let unknown detections inherit nearby track color
- Order blue / yellow / orange and publish
Color is majority vote over observed blue/yellow/orange counts. Ties use the last resolved color.
Lane ordering after history is order_cones. Debug split: /colored_cones (pre-history) vs /associated_colored_cones (post-history) when publish_pre_cone_history_debug is on.
Gap-fill (propagate_history)
Section titled “Gap-fill (propagate_history)”Tracks that meet detection-count and spatial gates can be republished across short unseen gaps after propagating stored positions with twist-derived planar displacement. That reduces dropouts and can also keep false tracks alive when gates are loose.
Failure modes
Section titled “Failure modes”| Observation | Likely cause |
|---|---|
| Pre-history flickers | Projection or classifier |
| Pre stable, post flickers / ghosts | History association, votes, or gap-fill gates |
| Colors flip every few frames | Competing votes; check merge + threshold |
Triage: ops. Code: cone_history_manager.cpp.
