Решение для ориентирования мобильного робота на местности, основанное на применении технического зрения

Авторы: Васильев Тимур, Пакулин Григорий, Тырлов Игорь

МАОУ "Лицей № 58", г. Новоуральск

Для отработки технологии распознавания объектов на изображении был построен мобильный бот на платформе "Raspberry Pi 2", оснащённый видеокамерой. Развернутая на контроллере система технического зрения позволяет роботу передвигаться по местности, ориентируясь на получаемое с камеры изображение

Предлагается устройство, контролирующее относительную влажность воздуха в помещении, состоящее из двух независимых модулей с дистанционно разделёнными сенсором влажности и непосредственно увлажняющим устройством. Взаимодействие модулей друг с другом осуществляется по каналу Bluetooth

Робототехническая модель (робоавтомобиль, управляемый игровым USB-рулём), иллюстрирующая программное взаимодействие Lego-робота и прикладной программы,написанной на C#

Васильев Тимур, Пакулин Григорий, г. Новоуральск, МАОУ "Лицей № 58", 10 класс

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

Кроме того, с развитием элементной базы образовательной робототехники, с совершенствованием микро- и просто электронных деталей постепенно стирается грань между роботом и компьютером. Если фразу "Компьютер – это робот" пока ещё можно произнести лишь с определённой долей натяжки, то, сказав "Робот – это компьютер", не покривишь душой нисколько.

В наших каждодневных исследованиях мы хотим найти ответ на вопросы "Можно ли в образовательной робототехнике вместо программирования роботов перейти на программирование компьютеров"? Как компьютер сделать роботом? Как мобильность и габариты учебных робоконтроллеров совместить с мощностью и производительностью "большого" ПК? Этот наш проект – попытка совместить две большие разницы, две ипостаси одного явления – конструирование и программирование и "подружить" в одной модели компьютер и "тонкого клиента" – робота. А также испробовать свои силы в проектировании мультипроцессорных систем с распределённой логикой.

Общее описание задачи

Наша цель – сконструировать робоавтомобиль на базе контроллера Lego EV3, управляемый оператором (пилотом). В качестве интерфейса управления – игровой манипулятор "руль" (какие используются в компьютерных играх). Требования к автомобилю – это не должен быть обычный робототехнический учебный "бот" с двумя ведущими силовыми колёсами и всенаправленным колесом-подпоркой, но аналог настоящего четырёхколёсного автомобиля с двумя рулевыми колёсами, рулевой трапецией и т.п. Соответственно управляться такой автомобиль должен при помощи рулевого колеса, угол поворота передних "рулевых" колёс должен соответствовать углу поворота рулевого колеса. 

И, чтобы соответствовать тематике чтений, мы предназначаем этот робоавтомобиль для ралли на Луне.

Цель проекта:

Освоение приёмов программного взаимодействия ПК и Lego-робота.

Задачи проекта:

  • -освоение приёмов разработки программного интерфейса ПК к периферийным устройствам, подключаемым по USB (игровой руль)
  • -разработка и практическая реализация протокола управления Lego-роботом по каналу Bluetooth
  • -практическая программная и аппаратная реализация механизма отрицательной обратной связи на Lego-модели робоавтомобиля (контроллер LegoMindstormsEV3)

Конструктивное решение

Собственно конструктив робота не представляет какого-то инженерного прорыва. Из особенностей конструкции можно отметить полный привод на все колёса и два дифференциала (на передние и задние колёса) для большей управляемости и курсовой устойчивости. Для более стабильной и ровной тяги на различных оборотах ведущих моторов решено было сделать два, синхронизировав их вращение программно и на аппаратном уроне (жёстко связанные оси обоих моторов обеспечивают одинаковую скорость вращения вала и повышенное передаваемое усилие).

Передние рулевые колёса поворачиваются за счёт рулевой трапеции (фактически, параллелограмма), вращательный момент передаётся на них через карданный вал. Дифференциалы на передних и задних колёсах перераспределяют нагрузку при блокировании/проскальзывании левого или правого колёс.

Подобная система рулевого управления во многих отношениях хороша и у неё есть свои преимущества, однако при большом количестве соединяемых деталей неизбежные люфты в соединениях не позволяют точно контролировать угол поворота колёс. Это приводит к тому, что фактический угол поворота колёс практически никогда не совпадает с тем, который мы ожидали, отдавая мотору команду "Поверни ось на такой-то угол". Для того, чтобы избежать этого, в конструкции автомобиля мы решили сделать дополнительный мотор, измеряющий фактический угол поворота колёс и программно реализовали динамическое управление поворотным мотором по принципу отрицательной обратной связи.

Программная часть

