Сборка и программирование автоматизированного автомобиля

XVI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке. Летняя площадка 2022

Сборка и программирование автоматизированного автомобиля

Архипов Н.Д. 1Маметьев А.В. 1
1АННО "Физтех-лицей" имени П.Л. Капицы
Обухан В.Г. 1
1МФТИ
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

Итого проблема, которую мы хотим решить: задержка передачи команд управления инопланетными роверами.

Для решения данной проблемы мы поставили перед собой цели, и выдвинули задачи:

Цель: создать систему дистанционного управления инопланетным ровером с элементами автономности с использованием искусственного интеллекта.

Задачи:

1. Исследовать существующие режимы управления роверами, а также возможные сферы их применения

2. Изготовить прототип ровера

3. Разработать алгоритм дистанционного управления

4. Написать программу с использованием алгоритма

5. Провести испытания

6. Выполнить доработки

Методы и методики, которые мы использовали для решения выдвинутых задач:

3D моделирование

Расчёты

Аналитика

Математическая модель (позиционирование, взаимодействие с объектами)

Программирование

Для более продуктивного решения задач, мы разбили их решение на следующие этапы:

Исследовательский

Техническая реализация

Создание алгоритма движения

Программирование движения

Первичное испытание

Доработка

Окончательные испытания

Вывод

Ожидаемый результат:

Робот изначально стоит на центральной линии поля, мяч на точке «пенальти», робот должен найти мяч, и забить его в ворота.

Анализ существующих режимов управления роверами

Главная задача системы управления— обеспечить безопасность ровера на протяжении всего его пути. Поэтому мы тщательно оценили все возможные варианты действий на примере существующих марсианских роверов. Для максимально точной оценки у них есть несколько камер mastcams, благодаря которым формируется «картинка», как бы увиденная глазами человека. Есть также hazcams, «камеры опасности», которые оценивают наличие проблем поблизости, а также navcams — навигационные камеры, оценивающие дорогу впереди.

Ровер умеет передвигаться в нескольких режимах.

Есть три режима: слепой (ручной) режим, визуальная одометрия и автонавигация.

Ручной режим прямого управления. Самый простой способ движения из возможных. Такой режим используется, например, во время первых движений по планете, чтобы получить представление о безопасности окружающей территории. Этот вариант выбирается только в том случае, если вокруг нет потенциально опасных объектов. В этом случае ровер будет следовать инструкциям, присланным с Земли, не обращая ни на что внимания. Мы в этом случае вообще не представляем, что происходит вокруг, и не можем подстраиваться к меняющимся условиям, например, пробуксовка колес, из-за чего аппарат продвинулся вместо 8 метров семь, а то и три.

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

Режим визуальной одометрии – отслеживание пройденного расстояния по изменению положения объектов. Для этого ведется черно-белая фотосъемка со стереокамер, позволяющая определить расстояние до объектов. Распознанные объекты наносятся на трехмерную карту местности, которая анализируется на предмет возможности её пересечь. Каждое препятствие проверяется на наличие выступов, уровень наклона, неровность. Непроходимые препятствия помечаются на карте, чтобы его центр планетохода был на безопасном расстоянии от препятствия. Ровер выбирает наиболее короткий безопасный маршрут к установленной цели. Планетоход останавливается каждые 0.5 – 1.5 метров и производит перерасчет маршрута. После чего бортовой компьютер снова оценивает изображение, сравнивает его с предыдущим и пытается понять, что изменилось вокруг для отслеживания изменений своего положения. Например, если колеса крутятся, а камни или дюны остались там же, то, скорее всего, ровер застрял. Затем компьютер отправляет новые навигационные команды, позволяющие держаться запланированного пути. Таким образом, этот режим дает возможность продолжения автоматического движения без вмешательства человека.

Визуальная одометрия — баланс между скоростью и точностью движения. Метод крайне важен, поскольку помогает обнаружить препятствия на пути ровера и избежать их. В таком режиме максимальная скорость ровера всего лишь 5 сантиметров в секунду, в день аппарат проезжает не больше полутора сотен метров.

Рисунок 1 Марсоход сравнивает признаки, найденные на изображении для отслеживания изменений своего положения

Автонавигация — наиболее технологически совершенный метод, аналогичный использованию беспилотника в автомобиле. Задается общая цель и ровер сам ищет безопасный и быстрый путь к цели. Аппарат останавливается через каждый метр, чтобы оценить обстановку при помощи камер. Но вместо того, чтобы сделать один снимок при помощи навигационных камер, задействуются и hazcams. Затем бортовой компьютер объединяет всю эту информацию, формируя «карту опасности». Проблемные места отмечены красным цветом, места, где ситуация не столь плачевна, — желтым, а максимально подходящая для продвижения роутера местность отмечается зеленым цветом.

