Логіка авторобот: від машинного зору до управління трансмісією

    
А.Жуковський, С.Усілін, В.Постніков
Сьогодні ми хочемо розповісти про новий проект, який почали трохи більше року тому на кафедрі «Когнітивних технологій» МФТІ.
 
Складається він у створенні системи машинного зору, робота — автомобіля (Рис. 1 ), який в режимі реального часу повинен обробляти відеопотік, розпізнавати навколишнє сцену, детектувати об'єкти і формувати керуючий вплив, спрямоване на вирішення поставленого завдання.
 
 
 
Рис. 1
При цьому ми не намагалися повністю відтворити реальні умови дорожньої сцени, виключивши всі принади малорозмірного моделювання.
 
Для початку, на простих прикладах ми хотіли відпрацювати основні архітектурні компоненти системи (базу отримання відеопотоку і розподіленої обробки на комбінації миникомпьютеров і відеокамер, як прототип System-on-a-Chip (SoC)), потенційно придатні для вирішення складніших проблем.
 
Mи навчили робота рухатися по коридору і виявляти прості об'єкти, наприклад, помаранчевий дорожній конус. Завдання полягало в тому, щоб він міг під'їхати до об'єкта і зупинитися. А потім вирішили пограти з м'ячем. У поточній версії, якщо м'яч знаходиться в полі зору камери, робот детектирует м'яч, розганяється і штовхає його бампером. Якщо м'яч залишає поле зору камери, то робот починає його шукати.
 
  
Ролик знятий під час доповіді на осінній конференції молодих вчених МФТІ,
прямо в коридорі головного корпусу
Зараз ми навчаємо робота проходити «змійку» на час. Ця вправа дозволяє оцінювати якість системи управління та її прогрес від версії до версії. А також порівнювати з якістю ручного управління з участю людини.
 
Спочатку наш робот містив в собі тільки керуючий комп'ютер, камеру і, власне, шасі. Це модель спортивного позашляховика Traxxas Slash 2wd виконана у співвідношенні 1:10. (Рис. 2 , Рис. 3 )
 
 
 
Рис. 2 Traxxas Slash 2wd
Контролер шасі зроблений на основі Arduino nano, але фактично з нього використовується тільки мікроконтролер ATMega32.
 
Трохи пізніше ми додали в схему передній сонар для контролю відстані до перешкод — простіше кажучи, щоб робот не бився бампером в кути і стіни.
 
 
 
 
Рис. 3 Traxxas Slash 2wd
Якщо в першій версії, робот транслював відео через HTTP назад і формування керуючих сигналів велося на desktop, то в поточній версії 2.0 (представлено на відео) весь цикл замкнутий на борту, причому основне навантаження по обробці відео лягла на миникомпьютер Odroid U2. (Рис. 4 -1 )
 
Крім комп'ютера в устаткування версії 2.0 входить:
 
 
     
  • пристрій управління роботом (Мал. 4 -2);
  •  
  • відеокамера Logitech HD Pro C920/Genius WideCam 1050 (може використовуватися практично довільна веб-камера) (Мал. 4 -3);
  •  
  • Wi-Fi-адаптер ASUS USB-N10 (Мал. 4 -4);
  •  
  • USB-концентратор (Мал. 4 -5)
  •  
  • сонар LV-MAXSONAR-EZ2 (Мал. 4 -6)
  •  
 
 
 
 
Рис. 4
До функцій пристрої управління роботом відносяться:
 
 
     
  1. реалізація команд керуючого комп'ютера :
      
       
    • формування керуючих ШІМ-сигналів,
    •  
    • управління зовнішнім навантаженням (7 каналів);
    •  
      
  2.  
  3. обробка сигналів з датчиків :
      
       
    • сонари (8 каналів),
    •  
    • датчик Холла,
    •  
    • датчик напруги акумулятора (АЦП);
    •  
      
  4.  
  5. захист робота :
      
       
    • аварійна зупинка по фронтальному сонари,
    •  
    • зупинка при втраті керуючого сигналу.
    •  
      
  6.  
 
 
 
