OpenCV装甲板位姿解算

装甲板位姿解算

感谢TJ-SuperPower2025赛季视觉组培训资料的开源

描述旋转

绕y轴旋转
image
绕x轴旋转
image
绕z轴旋转
image

先绕y轴,再绕x轴
y-x-z (45°,-30°,0)
image

3轴都发生旋转
y-x-z (15°,-50°,-25°)
image

欧拉角:yaw - pitch - roll

按顺序记录绕三个坐标轴旋转的角度

image

y轴 -> 偏航角yaw绕上下轴旋转 改变前进方向
x轴 -> 俯仰角pitch绕左右轴旋转 改变俯仰程度
z轴 -> 横滚角roll最后绕前进/后退轴旋转 改变倾斜程度

装甲板在三维空间中的信息

距离:远近
朝向:向左/向右

位置:用三维向量表示
旋转:用欧拉角表示

image

解算位置:cv::solvePnP

cv::solvePnP(objectPoints,  // 物品局部坐标系的n个点
			imagePoints,    // 图像上的n个点
			cameraMatrix,   // 与相机有关的参数
			distCoeffs, 
			rvec,   //存储位置
			tvec, 
			useExtrinsicGuess = false, 
			flags = SOVLEPNP_ITERATIVE);

objectPoints:一个 vector<cv::Point3f>至少需要4个点
imagePoints:一个 vector<cv::Point2f>,包含了对应的图像上的二维点的坐标,与 objectPoints 中的点一一对应。
cameraMatrix:相机的内参数矩阵,类型为 cv::Mat,一般为 3x3 的浮点数矩阵
distCoeffs:相机的畸变系数,类型为 cv::Mat,一般为 4x1 或 5x1 的浮点数矩阵

tvec 平移向量3x1向量:装甲板坐标系的原点在相机坐标系的位置

tevc第三个值:相机坐标系中相机与目标点之间的距离,这个值是相机坐标系中z轴的坐标值,即目标点相对于相机的深度

tvec所有值平方和的开平方:相机与目标点之间的总体距离(实际距离)

rvec 旋转向量 3x1向量:绕一个空间中的向量,进行一次性的旋转

一种旋转的表示方法
image

方向:使用右手定则决定旋转方向
长度:旋转的弧度

求欧拉角

image
image

总结

image

posted @ 2024-12-01 10:50  White_ink  阅读(61)  评论(0)    收藏  举报