Как автомобиль "узнает" о том, куда рулит пилот? Мы не стали пытаться присоединить игровой манипулятор непосредственно к Lego-роботу, т.к. не знаем, как на роботе программируются периферийные устройства USB. Вместо этого мы подключили руль к ПК и написали программу, опрашивающую его (руля) положение и передающую команды на робота.

Таким образом, для управления роботом необходимы две программы – одна работает на компьютере, принимает команды управления от джойстика (руля) и по каналу Bluetooth передаёт команды на автомобиль. Вторая программа работает на автомобиле, получает команды от компьютера и в соответствии с ними вращает моторы – маршевые двигатели и рулевой механизм.

Программа для робота

Для программирования Lego-робота, построенного на базе контроллера Mindstorms EV3, применялось штатное программное обеспечение Lego Mindstorms EV3, представляющее собой визуальную среду программирования посредством пиктограмм, соотносящихся с действиями с моторами, сенсорами, а также предоставляющие разработчику (программисту) функционал построения алгоритмических конструкций (циклы, ветвления) и средства для работы с данными (переменные, массивы).

Для приёма команд на роботе использованы штатные средства EV3 для работы с Bluetooth – блок "Обмен сообщениями". Протокол обмена по Bluetoothу контроллера EV3 разработан таким образом, что каждое сообщение при посылке помещается в свой так называемый "Почтовый ящик" (или, иначе говоря, имеет свой заголовок); соответственно, принимающая сторона получает сообщение из нужного "Почтового ящика" (или с нужным заголовком). Так, разработанная нами программа считывает из ящика "power" число – мощность маршевого двигателя и подаёт соответствующее значение число непосредственно на моторы (B+D), а из ящика "stir" – также число - текущее положение рулевого колеса. Это число используется контролирующим поворот алгоритмом в блоке обратной связи.

Собственно механизм обратной связи реализован при помощи обычного пропорционального регулятора, назначенного на контрольный поворотный мотор ("A").

Программа для ПК

Программирование пользовательского интерфейса происходило на языке программирования C# в среде MicrosoftVisualStudio (для операционной системы Windows).

Манипулятор "руль" для прикладной программы представляется обычным джойстиком с некоторым количеством кнопок и аналоговым рычагом, который может принимать произвольное положение в некотором диапазоне значений. Для опроса джойстика использовался вызовы библиотеки winm.dll (часть стандартной поставки Windows), содержащей функции для работы с джойстиком.

Главный вызов, возвращающей структуру состояний кнопок джойстика – функция joyGetPosEx() (название означает "JoystickGetPositionExtended", что можно перевести как "получить позицию джойстика в расширенном формате"). Программно отслеживая изменения созданной нами структуры JOYINFOEX, получающей значения при вызове joyGetPosEx(), генерируются события нажатия на те или иные кнопки, а также для контроля изменения положения руля.

Для коммуникации с контроллером робота (EV3) используется библиотека сторонней разработки EV3Messenger. Можно было обойтись и без неё – при подключении устройства (в нашем случае – робота) по Bluetoothна компьютере создаётся виртуальный COM-порт, ассоциированный с этим устройством и все коммуникации между роботом и ПК компьютер может производить, записывая данные в порт (для языка программирования C# - просто в переназначенный файл) и считывая из него данные, однако у Legoреализован свой замысловатый формат сообщений, передаваемых роботом по Bluetooth, который уже реализован библиотекой EV3Messenger, поэтому её использование оказалось предпочтительнее.

Для обмена Bluetooth-сообщениями в программе создаётся объект "EV3Messenger" и вызывается его функция "SendMessage" для передачи на робота значений "Power" (мощность маршевых двигателей) и "Stir" (положение рулевого колеса).

Помещённые на форме элементы управления – стандартные "бегунки" (TrackBar) служат для визуального контроля положений джойстика. Вначале процесса разработки они использовались преимущественно для отладки программы, но позже решено было оставить их в окончательной версии интерфейса программы.

Заключение

Разработанная нами модель наглядно демонстрирует, что мы достигли заявленной цели – научились программировать взаимодействие робота и ПК, пользователя через джойстик и ПК, а также перераспределять "интеллектуальную нагрузку" робототехнической системы между вычислительными узлами. В нашей модели компьютер осуществляет взаимодействие с пользователем и отсылает команды на робота, а робот при помощи обратной связи сам контролирует/обеспечивает правильность выполнения этих команд.

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

В действии нашу модель можно увидеть на youtube:

https://youtu.be/MyYaPa6eac0

или скачать его с Яндекс-диска:

https://yadi.sk/i/SsR8m1-9qkFvX

До новых встреч!

Подписка на новости
Контакты

Адрес: г. Екатеринбург, ул. Мамина-Сибиряка 145, к. 1119 (на карте)

Тел.: +7 (343) 355-93-88

info@cosmoport.club