diff --git a/src/icp.cpp b/src/icp.cpp index cf8379812f044aeeeb4a1e8e9001949d1ee9001f..55a92f4b940cbcd23ad0a69a5d3aa738ac06c0d5 100644 --- a/src/icp.cpp +++ b/src/icp.cpp @@ -84,6 +84,8 @@ icpOutput ICP::matchPC(LaserScan &_last_ls, LaserScan &_origin_ls, LaserScanPara csm_input.outliers_adaptive_order = icp_params.outliers_adaptive_order; csm_input.outliers_adaptive_mult = icp_params.outliers_adaptive_mult; + csm_input.do_compute_covariance = 1; + sm_icp(&csm_input, &csm_output); icpOutput result{}; @@ -95,7 +97,9 @@ icpOutput ICP::matchPC(LaserScan &_last_ls, LaserScan &_origin_ls, LaserScanPara result.error = csm_output.error; - result.res_covar = Eigen::Matrix3s::Identity()*0.1; + for(int i = 0; i < 3; ++i) + for(int j = 0; j < 3; ++j) + result.res_covar(i,j) = gsl_matrix_get(csm_output.cov_x_m, i, j); // std::cout << "Number of valid correspondences: " << csm_output.nvalid << '\n'; // std::cout << "Number of iterations: " << csm_output.iterations << '\n';