Это самый медленный вариант продвижения для планетохода. В случае автономного режима в идеальных условиях он пройдет всего 30 метров в сутки.

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

Рисунок 2 Поврежденное колесо марсохода

Рисунок 3 Выбор оптимального безопасного маршрута

Каковы же аппаратные ресурсы у роверов?

Программный код содержит более 100 модулей, каждый из которых общается с другими через очередь сообщений с минимальным числом блокировок и разделяемой памяти. Модуль навигации – один из наиболее объемных и занимает 10% от всего объектного кода. Большая часть кода написана на C++.

Марсоход Perseverance, совершивший посадку на Марс 18 февраля 2021 года, также использует RAD 750 — защищенный от излучения одноплатный компьютер, производимых BAE Рисунок 4 Аппаратные возможности ровера Systems Electronics.

Однако в будущих миссиях потенциально будут использоваться новые высокопроизводительные многоядерные процессоры с радиационной стойкостью, разработанные в рамках проекта High Performance Spaceflight Computing (HPSC). Процессор Qualcomm Snapdragon также проходит испытания для выполнения миссий.

Эти чипы обеспечат примерно в сто раз большую вычислительную мощность, чем современные лётные процессоры, использующие такое же количество энергии.

С учетом новых возможностей проектируемых чипов разрабатывается специализированное ПО, которое предназначено для визуализации окружающей ровер местности и для создания виртуальной модели ровера и участка ландшафта вокруг него. Эта виртуальная модель используется для тестирования планируемых операторами действий. Если эмуляция прошла хорошо, команды можно отправлять на Марс. Таким образом, ученые избавляют себя от возможных негативных последствий отправки непроверенной команды.

Рисунок 5 Вот как выглядит эмуляция движения ровера после того, как модель полностью готова.

Вот как выглядит эмуляция движения ровера после того, как модель полностью готова. Серые области — участок Марса, по которому роверу предстоит проехать в ближайшем будущем. Оранжево-коричневые линии — это, собственно, путь ровера. В день моделируется около 30 метров поверхности.

Чтобы облегчить работу «Кьюриосити», специалисты из JPL NASA разработали алгоритм классификации местности SPOC (Soil Property and Object Classification), при помощи которого ровер может самостоятельно различать плотный грунт, высокие камни, ровную скальную породу и песчаные дюны. Для того, чтобы улучшить алгоритм, нужно продолжать его обучение, однако трудность заключается в необходимости создания большой базы снимков, на которых уже отмечены все типы рельефа.

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

Группа исследователей во главе с Хиро Оно (Hiro Ono) из JPL NASA запустила проект AI4Mars на базе крупнейшего в мире портала гражданской науки Zooniverse. База данных проекта на текущий момент содержит около восьми тысяч снимков, сделанных «Кьюриосити», в ближайшее время ожидается загрузка снимков, сделанных роверами «Спирит» и «Оппортьюнити».

Рисунок 6 Наложение смоделированного пути ровера на реальные снимки, полученные навигационными камерами.

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

Рисунок 7 Этапы обучения алгоритма с целью улучшения его работы

Подготовка деталей и сборка робота

В основу ровера лёг готовый набор для робо-футбола. В основании набора находится алюминиевая пластина толщиной в 3 мм. Также есть две пластины из фанеры. На нижней пластине установлены два мотор-редуктора с энкодерами. Для удара используется соленоид, а питание происходит от li-pol аккумулятора. Управлением занимается Arduino Mega 2560. В ардуино вставлен Robo-Shield, подробнее ниже. Для управления мотором используется Monster Motor Shield. Для питания ардуино используется DC-DC преобразователь, который преобразует напряжение с аккумулятора (9 - 12 В) в напряжение для питания ардуино (7В).

Принципиальная электрическая схема шилда для Arduino mega, который был разработан нашими предшественниками, вы можете увидеть на рисунке 8.

Рисунок 8 Принципиальная схема.

Рисунок 9 Шилд вживую.

Под цифрой 1 и 2 на рисунке 9 вы видите разъём под bluetooth модули (HC-06). Цифрой 3 обозначен GY521 с микросхемой MPU5060, которая имеет 3-х осевой акселерометр и гироскоп и обрабатывает данные с него. Под номером 4 указаны керамические конденсаторы, которые сглаживают помехи питания. Номер 5 занимает обычный резистивный делитель напряжения, который нужен для определения напряжения на аккумуляторе. Под цифрой 6 расположен полевой транзистор (IRLZ24N), который нужен для управления катушкой соленоида. Номер 7 занимает преобразователь напряжения (L7805CV), который преобразует напряжение которое приходит с аккумулятора (9 – 12 В) в напряжение, которое необходимо для питания модулей (5В).

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

