01

Data-capture demonstrations

GenRobot DAS EGO · Data captureRobotic arm motion and data capture with GenRobot DAS EGO.
RoboCap · Data captureRobotic arm motion and data capture with RoboCap.
GenRobot DAS EGO / ROBOCAP · CALIBRATION APPROACH AND RESULTSPROJECT REPORT

02 / Motion & control

Multi-camera & IMU
Calibration report

An EDUlite A3 robotic arm provides motion across multiple poses, controlled by an NVIDIA Jetson Orin Nano. A four-face ChArUco target supports independent calibration and validation of GenRobot DAS EGO and RoboCap.

EDUlite A3Jetson Orin NanoSix cameras + IMU
Explore the approach
6 arm joints + 1 gripperProduct image
Arm configuration
6 arm joints + L7 gripper
Actuator configuration
RS00 × 3 / EL05 or RS05 × 4
Control interface
CAN 2.0 extended frames · 1 Mbps
Specified power supply
24 V / 48 V DC

Project configuration

Jetson Orin Nano
Robotic arm controller

The Jetson Orin Nano controls the arm and device mount during data capture. The motion covers different positions, tilt angles, and variable-rate rotations about all three axes, providing joint constraints for the cameras and IMU.

Orin Nano
Controller
EDUlite A3
Motion execution
Device + mount
Multi-pose capture

Arm specifications: Official RobStride project; Product image: AIFITLAB product page. The controller model reflects the project configuration.

Device mounting fixtures

Project photographs · Click to enlarge
Mounting fixture · View 1Fixtures used to attach the devices to the robotic arm.
Mounting fixture · View 2A second view of the supports, connections, and clamping arrangement.
03

Four-face ChArUco target

Coded markers identify the target, while checkerboard corners provide precise image coordinates. Four faces extend visibility and provide geometric constraints for wide-angle cameras, shared views across cameras, and motion in multiple directions.

Assembly sketch and individual face patterns

Click a drawing to enlarge
Four-face target · Assembly sketchThree vertical faces and a bottom face form the calibration space, using aluminum honeycomb panels.
FACE0 · FRONTMarker ID: 0–111
FACE1 · LEFTMarker ID: 200–311
FACE2 · RIGHTMarker ID: 400–511
FACE3 · BOTTOMMarker ID: 600–711
Substrate material
Aluminum honeycomb
Total weight
Approx. 61 kg
Overall dimensions
1008 × 1004 × 1012 mm
Pattern accuracy
0.005 mm
Panel alignment error
≤ 0.3 mm
Surface flatness
0.2 mm
FRONT / LEFT / RIGHT / BOTTOMThe assembled target combines a bottom face with three vertical faces to form the calibration space.

Target specification

Coded identification + subpixel corners

15 × 15Checkerboard squares per face
60 mmSquare side length
45 mmArUco marker side length
784Internal corners across all four faces

Dictionary: DICT_5X5_1000. Each face has 112 markers and 196 internal corners. The pattern measures 900 × 900 mm on a nominal 1000 × 1000 mm panel.

Each face uses a separate ID range so that partial occlusion does not cause face ambiguity.
Target faceMarker IDGlobal corner IDsGeometry treatment
FRONT0–1110–195Fixed as the world reference face
LEFT200–311200–395Pose relative to FRONT is optimized
RIGHT400–511400–595Pose relative to FRONT is optimized
BOTTOM600–711600–795Pose relative to FRONT is optimized
04

One trajectory explains vision and inertial measurements

Estimate lens parameters, sensor mounting transforms, and time offsets that make the target observations from all six cameras consistent with the IMU measurements.

Continuous-time visual–inertial calibration

Corner reprojection residuals + weighted IMU residuals + geometric priors

Continuous-time trajectory · Ceres nonlinear optimization · Calibrate on A / validate on B
01 / OBSERVE

Decode and detect corners

Preserve source timestamps, identify ArUco markers, and extract subpixel ChArUco corners on each face.

02 / INITIALIZE

Initialize geometry

Initialize lens parameters, the rigid camera chain, and the geometry of the four target faces.

03 / OPTIMIZE

Joint visual–inertial optimization

Continuous-time splines jointly fit image and inertial measurements, including acceleration due to lever-arm effects.

04 / REFINE

Refine lens and timing parameters

Use a KB4 + p1/p2 lens model to estimate extrinsics, time offsets, and the applicable readout parameters.

05 / VALIDATE

Validate on recording B

Freeze all calibration parameters and assess per-camera errors, cross-camera errors, independent loop closure, and pose coverage.

A / CALIBRATION

Estimate static calibration parameters from A

Estimate camera intrinsics and distortion, camera and IMU extrinsics, timing parameters, and target geometry. Quality filtering and robust losses reduce the influence of outliers.

Lens model: fx, fy, cx, cy, k1…k4, p1, and p2: 10 parameters in total.

B / INDEPENDENT RECORDING

Validate a different motion with fixed parameters

