mrcal 2.5 is out: the release notes. Once again, this is mostly a bug-fix release en route to the big new features coming in 3.0.
One cool thing is that these tools have now matured enough to no longer be considered experimental. They have been used with great success in lots of contexts across many different projects and organizations. Some highlights:
- I've calibrated extremely wide lenses
- and extremely narrow lenses
- and joint systems containing many different kinds of lenses
- with lots of cameras at the same time. The biggest single joint calibration I've done today had 10 cameras, but I'll almost certainly encounter bigger systems in the future
- mrcal has been used to process both visible and thermal cameras
- The new triangulated-feature capability has been used in a structure-from-motion context to compute the world geometry on-line.
- mrcal has been used with weird experimental setups employing custom calibration objects and single-view solves
- mrcal has calibrated joint camera-LIDAR systems
- and joint camera-IMU systems
- Lots of students use mrcal as part of PhotonVision, the toolkit used by teams in the FIRST Robotics Competition
Some of the above is new, and not yet fully polished and documented and tested, but it works.
In mrcal 2.5, most of the implementation of some new big features is written and committed, but it's still incomplete. The new stuff is there, but is lightly tested and documented. This will be completed eventually in mrcal 3.0:
- Cross-reprojection uncertainty, to be able to perform full calibrations with a
splined model and without a chessboard.
mrcal-show-projection-uncertainty --method cross-reprojection-rrp-Jfpis available today, and works in the usual moving-chessboard-stationary camera case. Fully boardless coming later. - More general view of uncertainty and diffs. I want to support extrinsics-only
and/or intrinsics computations-only in lots of scenarios. Uncertainty in point
solves is already available in some conditions, for instance if the points are
fixed. New
mrcal-show-stereo-pair-difftool reports an extrinsics+intrinsics diff between two calibrations of a stereo pair; experimentalanalyses/extrinsics-stability.pytool reports an extrinsics-only diff. These are in contrast to the intrinsics-only uncertainty and diffs in the existingmrcal-show-projection-diffandmrcal-show-projection-uncertaintytools. Some documentation in the uncertainty and differencing pages. - Implicit point solves, using the triangulation routines in the optimization
cost function. Should produce much more efficient structure-from-motion
solves. This is all the "triangulated-features" stuff. The cost function is
primarily built around
_mrcal_triangulated_error(). This is demoed intest/test-sfm-triangulated-points.py. And I've been using_mrcal_triangulated_error()in structure-from-motion implementations within other optimization routines.
mrcal is quite good already, and will be even better in the future. Try it today!