Metriplane v0.3.0: turn recorded workcell incidents into repeatable regression tests

Hi everyone,

I’ve been building Metriplane, an open-source tool for turning recorded robotics and manufacturing state into an inspectable incident and a repeatable regression test.

I just finished a new short demo that shows the use case much more clearly:

A pallet is ready at an outfeed station. An AGV is expected to arrive within 60 seconds. It does not.

The PLC knows the pallet is ready. The robot or ROS 2 side knows where the AGV is. Metriplane evaluates that process condition across the recorded state and produces:

  • an event timeline and incident report
  • a verified evidence bundle
  • a regression test that replays the recorded failure and checks that it is still detected

Demo video:

You can also try Metriplane 0.3.0 locally:

python -m pip install "metriplane==0.3.0"

metriplane demo --open

The packaged demo is offline after installation and does not require a robot, camera, GPU, Docker or ROS installation.

The external-source work has also moved forward. There are now bounded reproducible paths for ManiSkill and robomimic recordings using the same downstream incident and regression engine.

I also added a small Source Adapter SDK and a deliberately bounded ROS 2 / MCAP + TF2 format-engineering proof. The current ROS 2/MCAP example is synthetic, so I’m not claiming generic ROS 2 or rosbag compatibility yet. The next important step is evaluating Metriplane on independently supplied or independently selected robotics/workcell traces.

Metriplane is also source-indexed for ROS 2 Jazzy through rosdistro. That indexing does not imply that an apt binary package is available.

I’m especially interested in feedback from people working with ROS 2, simulation, robot evaluation, manufacturing automation, commissioning, or AMR/AGV systems.

If you have a bounded public, synthetic or non-confidential scenario where something was expected to happen at a particular place or within a particular time window, I’d be interested in seeing whether it maps cleanly to this workflow. Negative results and unsupported cases are useful too.

GitHub:

Reproduction / feedback report: