Створення робота-гонщика на платформі Arduino

Ключові слова: робототехніка, програмування, штучний інтелект.

Мета роботи: вивчити принципи побудови роботів на основі плати ArduinoUno. Створити діючу модель робота-гонщика та розробити алгоритм його поведінки.

Завдання роботи:

  1. Вивчити особливості побудови роботів з урахуванням плат Arduino та його модулів.
  2. Вивчити особливості середовища програмування роботів з урахуванням платформи Arduino.
  3. Створити модель робота-гонщика. Розробити алгоритм руху робота з урахуванням аналізу вхідний інформації.
  4. Проаналізувати роботу робота.

Запровадження. Основи робототехніки на платформіArduino

Побудова роботів з використанням будь-якої технології передбачає вивчення принципів роботи спеціальних мікросхем, які називаються мікроконтролерами. Вони призначені для управління електронними пристроями і є однокристальним комп'ютером, здатним виконувати прості завдання. Контролер, будучи «зменшеною копією» комп'ютера, містить усі властиві йому основні модулі: центральний процесор, оперативну пам'ять, flash-пам'ять, зовнішні пристрої.

створення

Мал. 1. Структура мікроконтролера

Для побудови роботів використовуються різні платформи. В рамках дослідження для розробки робота-гонщика була обрана платформа Arduino. Перший прототип Arduino був розроблений у 2005 році програмістом Массімо Банці. На сьогоднішній день платформа Arduino представлена ​​не однією платою, а цілим сімейством. Такий підхід дозволяє збирати всілякі електронні пристрої, які працюють як автономно, так і у зв'язці з комп'ютером. Плати Arduino є наборами, що складаються з готового електронного блоку та програмногозабезпечення. Електронний блок – це друкована плата із встановленим мікроконтролером. Фактично електронний блок Arduino є аналогом материнської плати комп'ютера. На ньому є роз'єм для підключення зовнішніх пристроїв, а також роз'єм для зв'язку з комп'ютером, по якому здійснюється програмування.

Найпопулярнішою та найбільш універсальною платформою сімейства є плата ArduinoUno. Вона виконана на базі процесора з тактовою частотою 16 МГц, має пам'ять 32кБ, два з яких виділено під завантажувач, що дозволяє прошивати Arduino зі звичайного комп'ютера через USB. Також є 2 кБ SRAM-пам'яті, які використовуються для зберігання тимчасових даних (це оперативна пам'ять платформи) та 1кБ EEPROM-пам'яті для довготривалого зберігання даних (аналог жорсткого диска).

На платформі розташовано 14 контактів, які можуть бути використані для цифрового введення та виведення. Яку роль виконує кожен контакт залежить від програми. Деякі контакти мають додаткові ролі. Наприклад, Serial 0-й та 1-й - використовуються для прийому та передачі даних по USB; LED 13-й - до цього контакту підключений вбудований світлодіод. Також є 6 контактів аналогового введення та вхідний контакт Reset для скидання.

робота-гонщика
створення

Мал. 2. Плата ArduinoUno

Відмінною особливістю Arduino є наявність плат розширення, так званих "шилдів". Це додаткові плати, які ставляться подібно до «шарів бутерброду» поверх Arduino, щоб дати йому нові можливості. Shield підключаються до Arduino за допомогою наявних штирьових роз'ємів. Розглянемо докладніше Shield, які використовувалися під час проведення дослідження:

‒ MotorShield – забезпечує керування двигунами постійного струму. Висновки мікроконтролера є слаботочними,тому струм двигуна, при підключенні його безпосередньо, виведе їх із ладу. Цю проблему вирішує так званий H-міст. Він дозволяє керувати швидкістю та напрямком обертання мотора.

‒ TroykaShield – допомагає підключати велику кількість периферії на кшталт сенсорів через стандартні 3-провідні шлейфи. Для прийняття рішення про напрямок подальшого руху робота використовувалися цифрові датчики лінії, що підключаються до даного «шилду». Ці датчики дозволяють визначати колір поверхні біля нього. Виходом є простий цифровий сигнал: логічний 0 чи 1 залежно від кольору, що він бачить перед собою. Одиниця – чорний або порожнеча, нуль – не чорний.

робота-гонщика
платформі

Мал. 3. Motor Shield та Troyka Shield

Складання робота-гонщика на платформіArduino

Розглянемо практичну частину проекту – створення робота гонщика. Для цього використовувалися плата ArduinoUno, «шилди», описані вище, датчики лінії, мікромотори з редуктором, колеса, кулі балансування. Процес побудови моделі робота можна поділити на кілька етапів.

