Я будую автоматичний лабіринт-вирішувач лабіринту та використовую веб-камеру для управління своїм лабіринтом.
На основі пропозицій на інших форумах я намагаюся контролювати рух кулі лабіринту хоча б в одному напрямку в даний момент. Отже, я намагаюся керувати рухом м’яча між двома координатами 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-контролер, полягає в тому, що я визначив початкову точку шаблону за допомогою алгоритму відповідності шаблону та визначив кулю за допомогою іншого алгоритму відповідності шаблону. Тепер я змусив м'яч переміститися до центрального шаблону вихідної точки. Як змусити його слідувати прямій лінії з алгоритмом PID?
Версія 4:
Я виділив траєкторію, але я не в змозі знайти правильну функцію для друку правильних координат пікселів від початкової точки. Будь-які думки?