// the find
koide3/direct_visual_lidar_calibration
A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2]
A target-less LiDAR-camera extrinsic calibration toolbox backed by a pixel-level NID (Normalized Information Distance) registration algorithm published at ICRA 2023. It handles spinning and non-repetitive LiDARs, plus pinhole, fisheye, and omnidirectional cameras — so it covers most sensor combinations you'd encounter on a real robot without needing a checkerboard in the scene. The intended audience is robotics engineers doing sensor fusion work in ROS1 or ROS2.
The NID-based direct registration is the real contribution here — it doesn't rely on edge detection or manual feature matching, which is where most calibration tools fall apart on environments with weak structure. Camera model coverage is genuinely broad: atan, equirectangular, fisheye, omnidir, rational polynomial, and pinhole are all first-class, not afterthoughts. Docker images for Noetic, Humble, and Jazzy are maintained and CI-tested, which matters because the dependency stack (GTSAM, Ceres, Iridescence, PCL, OpenCV) is painful to build from scratch. The automatic initial guess mode means you don't need to hand-measure the rough transform before running it, which removes the most error-prone manual step.
The dependency on Iridescence (a custom ImGui-based visualizer also by the same author) is a build-time liability — it's not packaged anywhere, so you're building it from source inside the Docker image or fighting it yourself. SuperGlue integration is optional but requires a separate Python environment and the MagicLeap weights, adding a brittle Python/PyTorch dependency for what should be a pure C++ pipeline. There's no standalone library interface — everything is driven through ROS nodes and command-line programs, so integrating the calibration algorithm into your own toolchain means wrapping the whole ROS stack. Documentation is good on the happy path but thin on failure modes: what does a bad calibration look like, and how do you diagnose it?