Skip to content

v1.6.0 — HD map, performance overhaul, carpet detection

Choose a tag to compare

@sytchi sytchi released this 25 Jul 11:30

High-resolution live map, a performance overhaul that removes the event-loop stalls, and carpet detection.

Highlights

  • HD map camera camera.*_map_hd: upscaled grid with anti-aliased vector overlays, live calibration_points for xiaomi-vacuum-map-card (calibration_source: {camera: true}), and a map_scale option (2–6).
  • Live overlays: robot-recorded trail, the exact vacuumed strip, planned trajectory, furniture (with rotation), and per-overlay switches you can toggle from the UI.
  • Lidar cell marks with carpet detection: cells the robot flags as carpet render as a light tint above the floor (like the Narwal app); wall-adjacent cells take the wall shade; free-standing detections are minimally darker. Carpet persists across sessions; the noisier buffers reset each run.

⚡ Performance

The map camera used to redraw every accumulated swath and lidar cell on every frame — an O(total) cost that grew through a clean and, holding the GIL, stalled Home Assistant's event loop up to ~3.9 s on a large map.

Swath and lidar are now painted once onto persistent RGBA layers; only new cells are drawn per frame (O(new)). Measured under a full live clean: CPU flat at 4–19 %, render latency ≤360 ms, zero multi-second stalls.

⚠️ Deprecated (removed in 2.0.0)

  • The map-image pixel contract of narwal.clean_zone
  • The legacy 1:1 camera.*_map entity

Both will be removed in 2.0.0, which defaults to world coordinates. Migrate your map card to the HD camera with calibration_source: {camera: true}.

See CHANGELOG.md for the full list.