Only the trajectory, recording-specific nuisance biases, and gravity direction are fitted to B. Camera calibration, IMU mounting transforms, and target geometry remain fixed.

Results use all detected corners in B under the prescribed frame-sampling schedule, with no reprojection-error rejection and no per-frame corner cap.

Device-specific settingGenRobot DAS EGORoboCap
InputMCAP: six video streams + recorded IMU streamSix MP4 videos + left/right IMU SQLite databases
Image size / recorded IMU streams1600 × 1300 / one recorded stream1920 × 1080 / two streams, left and right
Lens initializationManufacturer DS parameters from recording AFisheye initialization from images in recording A
Timing modelConstant time offsetConstant offset + signed effective vertical readout time
Shared modelKB4 + p1/p2; rigid camera chain; continuous-time visual–inertial optimization; validation using independent A/B recordings
Camera intrinsics / distortionCamera–camera extrinsicsCamera–IMU extrinsicsTime offsets / effective readoutFour-face target geometry

The project implements its own Ceres-based backend, drawing on continuous-time modeling approaches used in Kalibr and Basalt. GenRobot DAS EGO and RoboCap are calibrated separately; this report does not include inter-device extrinsics or clock synchronization. The trajectory for B is fitted to its observations, so a low pixel error alone does not establish absolute extrinsic accuracy. Independent loop-closure checks use camera-pair transforms re-estimated from shared observations in B.

05

Original limits

Calibration results

Two GenRobot DAS EGO runs (A→B and B→A, calibration → validation) and 19 RoboCap runs in one consolidated report.

GenRobot DAS EGO · 2 calibration runs

2 / 2Measured results for A→B and B→A

RoboCap · 19 calibration runs

Results are reassessed using the limits in this report. Independent repeatability remains unmeasured. Counts refer to calibration runs, not the number of devices.

GenRobot DAS EGO · Both calibration runs pass

A→B / B→A measured results
Calibration → validationA RMS · pxB RMS · pxWorst camera median · pxLoop translation · mmLoop rotation · °Original limits

RoboCap · 19 calibration runs

Compare calibration runs

All measured criteria pass under these limitsOne or more criteria fail under these limits

Select a run to view per-camera results and acceptance details
Group / A–B assignmentA RMS
px
B RMS
px
Worst camera
median · px
Worst camera-pair
median · px
Loop translation
mm
Loop rotation
°
Original limits
06

Suggested relaxed RoboCap limits

The results that follow reassess the measurements using the proposed relaxed RoboCap limits. The original configurations and acceptance files retain their original limits; these results do not indicate that the proposal has been approved. Camera-class median limits apply to both the full recording and the near/far distance bands. All GenRobot DAS EGO limits remain unchanged.

MetricOriginal limitsRelaxed RoboCap limits
Main-camera median: left / right≤ 0.50 px≤ 0.75 px
Eye-camera median≤ 0.50 px≤ 0.70 px
Front-camera median≤ 0.50 px≤ 0.60 px
Camera-pair median, both directions≤ 1.50 px≤ 1.70 px
Independent loop-closure translation error≤ 1.00 mm≤ 1.65 mm
Independent loop-closure rotation error≤ 0.20°Unchanged
Per-camera P95 / image-edge P95≤ 2.00 / 5.00 pxUnchanged
Fraction of corners with error ≤ 3 px≥ 95%Unchanged
Camera-pair P95 / shared-view poses≤ 5.00 px / ≥ 10 posesUnchanged
Repeatability: rotation / translation / baseline change≤ 0.50° / 2.5 mm / 2%Unchanged; not measured in these result files

All other requirements remain unchanged, including pose coverage, tilt, image-grid coverage, observation-graph connectivity, and distance-band sample counts. The near and far bands are 0.3–0.65 m and 0.65–1.0 m, respectively, with at least 200 corners in each band.

07

Suggested relaxed RoboCap limits

Calibration results

RoboCap · 19 calibration runs

RoboCap · 19 calibration runs

Compare calibration runs

All measured criteria pass under these limitsOne or more criteria fail under these limits

Select a run to view per-camera results and acceptance details
Group / A–B assignmentA RMS
px
B RMS
px
Worst camera
median · px
Worst camera-pair
median · px
Loop translation
mm
Loop rotation
°
Original limitsRelaxed limits
Scope, source data, and downloads

Included runs

GenRobot DAS EGO includes two measured runs with the calibration and validation recordings exchanged. RoboCap includes 19 runs covering both A/B assignments and pairs tested in one assignment only. All RoboCap runs use the same set of limits.

Reassessment method

Each run is checked against its site_acceptance.json, metrics.json, and run_state.json files. Original failures are verified before reassessment using the proposed limits. Per-camera values retain the precision in metrics.json; camera-pair, loop, and distance-band values use the precision stored in the acceptance files.

Images, videos, data, and interactive code are embedded for offline viewing and sharing as a single file. External source links require an internet connection.

Calibration detail

Project image · Press Esc or select Close to return