使用计算机视觉实现PID算法
我正在构建一个自动迷宫迷宫求解器,并使用网络摄像头来控制迷宫。 根据其他论坛的建议,我现在试图至少在一个方向上控制迷宫的球运动。因此,我试图控制球在两个坐标466,288和466,152之间的运动。步进电机控制板的输入是时间,每个轴(x和y)的旋转步数没有。 我使用的步进电机控制板是Egg bot步进电机控制板:http : //www.sparkfun.com/products/10025 因此,为了在两个点之间移动,我是否应该在两个点之间创建多个航路点,即288和152(例如260 240 230 ... 150)并纠正我的球的运动? 我的图像处理算法跟踪球的速度不够快,以至于球只会旋转并掉入一个洞中。 一些人建议我使用以下视频中所示的标准模板,并更正我的球的运动以解决路径偏差: http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded 我还遇到了一种图像处理工具,他们使用球的运动点解决了相同的问题。看到太多解决同一问题的方法,我完全困惑于解决问题。我知道我应该实现PID控制器。但是我应该如何逐步解决问题呢?我被困在寻找解决该问题的先机而感到沮丧。 我的设置如下所示: ...这是我的软件的屏幕截图: 修订2:我现在还面临一个新问题:早些时候,我通过Arduino串行端口Java小程序控制步进电机。我可以使用小程序来驱动步进器。 每次尝试通过串行端口通信时,都必须重置板。同样,当没有命令发送给步进电机时,步进电机会以较小的间隔通电。当步进电机进入此模式时,如果不重置电路板,将无法控制我的电路板。任何援助将不胜感激。 修订版3: 在实施PID算法方面取得了一些进展。请在下面找到视频:http : //www.youtube.com/watch?v=MEfp7RqPmqY 现在,我对PID算法的执行速度有疑问。实际上,我的图像处理在200毫秒内完成一个周期,识别出一个球并将命令发送到步进电机控制器板上。即使向我的串行端口发送了切换方向的命令,我的步进器仍沿相同方向旋转。您可以在上面的视频中找到奇怪的行为。 我的想法是,我应该将PID值限制为一个上限,如果计算出的PID值大于100,我应该只发送100。我很希望听到您对此的看法。 我实现PID控制器的方式是,我使用模板匹配算法确定了模板的起点,并使用了另一个模板匹配算法确定了球。现在,我使球移至起点模板的质心。如何使用PID算法使其遵循直线? 修订4: 我已经隔离了轨迹,但是无法找到正确的功能来从起点打印正确的像素坐标。有什么想法吗?