- Published on
Open Sweep LiDAR — ICP con webcam no alcanza para los ojos de la estacion
- Authors

- Name
- Mateo Londoño Toro
La estacion BioMotion Capture Station necesita mas que un celular bien montado. Necesita ojos espaciales: saber donde esta el suelo, el volumen de captura y el entorno. En paralelo al hardware mecanico, estoy construyendo open-sweep-lidar: un escanner 3D por barrido de un eje, con ports plug-in para que manana el sensor cambie sin reescribir el ensamblador.
Esta nota documenta un experimento real de hoy: webcam + profundidad monocular + yaw asumido + ICP. Spoiler: el software midio bien. El mapa no sirvio.
Que intentaba
Flujo Fase 0:
webcam → depth ONNX → proyectar con yaw seed → ICP vs mapa → append PLY
La idea era la de la literatura de turntable: el angulo nominal es solo semilla; ICP alinea el solape. Sin encoder todavia, y sin ToF metrico.
Evidencia 1 — el abanico
Con Auto-acumular y step_deg=8, el preview mostro ~60k puntos y ~20 poses. Visualmente: petals (abanico de arcos por pose), no una habitacion.

Eso es exactamente el fallo que describe la spec del live map: si el giro fisico no coincide con el seed (o la depth es pobre), las capas no forman el cuarto.
Evidencia 2 — ICP si corre
Corrida controlada (Auto OFF, Open3D instalado):
[Open3D OK]
#000 yaw= 0.0° + 19200 pts total= 19200 [ancla]
#001 yaw= 8.0° + 19200 pts total= 38400 icp=0.865 rmse=0.0194
#002 yaw= 16.0° + 19200 pts total= 57600 icp=0.304 rmse=0.0255
ICP rechazado (fitness=0.064 < 0.3). Gira mas despacio / mas solape.
Lectura:
| Pose | Fitness | Que dice |
|---|---|---|
| #001 | 0.865 | ICP engancha fuerte |
| #002 | 0.304 | Justo sobre el umbral |
| siguiente | 0.064 rechazado | No corrompe el mapa — comportamiento correcto |
Gate cuantitativo: pasa. Gate de producto (mapa reconocible): todavia no.
Evidencia 3 — el PLY de 3 poses
Export con poses=3 / 57 600 puntos. Vista cenital y lateral:

Se ve un abanico del FOV hacia adelante, doble punta cerca del origen y una "pared" gruesa/ruidosa. No es una esquina de habitacion. Depth monocular + residual de alineacion no alcanzan para ojos de estacion.
Decision: Camino A (hardware)
Evaluamos foundation models (DUSt3R, CUT3R, LingBot-Map, etc.) como posible corrector de pose. Conclusion corta:
- varios son NC (no comerciales) o exigen GPU grande
- LingBot-Map (Apache, streaming ~20 FPS claim) queda en reserva
- el liston de BioMotion no se cumple tuneando mas ICP sobre webcam
Camino elegido: profundidad metrica de sensor + encoder 1-DoF, mismo contrato DepthSensor / YawSource / assemble.py.
SKU pedido hoy: VL53L8CX 8×8 ToF (breakout I2C/SPI). Encaja con el adapter 8×8 y el camino ESP-IDF + ULD ya documentado en el repo.

Como encaja con BioMotion
En el roadmap de la Capture Station, V3 es montaje de profundidad (RealSense u equivalente). Open Sweep no reemplaza la mecanica: aporta el pipeline de nube (proyeccion, yaw, export). La estacion aporta el montaje estable. Mismos ojos, dos repos, una interfaz.
BioMotion V3 (montaje) + open-sweep (ports + assemble) → mapa metrico del volumen de captura
Proximos pasos publicos
- Llega el VL53L8CX → bring-up y primer
DepthFrameconmetric=True - Encoder de yaw (ADR-001) — sin el, el seed sigue siendo fragil
- Mapa de esquina reconocible como criterio de aceptacion (no solo fitness ICP)
Serie relacionada: inicio BioMotion · producto antes del CAD.
Si queres el detalle tecnico de los foundation models descartados (licencias, streaming, latencia vs tick de 0.55 s), esta en el repo open-sweep-lidar bajo docs/referencias/eval-3d-foundation-models.md.