Opencv 确定机器人相对于另一物体旋转的角度

Opencv 确定机器人相对于另一物体旋转的角度,opencv,opencv3.0,aruco,Opencv,Opencv3.0,Aruco,我目前正在做一个项目,我需要确定一个机器人,上面有一个阿鲁科标记,是否需要旋转到某个方向,以使它的前面指向一个特定的物体,因为它的中心点是已知的。所以基本上,我得到的是球的中心点和四个角点 我在这里举一个例子来说明我所说的图像。 注意标记纸板上画的小箭头。它显示了机器人的正面 最后:我有一台可以捕捉帧的相机,程序会打印出旋转矢量。出于某种原因,在每一帧中,值都是不同的,即使我故意让机器人保持在相同的位置。有人能解释一下wy可能是什么吗 非常感谢 编辑:我已对旋转向量波动的问题进行了排序;现在我

我目前正在做一个项目,我需要确定一个机器人,上面有一个阿鲁科标记,是否需要旋转到某个方向,以使它的前面指向一个特定的物体,因为它的中心点是已知的。所以基本上,我得到的是球的中心点和四个角点

我在这里举一个例子来说明我所说的图像。 注意标记纸板上画的小箭头。它显示了机器人的正面

最后:我有一台可以捕捉帧的相机,程序会打印出旋转矢量。出于某种原因,在每一帧中,值都是不同的,即使我故意让机器人保持在相同的位置。有人能解释一下wy可能是什么吗

非常感谢

编辑:我已对旋转向量波动的问题进行了排序;现在我只需要弄清楚如何使用它的输出来获得机器人的方向,也就是说,相对于一个球(我有它的中心点),这显然是通过X轴完成的

我正在添加另一个图像,它显示x轴为红色,y轴为蓝色,z轴为绿色。向量的类型为cv::Vec3d

首先,一些代码:

std::vector<cv::Vec3d> rvecs, tvecs;
cv::aruco::estimatePoseSingleMarkers(corners, 0.05, CAMERA_MATRIX, DISTORTION_COEFFICIENTS, rvecs, tvecs);
std::向量rvecs,tvecs;
cv::aruco::estimatePoseSingleMarkers(角点,0.05,摄像机矩阵,畸变系数,rvecs,TVEC);
图中显示了我的意思:


您能提供一些代码吗?您如何确定找到的四个点的顺序/方向正确,以及如何确定该旋转矢量?(我假设旋转向量=机器人面对的方向和它需要面对的对象之间的角度?@ELRG我已经在我的原始问题中添加了更多细节。好了,现在你有一个x轴指向你的机器人,你需要将它指向球。我对ArUco还不太熟悉,所以无法给出实现技巧,但如果你能找到一个从机器人中心到球中心的向量,并将x轴向量与此对齐,你将指向球。你能提供一些代码吗?您如何确定找到的四个点的顺序/方向正确,以及如何确定该旋转矢量?(我假设旋转向量=机器人面对的方向和它需要面对的对象之间的角度?@ELRG我已经在我的原始问题中添加了更多细节。好了,现在你有一个x轴指向你的机器人,你需要将它指向球。我对ArUco还不太熟悉,所以无法给出实现技巧,但如果你能找到一个从机器人中心到球中心的向量,并将x轴向量与此对齐,你将指向球。