双激光联合标定
参考资料
@深蓝学院 多激光雷达外参⾃动化标定算法及代码实例 原文代码
使用场景
两个激光雷达, 有一个已经知道精确坐标, 或只是想获取两个雷达之间的相对关系
修改
首先改的就是支持2d与3d雷达的联合匹配, 这里采用的是一个点云滤波, 将3d点云在z轴某个特定范围内的点云进行收集并投影
// 创建一个滤波器, 将3d点云中特定范围内的数据进行收集, child_filtered_cloud存放的就是在in_paraent_cloud这个点云中, z轴数据在 min_z_value_到max_z_value_之间的点云
pcl::PassThrough<PointT> pass;
pass.setInputCloud(in_parent_cloud);
pass.setFilterFieldName("z");
pass.setFilterLimits(min_z_value_, max_z_value_);
pass.filter(*child_filtered_cloud);
// 将这个点云投影到平面上
for (const auto& point : child_filtered_cloud->points) {
processed_cloud->points.push_back(PointT(point.x, point.y, 0));
}
其次在里面添加了另外两种点云匹配的算法, ICP和GICP
具体实现可以去代码仓库拉取, 使用说明可以看README.md
源码地址 https://github.com/SmileJayjhx/multi_lidar_calibrator
运行成功后就有这样的界面, 包是随便录的, 效果不是很好, 后面会把真正测试用的bag放进代码中去
在控制台会输出不同算法输出的变换关系