Agent handoff 2 / 4 self-contained — no vault access needed

Implement vertical-marking detection (delineator posts & signs) — new repo

2026-07-10 · for a fresh implementation agent on a machine with repo + Nexus access, without the knowledge vault · all research findings are inlined below

Continuation target: new repo implementing geometric pole-like object extraction for highway MLS segments (delineator/guide posts, sign posts + plates), plus a small eigenfeature type classifier. Literature bar: 98% precision/recall with zero training labels on 28 km of rural highway. Reuse iolabs-* Nexus packages; no deep learning in v1.

Project context (inlined)

Research findings (inlined — adversarially fact-checked 2026-07-07)

Confirmed (3-0 votes unless noted):
Refuted claims — do NOT use: Always combine several features; single-feature separators do not survive scrutiny.
Open: delineator posts are small (~1 m tall, thin) — check per-object point counts at your scan ranges before fixing voxel/cluster sizes; German delineator spacing (typically 50 m) is a useful QC prior; the 96% type figure must be re-earned on highway data with a locally trained SVM.

Nexus packages to reuse

Private index: https://nexus.iolabs.ch/repository/pypi-private/simple (copy the [tool.uv.sources]/index block from 3dai.lanefinder's pyproject.toml). Update flow: uv lock --upgrade-package <pkg> && uv sync. Flat naming: iolabs-point-cloud-* → import iolabs_point_cloud_*.

Package (Nexus)Use for
iolabs-point-cloud-segmentation-trajectorySegment clouds + planes (input)
iolabs-point-cloud-filtering-surfaceGround/road removal, height-above-road
iolabs-point-cloud-filtering-clustersDBSCAN clustering of off-ground points
iolabs-geometry-geometryAxis distances, bounding boxes, cylinder-axis math
iolabs-point-cloud-modelling-export · iolabs-geometry-visualization · iolabs-common · io_orchestrator.ray_stepXML out, QC overlays, utils, pipeline step wrapper

Plus scikit-learn (SVM-RBF) for the type classifier — persist the model + training set versioned in-repo. Suggested repo/package: 3dai.iolabs.pointcloud.verticalsigns / iolabs-point-cloud-detection-verticalsignsconfirm remote/org with Miro.

Algorithm to implement

  1. Ground removal: subtract road surface (surface package outputs) and compute height-above-ground for the roadside strip; work in ~50 m station chunks.
  2. Candidate isolation: project off-ground points to a 2D grid / ~10 cm voxels; keep cells with tall occupied vertical extent and small footprint (2D isolation + 3D vertical continuity).
  3. Cluster & validate: DBSCAN; per cluster compute verticality, linearity, radius (optional RANSAC cylinder fit), height, and surrounding free space; dimensional validation rejects fences/walls.
  4. Plates vs posts: planar-patch search on the upper part (step in findings above).
  5. Type classifier: SVM-RBF on the 4 eigen-features; train on ~100–150 hand-labelled objects from the sample segments.
  6. Export: per-object XML (axis station + lateral offset, height, type, confidence) via modelling-export, mirroring the lines schema.

Verification

References (inlined)

  1. Gouda, Shalkamy, Li & El-Basyouny (2022). Fully Automated Light-Pole Detection… Transp. Res. Record 2676(7). DOI 10.1177/03611981221082531
  2. El-Halawany & Lichti (2013). Detecting road poles from MLS data. GIScience & RS 50(6). DOI 10.1080/15481603.2013.866815
  3. Ordóñez, Cabo & Sanz-Ablanedo (2017). Detection and Classification of Pole-Like Objects… Sensors 17(7):1465. mdpi.com
  4. Dong, Chen & Stachniss (2021). Online Range-Image-based Pole Extractor. arXiv:2108.08621 · code

Public research briefs: greenery & posts brief · all 30 sources.

Conventions