Краткое содержание

Машинка должна, как ни странно, ездить. Для низкотравного управления мы используем Arduino Mega 2560, для управления моторами мы используем Monster Motor Shield на два мотора, который просто вставляется в robo-shield. Задача ардуино в данном проекте – получать данные каким либо способом (com port; Bluetooth), управлять моторами и следить, чтобы машинка не отклонялась от курса, по которому едет (это осуществляется при помощи гироскопа). Заниматься получением видеоданных, последующей их обработкой и формированием команд для ардуино должна raspberry pi, но это в будущем.

Создания алгоритма работы

Посидев несколько часов, мы полностью продумали алгоритм работы робота. Он представлен в виде блок-схемы на рисунке 10.

Рисунок 10 Блок-схема алгоритма работы робота

Написание программы для Arduino

Для начала перед нами встала задача научится управлять моторами при помощи драйвера.

Сначала мы подробно рассмотрели сам драйвер. На драйвере есть по 3 пина на каждый мотор, они обозначены: key A, key B, PWM. Прочитав несколько статей о том, как управлять мотором при помощи драйвера, мы поняли: для управления мотором используются транзисторы, а слово key в названии пина говорит о том, что транзистор, подключенный к этому пину будет работать в «ключевом» режиме (это когда транзистор используется как электронный выключатель). А аббревиатура PWM на русский переводится не иначе, как ШИМ или Широтно-Импульсная Модуляция, то есть последовательная подача высоких и низких логических импульсов.

Подробнее про ШИМ. По определению ШИМ - это способ управления подачей мощности к нагрузке. По сути же просто за счёт изменения длины импульса при неизменной частоте ШИМ при сглаживании позволяет получить практически любую форму, например синусоиды на рисунке 10.

Рисунок 11 Пример получения синусоиды при помощи ШИМа

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

Итого: если мы хотим, чтобы мотор закрутился, то мы должны на key A подать высокий логический сигнал (5В), а на пин key B низкий логический сигнал (0В), а на PWM пин – ШИМ со «скоростью» с которой мы хотим ехать.

Счётчики количества импульсов каждого энкодера расположены во внешнем прерывании (когда ардуино “видит” сигнал, оно на небольшое время перестает выполнять код, увеличивает счётчик и продолжает, как будто ничего не было).

Опрос гироскопа мы проводим только когда крутимся, т.к. в остальное время от него ничего не зависит. В будущем мы планируем использовать его для более ровной езды по прямой.

Написание программы для компьютера

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

Рисунок 12 Пользовательский интерфейс программы управления

Первичные испытания и доработки

Первая проблема, с которой мы столкнулись - при разряде батареи частота вращения моторов падает, для компенсации этого эффекта мы решили менять заполнение ШИМа в зависимости от напряжения батареи. Для вывода зависимости мы составили пропорцию V = 12/1023 * U, где V - итоговое напряжение на батареи, а U - напряжение на пине Ардуино.

Следующей проблемой стало то, что при одинаковом шиме на оба мотора робот едет не по прямой; мы предположили, что это скорее всего из за небольшой неодинаковости колёс. Для решения проблемы мы использовали ПИД-регулятор, следящий за тем, чтобы при движении вперед направление “вперед” робота не изменялось.

Заключение

Мы собрали и запрограммировали робота. В ходе нашей деятельности мы узнали много нового: основы языка программирования Python, основы Arduino IDE. Смогли реализовать графический интерфейс. Это был совершенно новый опыт для нас, пришлось изучать все с нуля. Было много ошибок, но на ошибках учатся. Также мы смогли применить свои знания физики во время разработки управляющей программы.

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

Список литературы

https://spacecraft.ssl.umd.edu/academics/788XF14/788XF14L07/788XF14L07.MER-MSL_x.pdf

http://edurobots.ru/2020/02/pid-robo/

https://www.goodlancer.com/pid-control/

https://alexgyver.ru/arduino-mpu6050/

https://alexgyver.ru/lessons/dc-motors/

https://alexgyver.ru/lessons/timer-isr/

https://alexgyver.ru/lessons/pwm-signal/

Особая благодарность

Вячеславу Геннадьевичу Обухану За то, что помогал с проблемами

Вячеславу Нефедову За то, что помог разобраться как работать с ПИД-регулятором

Маметьеву Виктору Владимировичу За то, что помогал искать орфографические ошибки в текстах

Просмотров работы: 37