pcl NDT配准

一、配准

两个机器人坐标系之间的空间映射T由下式给出
(tx,ty)t描述两个帧之间的平移和φ旋转。配准的目的是用两个位置扫描下的激光数据来恢复这些参数。给出两次扫描(第一和第二次扫描)后,用如下方法:
1)创建第一次扫描的NDT(参数化)。
2)初始化参数的估计值(用0或使用里程计数据)。
也就是初始化rt矩阵的参数,并将参数给到3,
3)对于第二次扫描的每个样本:根据参数将构造的点映射到第一次扫描的坐标系中。
4)确定每个映射点的对应正态分布。
5)通过评估每个映射点的分布并求和结果来确定参数的分数。
6)优化计算新参数估计。通过最优化方法牛顿法完成。
7)转到3,直到满足收敛准则。

二、代码

pcl::NormalDistributionsTransform<pcl::PointXYZ, pcl::PointXYZ> ndt_new;//初始化
ndt_new.setTransformationEpsilon(trans_epsilon);//设置收敛 0.1- 0.001
ndt_new.setStepSize(step_size);//设置步长 0.1
ndt_new.setResolution(resolution);//设置栅格化大小1-2m最佳
ndt_new.setMaximumIterations(max_iterations);//最大迭代步数50-200
ndt_new.setInputTarget(set_InputTarget);//配准的目标 对准的目标
ndt_newer.setInputSource(set_InputSource);//配准的输入 对准的输入
ndt_newer.align(*transform_points, initial_pose_matrix);//赋初值

结果获取

Eigen::Matrix4f result_pose_matrix = ndt_newer.getFinalTransformation();//四元数矩阵 位姿变换矩阵
transform_probability = ndt_newer.getTransformationProbability();//概率

三、原理
https://zhuanlan.zhihu.com/p/96908474

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值