Skip to content

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.

After the frame is colored:

  1. Prune stale tracks (lifetime param)
  2. Associate current detections within cone_hist_min_dist_thresh_m
  3. Update color vote counts (and position smoothing when present on the branch)
  4. Optionally let unknown detections inherit nearby track color
  5. 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.

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.

ObservationLikely cause
Pre-history flickersProjection or classifier
Pre stable, post flickers / ghostsHistory association, votes, or gap-fill gates
Colors flip every few framesCompeting votes; check merge + threshold

Triage: ops. Code: cone_history_manager.cpp.