Автоматическая газель на Arduino (часть 1)

в 10:40, , рубрики: Программинг микроконтроллеров

Введение

Добрый день, меня зовут Александр, я давнишний читатель портала habrahabr, и вот настало время тоже попытаться рассказать о своих разработках, это мой первый пост, сильно не ругайте.

Немного о соревнованиях

Итак, сегодня я бы хотел рассказать о 3-их Всероссийских соревнованиях автомобилей роботов РОБОКРОСС-2012 проходивших в городе Волоколамск, и о том, как моей команде из Саратова MobRob удалось занять 2 место. Соревнования проходят при поддержке Фонда «Вольное дело» Олега Дерипаска, а также Россмолодежь. 2 года подряд соревнования проходили на озере Селигер, а в этот раз организаторы решили провести соревнования в Подмосковье, на оборудованном полигоне.

Автоматическая газель на Arduino (часть 1)

Оборудование нашей газели

Когда выбирали на чем поедет газель, выбор пал на плату arduino Uno, хотя выбирать в принципе было из чего.

Выбирали из

  • Одноплатного компьютера фирмы Fastwel MK 905

Автоматическая газель на Arduino (часть 1)

  • Плата National Instruments Single-Board RIO c LabVIEW

Автоматическая газель на Arduino (часть 1)

На плате NI, газель ездила 2 года подряд и в принципе никаких нареканий не было, от mk 905 отказались ввиду того что шина FBUS, которая позволяет подключать датчики и исполнительные устройства работает на 24В, а практически все оборудование у нас на 12В, ни хотелось понижать. В этом году решили сделать все как можно проще, т.к. все равно приходилось все делать с нуля, потому что все оборудование достаточно дорогое, а используется не только на газели, после очередных соревнований как всегда ничего не найдешь, ни проводов, ни концевиков, ни программ, а так как недавно закупили платы Arduino Uno, плата проявила себя неплохо, решили использовать ее.

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

  1. Arduino Uno
  2. 1 Энкодер на руле фирмы Autronics
  3. Лазерный дальномер фирмы SICK LMS 511
  4. Телефон
  5. Ноутбук
  6. 2 Камеры Sony Playstation Eye
  7. 3 стеклоподъемника от автомобилей ВАЗ
  8. 3 драйвера двигателя MoviServo

Вся система (в виде схемы) выглядет таким образом

Автоматическая газель на Arduino (часть 1)

Всего было 2 режима работы

1. Ручное управление: смысл заключается в следующем, с ноутбука отправляется управляющий сигнал на плату arduino, которая в свою очередь подает на соответствующую ножку (PIN) ШИМ сигнал, данная ножка подключена к драйверам двигателей MoviServo, в свою очередь которые уже и управляют непосредственно двигателями. Так управляется сцепление и тормоз. Управление рулем такое же, за исключением того, что на руле установлен энкодер, который позволяет точно определить в каком положение сейчас находится руль.

2. Автономный режим: по данным со спутника. Мы использовали сотовый телефон, который подключался к ноутбуку. Для навигации хотели купить модуль GPS для Arduino, но отказались от него т.к. он не очень точный, у нас была плата Arduino UNO у которой почти все ножки уже были заняты, конечно, можно было использовать Arduino Mega, но все-таки мы пошли иным путем, телефон показывает довольно-таки точное местоположение, за счет сотовых вышек и GPS. Также на газели был установлен сканер SICK с помощью которого, строилась карта препятствий. Из препятствий на поле были бетонные ограждения и железные бочки. Также была использована камера Playstation eye, но никаких сложных алгоритмов мы не писали, просто вывод картинки и передача ее на удаленный компьютер, в отличие от прошлого года, когда приходилось писать программу для распознавания препятствий, в этом, она просто не понадобилась.

Задание, которое необходимо было выполнить

Нужно было проехать в ручном или автоматическом режиме, у кого какой работал, по заданной траектории, на земле лежали 3 плаката с цифрами, оператор, сидя в палатке с судьей смотрели в монитор ноутбука и разглядывали те цифры, которые были написаны на плакатах, у всех команд порядок цифр был свой. Если автомобиль ехал в автоматическом режиме ему присуждалось больше очков, нежели если в ручном, увидеть все плакаты, также нужно было проехать между 2мя бочками, так называемыми воротами, за что тоже давались очки.

Заключение

Таким образом, подводя итоги, хочется сказать, что мы до последнего не верили, что машина хотя бы тронется, т.к. у конкурентов были очень сложные системы управления, у нас же получилось все очень просто. По скорости и траектории движения мы лидировали, но, к сожалению, при проезде в автоматическом режиме у нас оборвалась связь, и сидя в палатке 2й плакат мы просто не увидели, за что и получили 2е место. Жаль.

В соревнованиях было 2 номинации: это лучшее техническое решение в котором мы заняли 1е место, и общеквалификационное заняли 2е место. Все, кто спрашивал какое оборудование вы используете, удивлялись нашему ответу — «Arduino».

Автоматическая газель на Arduino (часть 1)

Для себя сделали следующие выводы, всегда, когда разрабатываешь систему нужно ее делать настолько простой, на сколько это возможно, чем меньше звеньев (узлов) в этой системе тем меньше вероятность что она выйдет из строя, это сугубо наше мнение. Конечно, в системах, где есть резерв, это гораздо лучше, но собрать такую систему и отладить довольно долго. У нас у студентов времени как всегда мало, таким образом на оборудование газели и написание программы у нас ушло меньше 3х недель.

Автоматическая газель на Arduino (часть 1)

Автоматическая газель на Arduino (часть 1)

Автоматическая газель на Arduino (часть 1)

Автоматическая газель на Arduino (часть 1)

Больше фотографий о мероприятии на ссылке ниже
www.robosport.ru/forum/index.php?/gallery/album/20-%d1%80%d0%be%d0%b1%d0%be%d0%ba%d1%80%d0%be%d1%81%d1%81-2012

Благодарности

Хотелось бы сказать огромное спасибо всем командам которые приняли участия, компании ГАЗ и Лилии Кусакиной.

P.S. Спасибо за внимание.

P.P.S Пока не знаю толком что писать во второй части, может про реализацию программы для сканера SICK, т.к. там тоже свои нюансы, если у Вас есть предложения, то буду рад.

Автор: bebebe


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js