Calibrate, Refine, and Sync

This article describes Phase 2 of a calibration. Calibrate solves each camera's pose, Refine improves it using the extra scenes you captured, and Sync pushes the result to Flowbit Capture.

Before you start

Check Capture the space to confirm you have enough phone photos and a ★ calibration frame. Refine also needs two or more scenes, and Sync needs Flowbit Capture running on this PC with the cameras streaming.

Run Calibrate

  1. Set Options if you need them: the Reference camera, skip scale, and no GPU.

    With the board chosen on card A, Reference reads Board (marker) and the board wins. Advanced COLMAP tuning lives in ⚙ Settings → Calibration.

  2. Select Calibrate, and follow the progress bar and the expandable log.

  3. Read the per-camera table. It shows registered ✓ or ✗, position, 3D points, and scale dev.

  4. Drag to orbit the 3D view and check that no camera sits at a wild angle.

  5. Press ⇄ Sync to capture backend.

Read the calibration result

Column

What it tells you

Investigate when

registered

Whether the camera was placed in the world

✗

position

Where the camera ended up

It disagrees with where the camera physically is

3D points

How much evidence the solver had for this camera

TODO(software): threshold

scale dev

How consistent the metric scale is

TODO(software): threshold

NOTE

If a camera did not register, or its 3D points or scale dev is flagged, add close-up phone photos from that camera's viewpoint and calibrate again.

Run Refine

  1. Check the input summary. Refine uses the scenes you captured.

  2. Adjust the settings if you need to.

    Tick show all for the advanced parameters. Scene-grouping controls live in ⚙ Settings → Refine defaults.

  3. Select Refine.

Read the refine result

The result gives you:

  • Per-pair before and after metrics.

  • The size and shape split, which tells you how the rig moved.

  • The per-camera depth table, showing how repeatable each camera's own depth is and how much of the pair residual the sensors alone account for.

  • How many of your scenes the answer actually rests on, when that figure appears.

NOTE

Refine never replaces a good calibration with a worse one.

If the checks do not pass, the calibration you already have is kept. The checks go beyond asking whether the numbers improved. A rig that came back resized, turned, or changed in shape is refused even when every pair got better, because those are exactly the failures that better pair numbers reward.

If Refine kept the coarse result, or the button is greyed out, see Calibration troubleshooting.

Sync to Flowbit Capture

  1. Select ⇄ Sync to capture backend. If you ran Refine, select ⇄ Sync refined to capture backend instead.

  2. Switch to Flowbit Capture and select Reset view, to re-frame on the space, which has just moved.

Verify that the clouds fused into one space

  1. Check that the sync chip in Flowbit Calibration reads synced · persists after restart.

    NOTE

    No cameras applied means the device IDs in the result do not match what Flowbit Capture is streaming.

    Check Devices in Install and Run Flowbit Capture - Configure Flowbit Capture.

  2. Check that the clouds in Flowbit Capture have snapped into one space, with walls meeting walls and one floor. This updates on the next frame, with no restart.

  3. Check that the amber "no calibration file" warning is replaced by the path to the calibration file in use.

For comparison, this is what an uncalibrated rig looks like. Every camera draws from the same origin, so the space comes out as one pile:

If the space looks doubled or skewed

  1. Switch Extrinsics off in Flowbit Capture. Every camera then draws at the origin.

  2. Compare the two views. If the clouds look right there and wrong when fused, the calibration is at fault. If they look wrong in both, the depth is.

  3. Add phone photos covering the offending camera's viewpoint and calibrate again.

If Sync reports success but the space stays a pile, Calibration File in config\flowbit-capture.json names a different file than the one Flowbit Calibration wrote. The result was saved but never applied.

Save and load a calibration result

To save a copy instead of syncing, select ⬇ Download result beside either Sync button.

To load one back in, rename it to exactly calibration_result.json, put it in a folder of its own, and use Calibrate's 📁 Load a result folder….

Hand off to the SDK and Unity Plugin

Your rig is now calibrated. calibration_result.json lives in Flowbit Capture's config, and the Sensor → World extrinsics it holds are the same ones your application needs.

RESOLVE(software):

State the exact mechanism. Does the SDK read calibration_result.json directly, or must each matrix be copied into config/<device-id>/sensor_config.json under "Sensor to World Extrinsic"? The SDK documentation currently tells developers to compute and enter these matrices by hand, with no mention of Flowbit Calibration. See docs-restructure-plan/PLAN.md §4, gap 4.

You are done calibrating. Now you can build your application with the Flowbit Server SDK or the Flowbit Unity Plugin.

On this page

Let’s Build the Future of Physical AI Together

Let’s Build the Future of Physical AI Together

Let’s Build the Future of Physical AI Together

© 2026

Determ Technology · All rights reserved

contact@determtech.com