2024-10-04 21:10:37 发布
网友
我用微软的lifecamhd3000在我的四旋翼机上实现自主着陆。 我想计算一下四旋翼机上的机载摄像头和一个印有矩形的着陆板之间的距离。然后,该距离可以作为误差反馈给PID控制器。我用python编写代码。有谁能给我一个简单的方法来找出距离吗。在
注:我不需要精确的距离值
如果平台矩形大小已知/恒定,则它是可行的
一些要准备的数据
在已知距离处拍摄平台矩形的图像。使用您的Microsoft Lifecam HD 3000与直升机上相同的设置(或单独使用),计算/测量矩形大小(以像素为单位)并存储它。所以你有:
xs0,ys0
d0
拍照
找到它上面的矩形,并尝试将其投影到垂直于相机视图轴的位置。然后以像素为单位计算其大小xs,ys
xs,ys
计算距离
使用三角形相似性
这张图片是为这个Q/A:Specifiyng speed from visual size而做的,这可能会有帮助。所以
z
所以改写成上面的名字
dx=d0*xs/xs0
dy=d0*ys/ys0
dx和{}应该是相同的,但是如果你的图像不是垂直的或者有其他的扭曲,那么它们就会有点不同。所以距离是它的平均值,最小值或最大值取决于安全原因。例如
dx
d=0.5*(dx+dy)
[注意事项]
距离是从摄像机的投影点开始测量的,所以如果你不知道它的位置,从已知点的2个已知距离上取一个矩形图像,然后计算焦距位置。。。在
如果平台矩形大小已知/恒定,则它是可行的
一些要准备的数据
在已知距离处拍摄平台矩形的图像。使用您的Microsoft Lifecam HD 3000与直升机上相同的设置(或单独使用),计算/测量矩形大小(以像素为单位)并存储它。所以你有:
xs0,ys0
-矩形大小[px]d0
-距相机图像的距离[m]拍照
找到它上面的矩形,并尝试将其投影到垂直于相机视图轴的位置。然后以像素为单位计算其大小
xs,ys
计算距离
使用三角形相似性
这张图片是为这个Q/A:Specifiyng speed from visual size而做的,这可能会有帮助。所以
z
是距相机焦点的距离所以改写成上面的名字
dx=d0*xs/xs0
[m]dy=d0*ys/ys0
[m]dx
和{d=0.5*(dx+dy)
[m][注意事项]
距离是从摄像机的投影点开始测量的,所以如果你不知道它的位置,从已知点的2个已知距离上取一个矩形图像,然后计算焦距位置。。。在
相关问题 更多 >
编程相关推荐