joint-lidar-camera-calib

Introduction

        在无标定目标的环境中,激光雷达-摄像头系统内在和外在参数的联合标定。本文旨在在没有棋盘格的情况下,标定摄像头的内参和激光雷达-摄像头的外参,同时保持与基于标定目标的方法相当的精度。我们的方法仅需要场景中的几块有纹理的平面。由于有纹理的平面在城市环境中普遍存在,因此该方法在各种标定场景中具有广泛的适用性。关于该方法的详细描述,请参阅我们的论文。标定流程概述如下面的图所示

 算法实现流程

算法主流程如下:

int main(int argc, char *argv[])
{
    ros::init(argc, argv, "calib");
    ros::NodeHandle nh;
    std::string data_folder_ = "";
    nh.param<std::string>("data_folder", data_folder_, "");

    Calib calib(data_folder_); // Load raw data and configuration parameters

    calib.save_SfM_cloud("init", false, "init"); // Visualize SfM point cloud;
    calib.save_LiDAR_BA_cloud(); // Visualize LiDAR point clouds after BA;

    std::cout << std::endl;
    calib.recover_visual_scale(); // Solve monocular visual scale through hand-eye-calibration
    calib.refine_scale_ext();     // Iteratively refine visual scale and extrinsic parameters
    std::cout << std::endl;

    calib.save_SfM_cloud("before_opt", true, "init"); // Visualize SfM point cloud in the LiDAR frame before optimization;
    std::cout << std::endl;
    calib.joint_calib(); // Jointly calibrate intrinsic and extrinsic parameters
    calib.print_optimized_calibration();
    calib.save_opt_calib();
    calib.save_SfM_cloud("after_opt", true, "opt"); // Visualize SfM point cloud in the LiDAR frame after optimization;
    calib.colorize(); // Colorize point clouds given the calibration

    return 0;
}

(1)首先是利用colmap来重建视觉3d,恢复的点云没有尺度信息

(2) 利用激光lidar里程计计算每一帧的lidar位姿

(3)利用手眼标定,恢复出视觉的尺度

(4)恢复尺度的视觉点云和Lidar点云直接,通过最小化视觉点到Lidar点云的平面的距离实现联合优化,优化变量包括视觉的尺度,相机内参,外参等。  

    实验效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值