Решатель Labyrinth Maze на базе OpenCV - PullRequest
2 голосов
/ 24 июня 2011

Я создаю автоматический решатель лабиринтов, используя для вдохновения следующее:

http://www.youtube.com/watch?v=Prq78ctJ2Rk&feature=related Я построил управление лабиринтом с помощью степперов и использую следующую плату управления шаговым двигателем:

http://www.sparkfun.com/products/10025

Я использую систему видения для управления решателем лабиринтов.Я также нашел ссылку, где эта проблема была решена:

http://cse.logicol.org/?p=52

Они использовали сопоставление с шаблоном для идентификации шара.Команда, упомянутая в приведенной выше ссылке, также загрузила видео, где, похоже, у них обнаружены хитрые края для нахождения пути и выполнения алгоритма PID.

http://www.youtube.com/watch?v=8b5ARjT22bg&feature=player_embedded

Теперь у меня также естьустановлено соответствие шаблонов и обнаружение краев в opencv.Я также установил управление своим степпером через последовательный порт USB.Как реализовать алгоритм навигации?Как мне реализовать ПИД-контроль?Я знаю концепцию ПИД-управления теоретически, но я просто не знаю, как реализовать ее, используя информацию с камеры.Я просто не знаю, как заставить мяч следовать линии.

Пожалуйста, найдите прикрепленное изображение результата, который я получил до сих пор.

Саи

1 Ответ

0 голосов
/ 25 июня 2011

Я не совсем понял ваш вопрос, но если вы спросите, какие команды дают мячу его положение, вот мое предположение:

1. you find the location of the ball.
2. you have the line of the desired path drown on the board and detected
using canny.
3. Find the closest point to the ball which is on the path line.  If
it was a straight line then the calculation is simple geometrical
formulae dist(point,line). Let us call the result D.
4. The resulting point on the line is where the ball should be. 
5. Advance distance D along the path line. This would give you your
destination point.
6. Subtract ball coordinates from destination point, and then, using atan2()
method to calculate in which direction to move the ball.
7. Activate motores to tilt board in that direction.

Разъяснение к шагу 5. Почему я сказал, чтобы пройти расстояние Dпо пути?Потому что таким образом вы направите мяч не более чем на 45 градусов линии пути.Это дает вам относительно плавное движение двигателя.

Если я не понял вашего вопроса, пожалуйста, скажите мне, и я исправлю свой ответ

...