QA-ing robot telemetry before a field trial
Sync CSV sensor logs with live REST telemetry, flag outliers and dropouts, and score every robot pass/fail before the field trial.
Drop a folder of LAS/LAZ sweeps on the canvas, chain registration, voxel downsampling, and ground removal, then bake a 10 cm occupancy grid. You get a scrubbable 3D map and a nav-ready GeoTIFF from one live pipeline. When the robot rescans the floor, drop the new files and every export rebuilds itself.
Every warehouse robot team has the same folder somewhere: register.py, downsample.py, make_grid.py, and a README nobody trusts. The map got rebuilt whenever someone remembered, and when racking moved, the nav stack found out the hard way. The pipeline below replaced that folder in an afternoon — and because every node is live, the map now rebuilds itself whenever new sweeps land.
About 4 GB of LAS/LAZ sweeps from a mobile robot — ours is a scan cart doing a slow lap of a 6,000 m² floor — with odometry poses embedded or sitting in a sidecar CSV. No PDAL, no Open3D, no conda environment that only builds on one laptop. If you don't have scans handy, the sample warehouse dataset bundled with LSD runs the whole walkthrough end to end.
This is the part that pays rent. Racking moved in aisle 9 last month; the robot re-scanned overnight, we dropped the new sweeps onto the same canvas, and the cached intermediates downstream recomputed on their own. The GeoTIFF and glTF exports rebuilt in under two minutes, and the nav team pulled the fresh grid without a single Slack message.
Drag all 38 .laz files from the robot's scan folder onto the canvas. LSD stacks them into a single @load node and previews the raw cloud — 212 million points, colored by intensity. Open the inspector to confirm each sweep's odometry pose came along for the ride.
Add a @shape registration node and feed it the embedded odometry poses. Toggle ICP refinement and watch the doubled-up aisle walls snap into single crisp planes in the preview. The registered cloud is a cached intermediate, so nothing downstream ever re-runs the alignment.
Chain a voxel downsample node and drag the cell size to 5 cm. The preview thins live — 212 million points fall to 9 million with every rack leg still standing. Everything downstream now recomputes in seconds instead of minutes.
Add a ground-removal node set to plane fit with a 4 cm tolerance. The slab vanishes while pallet feet, floor tape, and low debris survive as obstacles. What's left is exactly the geometry the robot can hit.
Drop a rasterize node and set 10 cm cells over a 0.2–1.8 m height band. Points inside the band mark cells occupied; everything scanned but empty becomes free space. The grid renders beneath the 3D cloud so you can check each rack against its footprint.
Wire the grid into a @deliver node set to GeoTIFF and send the fused cloud out as glTF for the sim team. Hit export and both files land in the nav stack's map folder. When new sweeps arrive, the same canvas rebuilds both exports untouched.
Stack 38 mobile-robot sweeps into one node with per-sweep odometry poses intact.
ICP-register the sweeps into one cloud, voxel-downsample it, strip the ground, and rasterize the occupancy grid.
Scrub the fused map in the 3D viewer and export the grid and mesh for the nav stack.
Sync CSV sensor logs with live REST telemetry, flag outliers and dropouts, and score every robot pass/fail before the field trial.
Model post-closure pit-lake rebound in LSD — krige borehole heads against a NetCDF recharge grid and deliver a live 3D drawdown model plus report.
Validate 63 LAS drillhole logs against collar surveys, krige a lithology block model, and export one glTF the whole team can open.
Build churn features from Postgres events and Parquet snapshots, catch a leaky window visually, and score the holdout with ONNX — on one canvas.
Score a million-row Parquet batch with an ONNX model — training-identical normalization, live previews, scored Parquet and metrics out.
Turn folders of line-scan images and a label CSV into an ONNX defect-segmentation pipeline with overlay QA and a per-coil defect report.
Turn GeoTIFF orthomosaics into a stitched land-cover raster with per-class area stats, using tiled ONNX segmentation you can preview at every step.
Align CMM measurement points to a nominal CAD mesh, compute point-to-surface deviation, and export a color-mapped glTF model with a pass/fail report.
Resample a week of machine sensor logs, baseline each tag, and flag drift and step changes on a live dashboard with a ranked maintenance shortlist.
Join a live meter feed to 85 campus building meshes, aggregate it hourly, and paint a 3D heat-map that repaints as energy use shifts, plus a weekly report.
Calibrate live strain telemetry, place gauges on the bridge mesh from a CSV, and color the structure by stress live — plus an alert log on every exceedance.
Turn a CT DICOM series into an ONNX organ segmentation you QA in 3D, then export an annotated volume and a per-organ volumetrics report.
Drag all 38 .laz files from the robot's scan folder onto the canvas. LSD stacks them into a single @load node and previews the raw cloud — 212 million points, colored by intensity. Open the inspector to confirm each sweep's odometry pose came along for the ride.
Add a @shape registration node and feed it the embedded odometry poses. Toggle ICP refinement and watch the doubled-up aisle walls snap into single crisp planes in the preview. The registered cloud is a cached intermediate, so nothing downstream ever re-runs the alignment.
Drop a rasterize node and set 10 cm cells over a 0.2–1.8 m height band. Points inside the band mark cells occupied; everything scanned but empty becomes free space. The grid renders beneath the 3D cloud so you can check each rack against its footprint.
Wire the grid into a @deliver node set to GeoTIFF and send the fused cloud out as glTF for the sim team. Hit export and both files land in the nav stack's map folder. When new sweeps arrive, the same canvas rebuilds both exports untouched.