Skip to content

Point-to-Pixel

point_to_pixel owns color (and short-term temporal association) for centroids that already exist on /cones. It does not invent new 3D cones from image boxes. Boxes without a projected LiDAR point are unused.

Position wrong → driver. Color or flicker wrong → here (or calibration / twist feeding this node).

  1. /cones arrives with a LiDAR stamp
  2. Nearest left/right frames are taken from camera deques
  3. Optional motion model integrates /filter/twist across the stamp gap
  4. Points project through projection_matrix_l/r
  5. YOLO or HSV classifies each projected pixel; left/right merge by confidence
  6. Cone history updates tracks and publishes /associated_colored_cones
DirectionTopicNotes
In/conesCentroids (metres) from the driver
In/filter/twistMotion model and history propagation
Incamera framesSeeCam default; ZED / RosCam via compile flags
Out/associated_colored_conesPlanning (post-history)
Out/colored_conesPre-history debug when publish_pre_cone_history_debug=true
AreaKeys
Extrinsics / leverprojection_matrix_l/r, imu_to_lidar
YOLO buildsmodel path, class ID map, confidence_threshold
HSV builds*_filter_low/high
Historycone_hist_* association / lifetime / ordering
Debugpublish_pre_cone_history_debug

Matrix generation and math: physical calibration.

SymptomLikely cause
Good /cones, systematic miss in imageProjection / calibration / wrong YAML
On cone but wrong classClassifier, confidence, lighting; HSV ranges on HSV builds
One camera only wrongThat side’s matrix, undistort, right-cam 180180^\circ
Ok at rest, wrong movingTwist deque, imu_to_lidar, motion model
Pre-history stable, post-history flickersCone history (or gap-fill gates on propagate_history)

Triage steps: ops. Stack context: architecture.

Terminal window
colcon build --symlink-install --packages-select point_to_pixel
ros2 run point_to_pixel point_to_pixel --ros-args \
--params-file src/point_to_pixel/config/params.yaml