Ops
Bring-up and failure checks for the live LiDAR-first stack. Graph and topics: architecture.
Bring-up
Section titled “Bring-up”- Source ROS and the workspace. Confirm UDP 2368 is free.
- Start
custom_ros_driver(prod package name) with its params file. - Health checks:
ros2 topic hz /conesnon-zero near the configured frame rateros2 topic echo /lidar/log --once(drop counters not climbing rapidly)/lidar/ground_filteredshows ground removed and cone-like returns remaining
- Confirm
/filter/twistis publishing. - Start
point_to_pixelwithsrc/point_to_pixel/config/params.yaml. - Confirm
/associated_colored_cones. For history debug, setpublish_pre_cone_history_debug=trueto also publish/colored_cones.
Typical viz set: /cones, /lidar/ground_filtered, /associated_colored_cones, camera images (with projection overlay when available).
Missing or sparse /cones
Section titled “Missing or sparse /cones”Classifier checks are useless until /cones is healthy.
| Check | Pass | Fail direction |
|---|---|---|
| LiDAR power / ethernet / port | packets arriving | free UDP 2368; check link |
ros2 topic hz /cones | steady | driver down or all points filtered |
/lidar/ground_filtered density | cone-like clusters remain | GnC thresholds or range cutoffs |
x/y/z/radius_cutoff | cones inside box | widen box (YAML values are meters) |
min_points / epsilon | clusters form | lower min_points; inspect DBSCAN |
| Correction | angles sane | load .dat for bags; PTC TCP 9347 live |
Wrong colors
Section titled “Wrong colors”- Verify positions on
/lidar/ground_filtered. - Compare
/colored_cones(pre-history) and/associated_colored_cones(post-history). - Systematic projection miss: matrices / calibration (physical calibration).
- Projection on cones but wrong class: YOLO class map, confidence, lighting; HSV ranges only on HSV builds.
- One camera wrong: that side’s matrix, undistort YAML, or right-camera 180° rotate.
- Correct at rest, wrong in motion:
/filter/twistorimu_to_lidar.
History / flicker
Section titled “History / flicker”Enable publish_pre_cone_history_debug. Pre-history flicker implicates projection or classification. Stable pre-history with unstable post-history implicates history.
On prod, history votes colors, associates tracks, and orders cones. It does not republish unseen cones across gaps. Gap-fill is on feature/perc/propagate_history. See cone history.
Latency and drops (/lidar/log)
Section titled “Latency and drops (/lidar/log)”Monitor /lidar/log during drive or replay.
| Symptom | Likely causes |
|---|---|
| Rising packet drops | CPU contention, ring overflow, UDP conflict, network |
| High processing time | Loose cutoffs (too many points through GnC/DBSCAN) |
| Sporadic empty frames | Sequence gaps, sync, correction |
Field names follow the built LidarLog.msg. Use ros2 interface show on the installed type.
Projection offset
Section titled “Projection offset”| Pattern | Likely cause |
|---|---|
| Constant offset while stopped | Extrinsics, wrong params.yaml, wrong camera YAML |
| Offset only when moving / yawing | Twist gap, empty image deque, imu_to_lidar |
| Distortion near image edges | Intrinsics or YAML size ≠ 1920×1200 |
Procedure: physical calibration. Extrinsic gather scripts subscribe to sensor_msgs/PointCloud2 on /lidar_points (vendor Hesai or bridge). The live cone driver publishes interfaces/msg/Points on /cones / /lidar/raw_points and does not satisfy that subscription.
Harness reference drift
Section titled “Harness reference drift”Available on feature/perc/bag-extractor only.
| Exit | Meaning |
|---|---|
| 0 | Pass |
| 1 | Metric or reference drift. Inspect run.json; re-run; update the reference only after intentional review. |
| 2 | Scenario or config error |
| 3 | Extraction, replay, or readiness failure (infrastructure) |
See regression harness.
