如何设计仅使用相机传感器但速度较高的巡线机器人?我目前正在使用 opencv 库来处理帧并从中计算转向角。但在更高的速度下,由于路径变化很快,给定的方法不起作用。
附注是否有适合此应用程序的特定相机?
它应该是一个复杂的系统,并且值得一本好的科学出版物。所以这是一个非常简单的答案。
当您考虑算法时,重要的是要理解,它始终是交易。您可以获得 FPS 小且分辨率差的相机,但随后您可以遵循具有大转弯半径的更平滑的路线。
或者,如果您需要跟随一些急转弯的疯狂曲线,您应该获得好的相机,或者可能很少有相机。
首先我们假设以下条件:
我们开始了。
在顶层,您的系统看起来像是带有负面反馈的块。
您的情况:
通常为了实现平稳反应,您应该使用 PID 控制器,有时(在航天工业中)贝尔曼方程。
现在有了这个模式,我们可以讨论一些算法了。
据说快速相机可以让您跟随更急的转弯。 但是转弯半径还取决于机器人的其他物理属性:质量、车轮轮胎。
如果我对你的机器人的理解是正确的,那么相机传感器只是几个过滤器:
THRES_BINARY_INV
而不是 THRES_BINARY
来实现。选取
x
declination = x - frame_width/2
这组滤波器使用非常高效的卷积算法,即使在最旧的 RPi 版本上也应该以最小的延迟工作。
如果您需要提高 FPS,您可以从顶部和底部裁剪帧。
非常急转弯
这个解决方案甚至可以处理像这样的直角转弯:
------
|
|
^
<robot>
您所需要的只是调整
转向PID参数。
但它可能不适用于相机捕捉两个方向的 U 形转弯:
--
| |
| |
^
<robot>
在这种情况下,您应该减小相机的视角。
进一步改进
事实上,在最近的案例中,当你的相机可以看到整个掉头可能是一个优势。实际上,您能识别的曲线越多,您就能更好地规划机器人的运动。但它需要更强大和更昂贵的算法。
来识别一些危险情况。