Interactive extrinsic calibration tool for RGB camera, LiDAR, and event camera.
TriCalib provides a GUI-based workflow to compute the spatial transformations between three sensor modalities. Two calibration approaches are supported:
Pairwise calibration — solve each sensor pair independently:
- RGB camera ↔ LiDAR — via PnP (Perspective-n-Point)
- Event camera ↔ LiDAR — via PnP
- RGB camera ↔ Event camera — via essential matrix decomposition
Joint optimization — optimize all three modality pairs simultaneously via non-linear least-squares over reprojection errors across all pairs.
Key features:
- Interactive 2D/3D point correspondence selection (right-click in image and point cloud viewers)
- Real-time projection visualization with depth/intensity coloring
- Reprojection error reporting per modality pair
- Session save/load as JSON (full calibration state)
- Python 3.10 (recommended; 3.9 and 3.12+ are not supported)
- Git with Git LFS
This repository uses Git LFS for large binary assets (point clouds, images in examples/).
# Install Git LFS binary (once per machine)
# macOS: brew install git-lfs
# Linux: sudo apt install git-lfs (or equivalent)
# Windows: download installer from https://git-lfs.com
git lfs install
# Clone the repository
git clone git@github.com:dfki-av/Tricalib.git
cd tricalib
# Pull LFS objects
git lfs pull
# Install in editable mode
pip install -e .Launch the GUI:
python -m tricalibWorkflow:
- Load sensor data — RGB image, event image, LiDAR
.pcdfile, and camera intrinsics JSON - Select corresponding 3D/2D point pairs across modalities using the point cloud and image viewers
- Run calibration — either pairwise (PnP or essential matrix per sensor pair) or joint optimization (all pairs simultaneously)
- Inspect projections in the viewer windows and check reprojection errors
- Save the calibration session to JSON for later use
| File | Format | Description |
|---|---|---|
| RGB image | .png / .jpg |
Frame from the RGB camera |
| Event image | .png |
Accumulated event frame |
| Point cloud | .pcd |
LiDAR scan (Open3D compatible) |
| Intrinsics | .json |
Camera intrinsic matrices and distortion coefficients for RGB and event cameras |
See examples/data/dfki/dfki_intrinsics.json for the expected intrinsics format.
Two example datasets are included under examples/data/:
dfki/— DFKI dataset with pre-labeled point correspondences and a saved sessiondsec/— Two sequences from the DSEC dataset (000044/,000058/)
To try the DFKI example, load the files from examples/data/dfki/ and import points_000236.json as correspondences, or load the full saved state from session.json.
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
Rahul Jakkamsetty — DFKI (German Research Center for Artificial Intelligence)