color cycle
You add streams, system auto assigns colorssession=plot output=none
session=plot output=none
speed plot
you can assign different axes to different time series, label them etcsession=robotdata output=none
Semantic search
Let’s find some plants!session=robotdata
session=robotdata
session=robotdata
skip session=robotdata
Which peaks are significant?
We got 15 peaks back, we ran a detector on all of them so we can start projecting into 3D but let’s say we want some sort of pre-filter of just globally significant peaks. we can see most peaks prominence sits around 0.02–0.03 and only a couple (0.067 at t=37s, 0.047 at t=240s) really stand out. We might want to auto detect those.significant() replaces that guesswork by thresholding on the distribution of prominences itself. Default outlier detection uses MAD (median absolute deviation)
Once we put the surviving peaks on the timeline we get two very obvious plants.
skip session=robotdata
Rule of thumb: keep a small absolute floor on peaks(prominence=...) to
reject shape-noise, then let significant() pick the statistical cutoff.
Semantic peak analysis
Let’s focus on those two peaks. load all images in the vicinity of a detection, We’ll also pull all lidar frames in their vicinity and reconstruct global maps for those areas.skip session=robotdata
3D Projection
skip session=robotdata output=none
TODO further steps
- These are 3D bounding boxes with associated pointclouds, render in rerun
- Some basic statistical outlier filters - we have many overlaping detections here and we can be pretty sure there are plants right of the robot, but unclear about left.
- Now that we have 3d locations in space, we can load all camera images observing detections in space (not just rely on radius around the embedding peak) see in how many of these images we actually detect an object. (another strategy for false positive filtering)