Рис. 5 Схема обладнання робота
Зараз ми збираємо 3-ю версію. У ній система захоплення відеопотоку буде включати в себе вже дві професійні відеокамери IDS, відеосигнал з яких (включаючи детекцию об'єктів) буде оброблятися на окремих мінікомп'ютерах, в свою чергу приєднаних до центрального мінікомп'ютером, виробляючому фінальне розпізнавання сцени і вироблення керуючих впливів.
 
Планується також поставити кілька сонаров по периметру робота, щоб більш повно представляти оточення для вирішення завдань парковки.
 
Далі планується досить багато доробок, наприклад, ми хочемо навісити на робота світлове обладнання, подібне реальним автомобілям, для чого частина деталей друкується на 3D-принтері. Це необхідно для моделювання руху за що їхав з підтримкою певної дистанції (випадок руху в щільному потоці або пробці).
 
 
Перше ліричний відступ.
речі, якщо будете робити щось подібне, відразу застерігаємо від використання китайських аналогів — перша версія контролера мотора була зроблена саме на ньому, що вилилося в кілька тижнів пошуків причини дивної поведінки мотора — виявилося, що мікроконтролер з «аналога» замикав часом деякі входи на виходи. Бути може, це нам так пощастило, але з оригінальним Arduino таких проблем помічено не було.
 
 
Друге ліричний відступ.
Перед створенням контролера шасі, виявилося, що невідомо, як і чим керувати. Відсутність офіційної документації з керуючим сигналам компонентів шасі дало привід згадати лаби з фізики та поколупатися з осцилографом. У результаті виявилося, що там використовується широтно-імпульсна модуляція. Вообщем, нічого складного.
 
 
Третє ліричний відступ.
Десь у проміжку між виявленням проблеми і збиранням нового контролера було прийнято рішення відмовитися від монтажної плати, на якій був зібраний перший контролер, і тому з нафталіну був узятий «прасувальну-принтерний» метод розводки друкованих плат. У результаті вийшло дуже акуратно і здорово.
 
Алгоритм поведінки робота для погоні за м'ячиком представлений схематично на малюнку нижче. Здається, нічого незрозумілого в ньому немає. Хіба що варто сказати пару слів про алгоритм розвороту. Це відпрацювання ситуації, коли м'ячик виходить з поля зору робота. По суті, у нього існує тільки 4 можливості для розвороту: вперед направо, вперед наліво і назад направо і назад наліво. Робот запам'ятовує, де бачив м'яч в останній раз і повертається в цю сторону по повній аналогії з футболістом, з поля зору якого пропав м'яч. Він прагне розгорнутися в ту сторону, куди полетів м'яч.
 
  
Для розвороту ми застосовуємо алгоритм «зірочки»: їдемо, наприклад, спочатку вправо і вперед, потім ліворуч і назад, виходять такі дуги, опуклі в бік загальної центральної точки. Цей маневр, нагадує розворот на обмеженому просторі, відомий багатьом по іспиту в ГИБДД (Рис. 6 ).
 
 
 
 
Рис. 6
Якщо виникає тупикова ситуація, пов'язана з тим, що робот застряє, наприклад, зачепившись за ніжку стільця, програма управління ідентифікує цю ситуацію за рахунок розбіжності обертів двигуна і кута повороту коліс. У цьому випадку робот намагається здати назад, зробити маневр по «зірочці» і продовжити рух до мети.
 
  
 
Четверте ліричний відступ.
Коли ми готувалися до конференції молодих вчених МФТІ, то для посилення глядацького сприйняття підвищили параметр аккселераціі. У підсумку, робот став частіше впиратися в перешкоди, так як схема детекції випадку «застрявання» перестала спрацьовувати адекватно — стали буксувати колеса. Крім того, на більшій швидкості робот став частіше промахуватися повз м'яч (це видно на першому відео). Тому нам довелося вирішувати задачу оптимального балансування між швидкостями обробки відеопотоку, руху робота та прийняття рішення. За рівнем складності вона нагадувала проблему звикання до старого автомобілю радянського виробництва з механічною коробкою, типу «Москвича» або «Жигулів» у кожного з яких було по — своєму відрегульовано зчеплення і запалювання. Хто з цим стикався, той розуміє, що потрібен якийсь час, щоб пристосуватися ловити баланс між зчепленням і педаллю газу, щоб машина прискорювалась плавно.
 
 
 
 
Рис. 7 Алгоритм поведінки робота для погоні за м'ячиком
У третій версії робота (вона вже практично в зборі) ми перейшли до використання «професійної» відеокамери і об'єктиву.
 
 
 
 
Рис. 8
Паралельно нами ведуться експерименти з установки камер на рейки, які кріпляться на рейлінги повнорозмірного автомобіля (Рис. 8 ). Це дозволить відтворювати реальну геометрію і умови дорожньої сцени.
 
Детальніше про нову версії робота ми плануємо розповісти в наступній статті.
 
 
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.