You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Setup cell: replace the stale git-clone + b3867be pin instructions
with `pip install 'mosaicolabs>=0.4.0,<0.5' matplotlib pandas`,
matching the Dockerfile + README bump in 4012fdf.
- Fleet comparison cell: pick the two sequences that are actually
stationary instead of taking `lidar_sequences[0]` and `[1]`. The
previous alphabetical selection silently paired robot-01 (noise)
with robot-02 (noise under rotation), so the "noise vs drift"
comparison promised in the markdown collapsed to noise vs noise.
Now we intersect `lidar_sequences` with the stationary result
from §6 so the plot compares robot-01 (noise) against robot-03
(drift) as documented.
"The `LaserScanAdapter` we need merged into mosaico-labs/mosaico via PR #368 on 2026-04-13 (commit `b3867be`). The subsequent `mosaicolabs==0.3.2` wheel on PyPI is missing the `futures` subpackage, so until a fixed release ships install from the merged-PR commit directly:\n",
46
+
"Install the SDK plus the two plotting deps used below:\n",
"If you skipped installing locally and only have the docker stack, you can still execute the cells inside the bridge container with `docker compose exec bridge python -c '...'`."
@@ -279,7 +276,7 @@
279
276
"\n",
280
277
"Mosaico's `QueryOntologyCatalog` supports compound expressions with implicit AND, so we can push all six conditions into one server-side query.\n",
281
278
"\n",
282
-
"In the fleet variant this query is not cosmetic: the fleet injector rotates robot-02 (IMU `drift_rate=0.3 rad/s`) while triggering the same LIDAR noise as robot-01, so robot-02's `angular_velocity.z` sits around 0.3 rad/s. The `between(-0.1, 0.1)` predicate excludes that sequence, leaving only the two stationary LIDAR faults for downstream content comparison (§7). Step 2 doing real work, not just showing the SDK surface."
279
+
"In the fleet variant this query is not cosmetic: the fleet injector rotates robot-02 (IMU `drift_rate=0.3 rad/s`) while triggering the same LIDAR noise as robot-01, so robot-02's `angular_velocity.z` sits around 0.3 rad/s. The `between(-0.1, 0.1)` predicate excludes that sequence, leaving only the two stationary LIDAR faults for downstream content comparison (\u00a77). Step 2 doing real work, not just showing the SDK surface."
283
280
]
284
281
},
285
282
{
@@ -325,7 +322,13 @@
325
322
"source": [
326
323
"from pathlib import Path\n",
327
324
"\n",
328
-
"if len(lidar_sequences) >= 2:\n",
325
+
"# Use the stationary sequences from \u00a76 - the IMU query already excluded robot-02\n",
326
+
"# (which was rotating during its fault). The two remaining stationary LIDAR\n",
327
+
"# sequences are robot-01 (noise injection) and robot-03 (drift injection).\n",
328
+
"stationary_names = {item.sequence.name for item in stationary}\n",
329
+
"stationary_lidar = [name for name in lidar_sequences if name in stationary_names]\n",
0 commit comments