ЕтапI. Складання платформи. Спочатку необхідно зібрати основу робота - рухливу платформу. Колеса кріпляться до моторів, а потім до настановної платформи. Для підтримки рівноваги платформи використовуються кулі балансування. Один встановлюється знизу з тильного боку платформи. Ця куля відіграє роль третього колеса та опори одночасно. Друга куля, при необхідності, може бути використана як баласт. Датчики лінії встановлюються попереду платформи.

ЕтапII. Встановлення платиArduinoіпідключення моторів. Плата ArduinoUno кріпиться з тильного боку. Таке розташування дозволить забезпечити коректне розташування платформи прирух. Зверху на плату встановлюється MotorShield, до якого підключаються двигуни.

ЕтапIII. УстановкаTroykaShieldтапідключення датчиків. Наступний «шилд» встановлюється поверх попереднього, утворюючи своєрідний «бутерброд». Цифрові датчики лінії підключаються до 8 і 9 контактів «шилда»

ЕтапIV. Балансування. На заключному етапі зборки необхідно закріпити дроти на платформі, щоб вони не заважали руху робота. Також можна встановити додаткові балансувальні кулі, враховуючи при цьому вагу всіх плат та батареї.

платформі

Мал. 4. Робот гонщик у складанні

Розробка алгоритму поведінки робота

Далі необхідно розробити алгоритм руху робота виходячи з показань датчиків. Основна ідея ось у чому. Нехай у нас є біле поле і на ньому чорним намальовано дорогу для робота (трек). Використовувані датчики лінії видають логічний нуль, коли бачать чорне і одиницю, коли бачать біле. На прямий робот повинен пропускати трек між сенсорами, тобто обидва сенсори повинні показувати "1". При повороті траєкторії праворуч сенсор наїжджає на трек і починає показувати логічний нуль. При повороті вліво нуль показує лівий сенсор.

Під час тестування робота виникла проблема інертності, а саме: робот вилітає з треку, не встигаючи відреагувати на поворот. Це з тим, що моторчики не вміють гальмувати миттєво. Вирішити цю проблему можна в такий спосіб. Після того, як сенсори вловлюють поворот, потрібно зупинитися і повернутися назад на деяку відстань, яка залежить від швидкості перед зупинкою. Таким чином, необхідно знайти залежність пройденої відстані за заднього ходу від часу. Для цього було проведено серію тестовихзаїздів. В результаті аналізу отриманих даних таку залежність було знайдено. Це дозволило обчислити, яку відстань необхідно проїхати роботу назад, виходячи з величини швидкості перед зупинкою.

Однак роботу не обов'язково зупинятися перед кожним поворотом — на маленькій швидкості він чудово вписується в поворот і без додаткових дій. Крім того, щоб прискорити процес повороту, здавати назад можна не по прямій, а під деяким кутом. Також необхідно розрізняти стан робота — коли він рухається по прямій, а коли входить у поворот. У першому випадку можна збільшувати швидкість робота для динамічнішого проходження треку, у другому — скидати швидкість до значення, достатнього для успішного проходження повороту.

платформі

Мал. 5. Пошук залежності пройденої відстані при задньому ході від часу

Перелічені положення стали основою розробки вдосконаленого алгоритму поведінки робота.

Висновок

У цьому дослідженні були розглянуті основи проектування роботів на базі платформ сімейства Arduino, а також побудована модель робота, що діє, на основі плати ArduinoUno. У ході тестування було виявлено та усунуто деякі недоліки як технічної частини, так і алгоритму руху. Отримана модель здатна коректно сприймати інформацію про місцезнаходження робота і, аналізуючи ситуацію, приймати рішення про подальший рух. Існує кілька напрямків модифікації цієї моделі:

‒ Можна поекспериментувати із системою вантажів та досягти ідеальної рівноваги.

‒ Розташування та кількість сенсорів також є значними параметрами в даній конструкції. Від цього безпосередньо залежить не тільки та швидкість, з якою робот реагуватиме наповороти, але й конструкції треків, якими він зможе коректно пересуватися.

Однак найбільш актуальним та оптимальним рішенням може стати використання нейромереж. З їх допомогою робот, кілька разів невдало пройшовши поворот, навчиться і не повторить таку помилку наступного разу. Це буде працювати і з іншими діями, що здійснюються роботом, що дозволить, згодом, створити ідеально пристосований до будь-яких трас гонщика.

Робота з вивчення та застосування на практиці отриманих результатів цього дослідження буде продовжено. Надалі планується розширити отримані знання і спробувати побудувати робота, що самонавчається, що дозволить вирішити деякі проблеми, розглянуті в рамках даного дослідження.

Ключові слова: робототехніка, програмування, штучний інтелект.