Skip to main content

Unsupervised anomaly detection with Anomalib in Python

· 10 min read
Anthony Cavin
Co-founder & CEO - Data, ML & Robotics Systems

Anomaly detection pipeline: a camera feeds Anomalib, which scores each frame, and ReductStore keeps every frame with its anomaly labels

Anomalib makes it relatively easy to train an anomaly detection model on your own images. But once you want to use it in production, you also need to handle inference, evaluate predictions, and keep track of the images that triggered them.

In this tutorial, we'll use anomalib to train and run an anomaly detection model in Python. Then we'll look at how to store images alongside their anomaly scores, so you can review detections and use them for future training.

Record ROS 1 Topics in ReductStore with Reduct Bridge

· 8 min read
Anthony Cavin
Co-founder & CEO - Data, ML & Robotics Systems

A ROS 1 master publishes camera and IMU topics to the Reduct Bridge ros input, which writes them to two ReductStore entries on one shared time axis

ROS 1 Noetic reached end of life in May 2025, but a lot of robots still run on it. Recording data from them usually means rosbag files, or a custom recording node that you have to maintain yourself.

Reduct Bridge is another way to do it. It subscribes to topics on a ROS 1 master and stores each message it receives in ReductStore as a record, so you can query by time and by label later. It can also use the timestamp from the message header instead of the time the message arrived.

In this tutorial we'll record a camera topic and an IMU topic, set a retention limit, and read the data back with the ReductStore CLI and the Python SDK.

Capture Output from Legacy Equipment with the Reduct Bridge Shell Input

· 9 min read
Alexey Timin
Co-founder & CTO - Database & Systems Engineering

A legacy machine sends command output through the Reduct Bridge shell input to a time-indexed ReductStore entry

Plenty of equipment on the shop floor will never speak MQTT or OPC-UA. It predates both. What it has is a command line: a vendor tool that prints status, a diagnostic command on a serial console, or a script the previous engineer left behind. The data exists. There is just no protocol to integrate.

Reduct Bridge has a shell input for exactly this case. You point it at a command, set an interval, and the bridge runs it on schedule. Each line the command prints becomes a time-indexed record in ReductStore. Labels come from regex capture groups in the output or from static key-value pairs in the config. Wrap whatever the vendor tool prints, put it on an interval, label it, and it lands time-indexed beside everything else.

This post walks through capturing telemetry from a legacy test chamber that only exposes a chamber-status command.