本帖最后由 hust_smartcar 于 2025-8-1 22:05 编辑
一.引言 在完成自动瞄准打靶任务时,我们发现传统的处理策略是基于时序预测的间接控制,即通过识别并预测出靶子的位置进行打靶,这种方法对目标运动模型较为依赖,响应不够快速和稳定。因此,我们想到了基于三维几何的直接控制方案。这种方案的核心是利用PNP算法得到靶子在相机坐标系下的三维位置信息。
二.实现流程和思路
坐标变换到激光笔系外参矩阵: 相机到激光笔3×4变换矩阵变换过程将相机坐标转换为激光笔坐标输出: 靶心激光笔坐标计算云台角度目标约束: 旋转后x=0,y=0计算步骤计算距离计算俯仰角计算偏航角角度计算原理俯仰角控制上下方向偏航角控制水平方向输出: 云台控制角度验证与优化重投影验证3D点投影回图像检查误差迭代优化使用LM算法优化光束平差法
首先分析问题,我们将整个流程分解为几个主要部分: 三.核心算法分析:PNP算法 PnP(Perspective-n-Point) 是计算机视觉中用于求解相机位姿(位置和方向)的经典算法,通过已知的3D空间点及其在2D图像上的投影点,结合相机内参,计算出相机坐标系相对于目标坐标系的旋转矩阵(R)和平移向量(t)。
(一)数学原理 核心是求解投影方程: s * [u, v, 1]ᵀ = K * [R | t] * [X, Y, Z, 1]ᵀ
其中: (u,v):图像上的2D像素坐标 (X,Y,Z):3D世界坐标 K:相机内参矩阵 [fx, 0, cx; 0, fy, cy; 0, 0, 1] s:比例因子(深度) [R|t]:待求的外参矩阵(3×4)
(二)EPNP算法步骤
首先,与传统方法相比,这个方案的核心差异在于目标位置信息的获取方式和控制逻辑的基础。 通过PNP算法直接求解相机坐标系下的三维位置,再切换到激光坐标系,得到的是目标在激光发射系统坐标系的绝对三维坐标,物理意义明确,减少了因运动模型不匹配导致的误差。 通过三维坐标直接计算激光打角,属于三维空间的直接几何控制,理论上精度更高,控制逻辑更贴合物理几何关系。 这种方案不依赖目标的运动历史,每次都是基于当前时刻的绝对三维位置计算打角,对目标的瞬时运动状态更加敏感,响应更加及时。 PNP算法每次都是独立求解三维位置,坐标转换是基于外参矩阵的刚性变换,可以减少累积误差,提升长期稳定性。
详细参考代码见附件PDF
|