Я создаю автоматический решатель лабиринтных лабиринтов и использую веб-камеру для управления моим лабиринтом.
Основываясь на предложениях на других форумах, я пытаюсь контролировать движение мяча лабиринта по крайней мере в одном направлении в данный момент. Итак, я пытаюсь контролировать движение мяча между двумя координатами 466,288 и 466,152. Входной сигнал для платы контроллера шагового двигателя - время, без шагов для поворота для каждой оси, то есть x и y.
Я использую плату контроллера шагового двигателя - плату контроллера шагового двигателя яичного бота: http://www.sparkfun.com/products/10025
Таким образом, чтобы перемещаться между двумя точками, должен ли я создать ряд промежуточных точек между двумя точками, а именно 288 и 152 (скажем, 260 240, 230 ... 150) и исправить движение моего мяча?
Мой алгоритм обработки изображений недостаточно быстр, чтобы отследить шар, чтобы шар просто вращался и падал в лунку.
Некоторые предлагали мне использовать стандартный шаблон, как показано в следующем видео, и исправлять свои движения мяча для отклонения в пути:
http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=player_embedded
Я также наткнулся на инструмент для обработки изображений, где они решили ту же проблему, используя промежуточные точки для движения мяча. Видя слишком много решений одной и той же проблемы, я совершенно сбит с толку, решая проблему. Я знаю, что я должен реализовать контроллер PID. Но как мне идти к решению проблем поэтапно? Я застрял и просто разочаровался в поиске опоры в решении проблемы.
Моя установка выглядит так:
... и вот скриншот моего программного обеспечения:
Редакция 2: Я также столкнулся с новой проблемой: раньше я управлял шаговыми двигателями через Java-апплет последовательного порта Arduino. Я могу управлять степперами с помощью апплета.
Мне приходится сбрасывать плату каждый раз, когда я пытаюсь связаться через последовательный порт. Кроме того, шаговый двигатель включается через небольшие промежутки времени, когда ему не отправляется команда. Когда шаговый двигатель входит в этот режим, я не могу управлять своей платой без ее сброса. Любая помощь будет оценена.
Редакция 3:
Я добился определенного прогресса, где реализовал алгоритм PID. Пожалуйста, найдите видео ниже: http://www.youtube.com/watch?v=MEfp7RqPmqY
Теперь у меня проблема со скоростью реализации алгоритма PID. Фактически моя обработка изображений завершает цикл за 200 мс, идентифицирует шар и отправляет команды на плату контроллера шагового двигателя. Несмотря на то, что мой последовательный порт посылает команды для переключения направлений, мой шаговый двигатель продолжает вращаться в одном направлении. Вы можете найти странное поведение в видео выше.
Я думаю, что я должен ограничить значения PID потолком, где, если рассчитанное значение PID больше 100, я должен просто отправить 100. Я с нетерпением жду ваших мыслей по этому поводу.
Я реализовал ПИД-контроллер так, что я определил начальную точку шаблона, используя алгоритм сопоставления с шаблоном, и определил шар, используя другой алгоритм сопоставления с шаблоном. Теперь я переместил шар в центр тяжести шаблона начальной точки. Как мне заставить его следовать прямой линии с помощью алгоритма PID?
Редакция 4:
Я выделил траекторию, но не смог найти правильную функцию для печати правильных координат пикселей с начальной точки. Есть предположения?