Here's my Setup: Kinect安装在 Actuator 上,用于水平移动 . 这是我正在做的简短演示 . http://www.youtube.com/watch?v=X1aSMvDQhDM

Here's my Scenario:

enter image description here

请参考上图 . 假设 Actuator 中心“M”和Kinect光轴中心之间的距离'C'为'dx'(毫米),从Kinect获得的深度信息'D'(毫米)是相对的到光轴 . 由于我现在有一个安装在Kinect中心的 Actuator ,物体和Kinect之间的实际深度是'Z' .

X是光轴和物体之间的距离,以像素为单位 . Theta2是光轴和物体之间的角度 . 'dy'可以被忽略 .

Here's my Problem. 为了获得Z,我可以简单地使用图2中的距离方程 . 但是我不知道X的真实世界值,单位为mm . 如果我有物体和光轴'theta2'之间的角度,我可以使用Dsin(theta2)来获得mm的X.然而theta2也是未知数 . 因为如果知道X(以mm为单位),我可以得到theta2,如果theta2已知,我可以得到X.那么我应该如何获得mm中的X值或者光轴与Object P之间的角度?

这是我尝试过的:因为我知道Kinect的最大视野是57度,而Kinect的最大水平分辨率是640像素,我可以说kinect的1度覆盖了11.228(640/57)像素 . 但是,通过实验我发现这导致至少2度的误差 . 我怀疑它是由于Kinect上的镜头失真造成的 . 但我不知道如何补偿/正常化它 .

非常感谢任何想法/帮助 .