Автопилот к любому авто за 2000$ | Пикабу

Автопилот к любому авто за 2000$ | Пикабу Конструкторы

Вступление

Радиоуправляемыми самолетами я увлекся еще в 2002 году, живя в Праге. Первый самолет был с размахом крыла 1.2 м, двигатель 2-х тактный ДВС. Вот фрагмент видеозаписи тех времен. Однажды в 2008 году мне в руки попал акселерометр ADXL202E. Имея опыт разработки устройств на контроллере семейства MCS-51(это был Рубидиевый стандарт частоты и система сбора данных), я решил сделать автопилот для радиоуправляемой модели Mentor.

Первым делом я подключил акселерометр к контроллеру. Для простоты я выбрал отладочную плату с контроллером AT91SAM7, за удобство и простоту работы с ней. Надо заметить, что я решил не изучать ничего про автопилоты в интернете, а делать все самостоятельно с “0”, чтобы было интересней.

Автопилот к любому авто за 2000$ | Пикабу

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

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

Вспоминается фильм Ёлки-2, где крен самолета отслеживали по стакану воды, что у настоящего пилота вызовет недоумение. Зачем тогда изобретать авиагоризонт?Итак, в этих статьях я опишу то, что получилось у меня с 2008 по 2021 год, когда я в свободное время занимался этим проектом.

В июне 2021 автопилот был 1 раз испытан реально. Тогда еще без GPS. В 2021 году было выполнено несколько испытаний уже с GPS. Одно из удачных, в замедленном режиме, но с не успевшим найти свое положение по GPS можно увидеть тут. Стартом является выключение пульта.

Взлет полностью автоматически, потом попытка перехватить управление, когда стало понятно, что самолет летит не туда. Было выяснено, что GPS определил координаты в 1 км примерно от настоящего. Еще один успешный пролет по маршруту 17.10.2021.

Съемка неудачная, но видно взлет и посадку. Посадка в поле по причине разряда аккумулятора. Однако, красивая. Весь полет полностью автоматический. Разработка началась с проработки программной модели автопилота с использованием Borland C Builder и симулятора полетов XPlane 6.

В последствие программный код был адаптирован для контроллера почти без изменений. Автопилот ориентирован на простую стыковку со стандартными модулями радиоуправления. Как наиболее подходящий был выбран режим PPM (Pulse Position Modulation). Не со всеми современными пультами даже PPM на сегодня может работать: требуется чтобы последовательность импульсов PPM шла последовательно, а не начиналась одновременно как в некоторых современных пультах, таких как FlySky FS-16.

Хотя решение для управления от таких пультов также присутствует в программном обеспечении, но на сегодня не испытано и нуждается в отладке. Система проверена на пультах Robbie Futaba FC-16 и Art-Tech EFLY-100B. Один из недостатков — необходимость вывода из недр приемника непосредственно сигнала PPM до декодера — распределителя импульсов на рулевые машинки.

1 Акселерометр

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

Только одна из осей (X) используется для измерения наклона самолета. Ось Y можно использовать для вычисления поперечного ускорения и его компенсации путем триммирования положения руля направления. Сейчас это не реализовано. Этот датчик показывает положение “шарика” в соответствующем датчике угловых скоростей и скольжения самолета (Например, Я-18Т, ЭУП-53).

При развороте (под разворотом у пилотов понимается любое изменение курса самолета) пилот для уменьшения скольжения обычно подруливает педалями и удерживает шарик в центральном положении. Дрейф акселерометра при измерении наклона представлен на рис. 2. Как видно при помещении в холодильную камеру за 15 мин дрейф составил -5 градусов.

Автопилот к любому авто за 2000$ | Пикабу

Рисунок 2

2 Гироскоп

Ключевым элементом панели любого самолета является прибор авиагоризонт. Он обычно строится на базе механического гироскопа. Он показывает крен и тангаж самолета в режиме полета по приборам. В данном проекте используется полупроводниковый гироскоп MEV-50A для измерения крена самолета.

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

Дрейф подобной системы измерения ничем не определен при небольших угловых скоростях. Если, например, в шлеме VR (виртуальной реальности), в котором гироскоп выполнен не на основе магнитного компаса с датчиками Холла, а на полупроводниковом приборе, попробуете очень медленно поворачивать голову, вы обнаружите, что он “не замечает” поворота головы.

Автопилот к любому авто за 2000$ | Пикабу

Здесь R — радиус разворота самолета, g — ускорение свободного падения (9.8 м/с2), V -скорость относительно земли (истинная воздушная скорость), ω — угловая скорость, рад/с. Истинную скорость выдает GPS, или ее необходимо вычислять исходя из курса, скорости и направления ветра.

В данном проекте используется скорость по GPS. Для исключения умножения на 0, минимальная скорость для расчета ограничена снизу 10 км/ч. К гироскопу, установленному таким образом, предъявляются очень серьезные требования по точности измерения. Так, первый гироскоп, который был опробован привел к потере самолета.

Видеозапись полета можно посмотреть тут, данные “черного ящика” также доступны. Самолет бы поднят с пульта на высоту около 150м и был включен автопилот. Однако, как видно из графиков, с самого начала гироскоп давал неверные данные — Gyr на картинке — и, как только на 97 секунде полета был включен автопилот, самолет ожидаемо вошел в штопор.

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

Уход за 15 минут составил около 15гр./c, хотя нормальные рабочие значения этого параметра обычно не превышают нескольких градусов в секунду во всем диапазоне кренов (до 30 гр.). А точность должна быть не хуже 0.1o/c.Посмотреть на данные тестирования и на процесс измерения можно здесь.

Сравнение характеристик гироскопов представлено на рис.5 Можно видеть, что в общем и нельзя было ожидать от noname гироскопа нормального полета, если его дрейф за 15 мин. в морозильной камере составил примерно 24 °/с. Сейчас используется гироскоп MEV-50A. Видно, что его дрейф за 25 минут порядка 0.6 °/с.

Автопилот к любому авто за 2000$ | Пикабу

Рис.5

3 Высотомер

В качестве высотомера обычно используют датчик абсолютного давления. В данном проекте применен датчик MPXA4115A6U. Датчик выдает напряжение, которое измеряется контроллером. Перед полетом его необходимо прогревать. Время прогрева достигает 10-15 мин.

Смотрите про коптеры:  Не верьте навигатору: уязвимости GPS и ГЛОНАСС / Блог компании Positive Technologies / Хабр

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

Автопилот к любому авто за 2000$ | Пикабу

Рис. 6Наиболее интересным испытанием датчика давления является несомненно поездка в метро. Данные черного ящика поездки показаны на рисунке 7. Про этот график можно сказать, что автопилот включен на 12 этаже, (около 36 м) Далее спуск на лифте, потом я ехал на автобусе, и потом на метро. Конечная точка моего путешествия, когда я вышел из метро, действительно на возвышенности.

Автопилот к любому авто за 2000$ | Пикабу

Рис.7

4 Датчик воздушной скорости.

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

Трубку обычно размещают либо на крыле, либо на фюзеляже (если нет тянущего винта). Для правильного измерения необходимо, чтобы двигатель не нагнетал воздух непосредственно в трубку. Будучи в этом деле “первопроходцем”, я применил датчик относительного давления MPXV5004GP.

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

Автопилот к любому авто за 2000$ | Пикабу

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

Так я “открыл” для себя, что скорость пропорциональна корню квадратному от давления. V = k*√p В дальнейшем правильность измерения скорости подтвердилась при испытательных полетах с GPS. Температурный дрейф датчика воздушной скорости можно увидеть на рис. 6.

5 Цифровой компас

Цифровой компас позволяет определять направление полета при отсутствии сигнала или приемника GPS. Изначально система строилась как инерциальная. Программа полета записывалась не в виде координат GPS, а задавалось направление, скорость и время полета до следующей точки.

В качестве компаса был применен 2-х осевой компас HMC6352. Если бы тогда разработчик был умнее он бы применил конечно 3-х осевой компас. Но сделано пока так. Компас имеет интерфейс I2C. Этот прибор может выдавать непосредственно курс, либо уровни составляющих магнитного поля.

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

Режим калибровки индицируется особым миганием индикатора режима работы (J9, BLUE-LED, 4 раза в секунду). В это время необходимо в строго горизонтальном положении самолета произвести несколько полных разворотов самолета. Для того чтобы можно было пользоваться датчиком, для корпуса автопилота нельзя применять магнитные материалы.

К сожалению, первые же эксперименты показали, что точность измерения хороша только в случае строго горизонтального положения прибора. На самолете это требование выполнить невозможно. Причем точность не просто падает, а ее нет вообще. При наклоне даже на небольшой угол, несколько градусов получаем на выходе все -180°.

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

Результат работы компаса с компенсацией и без показан на рис.9. HDGn — некомпенсированный компас, HDGc — компенсированный. Как видно из графиков, компенсация значительно улучшает качество измерений курса, однако о точности в десятые доли градуса речи конечно не идет.

Также работу компаса можно увидеть на полетных данных без GPS 11.09.2021. Здесь полет совершался в Вохоново. Нужно заметить, что в полетах в 2009 г. еще не было компенсации компаса. Как видно на рисунке старт действительно происходит с курсом близким к 120 градусам, и завершается в лесу с курсом около 300 градусов.

Автопилот к любому авто за 2000$ | Пикабу

Рис. 9.

6 Модуль GPS

Применен GPS модуль с встроенной антенной. Это небольшая платка, располагающаяся снаружи экранированной коробки автопилота. (См. Рис.8). Документацию на модуль можно найти в папке GPS. Применен модуль S3126. GPS модуль подключен к контроллеру через один из UART.

Общение с модулем идет стандартным протоколом NMEA0183. На испытании 2021_09_02 перед запуском самолета GPS сработал некорректно, и самолет очень красиво полетел не туда. Как можно было видеть из данных “черного ящика” TRACK005.LOG GPS “думал” что он в километре от заданной точки.

Это можно посмотреть в полетных данных от 2021_09_02. Надо заметить, что в этом испытании я еще не мог контролировать расстояние до следующей полетной точки, пока был включен пульт (т.е. выключен автопилот). Поэтому расстояние 134 М в лог файле не говорило о том, что место самолета определено корректно.

Расстояние до следующей точки должно было быть около 100 м, смещение около 0, а курс 323. Однако, как видно реальные данные появились только в момент взлета в 14:10:33. И курс оказался 150, расстояние 1012М, смещение 121М (отклонение от оси, по которой должен лететь самолет в соответствие с заданием).

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

Автопилот получает от GPS модуля следующие параметры: время, дату (используется при записи лог файла), готовность, количество видимых спутников, координаты долготу, широту и скорость в узлах(knots). Готовность GPS отображается светодиодом зеленого свечения, мигающего в моменты записи информации на карту, примерно 1 раз в секунду.

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

Этот маршрут не записывается на карту, но выводится через BT телеметрию. По этим данным можно оценить правильность полетных данных. Программа сейчас не ждет инициализации GPS, однако это легко изменить. Вот так выглядит выдаваемый лог телеметрии:GPILOT V2.17.

0 24/Jul/2021Waiting GPS…GPS ready…Init from MMC card..Hidden sectors = 57G0,60.674983,29.173461,0,0,0,0,1G1,60.675504,29.172667,30M,50kM/h,323D,5s,2,72MG2,60.676388,29.171305,30M,50kM/h,322D,8s,3,123MG3,60.675641,29.168697,30M,50kM/h,239D,11s,4,164MG4,60.672877,29.

172249,30M,50kM/h,147D,26s,5,362MG5,60.673546,29.174448,30M,50kM/h,58D,10s,6,140MG6,60.674767,29.173783,20M,30kM/h,345D,16s,7,140MG7,60.675737,29.172313,20M,0kM/h,323D,0s,0,134MCompass calibrate skip…Sensors calibrate…Sensors calibrate complete…

7 Модуль Bluetooth

Для удобства контроля параметров перед взлетом и вообще отладки, выход через UART был оснащен модулем bluetooth Parani-ESD1000. Для связывания с другими устройствами установлена кнопка. Наиболее удобным приложением для Android устройств оказалось приложение Bluetooth Graphics. Доступно в Google Play.

Как любой уважающий себя самолет, мой проект имеет на борту “черный ящик”, роль которого играет SD карта. Карта подключена по медленному SPI интерфейсу, для ее подключения я взял готовый код, от Rolf Freitag, за что ему благодарен. Код обеспечивает чтение и запись блоков по 512 байт (Сектор).

На карту записываются параметры настройки автопилота, маршрут полета. При работе на карту один раз в секунду пишутся данные, которые программист пожелает записывать. Когда я начинал работу над автопилотом, у меня в распоряжении оказалась SD карта размером 16 МБ, поэтому сначала была написана FAT12, и только этим летом я дописал FAT32.

Смотрите про коптеры:  Классификация связей: голономные, стационарные и удерживающие. Виртуальное перемещение точки. Виртуальная работа. Идеальная связь.

Для ее использования нужно файл fat.c и fat.h в проекте заменить на fat32.c и fat32.h. По мере износа SD карты как показала практика, количество скрытых секторов может увеличиваться. Это связано с износом SD карты и с тем что начальные сектора перезаписываются чаще других, особенно в системе FAT12.

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

Steam community :: guide :: включаем автопилот в гонках и свободной сессии

§

Автопилот к любому авто за 2000$

Модернизация и тюнинг игрушечного радиоуправляемого автомобиля

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

Первоначально рассматривался вариант просто переделать машинку на работу от аккумуляторов. Для работы электроники используются 5 батареек формата АА, в сумме это дает 7,5В.

При таком напряжении машинка едет очень резво, скорость движения не регулируется. Самым простым решением было поставить два последовательно включенных Li-Ion аккумулятора. При полностью заряженных аккумуляторах суммарное напряжение 8,4В, при полностью разряженных 6В. В принципе при 6В машинка едет достаточно быстро, хотя мощность двигателя падает и на горку машинка поедет с трудом. Но с другой стороны это гоночная машинка, ее задача ездить по ровным поверхностям.

Но тут в дело вмешался случай. У меня в наличии были платы защиты BMS с балансировкой только на 3 и 4 аккумулятора. Обрезать схему до 2S не хотелось. Какие плюсы иметь 12В питания? Сразу пришла идея протюнинговать машинку подсветкой. У меня были в наличии двенадцативольтовая RGB лента и компактный автономный трехкнопочный контроллер для ленты. Для питания машинки решил использовать понижающий DC-DC преобразователь, а чтобы машинку можно было с комфортом использовать в квартире, решил оснастить машинку регулятором напряжения, чтобы иметь возможность регулировать скорость. Для комфортной работы экспериментальным путем выбрал диапазон питающего напряжения 5 – 7,5В. При меньшем напряжении мощность двигателя существенно снижается.

Для модернизации и тюнинга понадобятся:
– три Li-Ion аккумулятора формата 14500;
– плата защиты BMS 3S;
– понижающий DC-DC преобразователь LM2596 для питания машинки;
– понижающий DC-DC преобразователь HW-613 для светодиодной ленты (в процессе объясню его назначение);
– переменный резистор (от него впоследствии отказался);
– контроллер светодиодной ленты;
– светодиодная лента RGB;
– индикатор заряда аккумулятора;
– блок зарядки Li-Ion аккумуляторов 12,6В 0,5А (сейчас внешне такие же продают с заявленным током 1А, но вот выдает ли его зарядное…);
– разъем для подключения блока зарядки.

Используемые инструменты:

– шуруповерт (или дрель), набор сверел;

– термопистолет;

– мультиметр;

– паяльник:

– отвертки;

– кусачки;

– скальпель.

Разбираю машинку.

Для начала проверил работу контроллера светодиодной ленты. С одной стороны на контроллер подается питающее напряжение, с другой стороны к четырехконтактному разъему подключается RGB лента. Ответной части разъема у меня не было, решил выпаять разъем и припаяться напрямую к плате контроллера.

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

Удаляю лишние пластиковые элементы.

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

Размечаю и сверлю отверстия в задней части машинки.

Сначала сверлю тонким сверлом.

Затем рассверливаю отверстия большим сверлом.

Подчищаю скальпелем отверстия.

Примеряю ленту.

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

Повторяю все операции на передней части машинки.

Займемся боковыми сторонами. Использую крепежное отверстие в качестве ориентира крайнего светодиода. Для разметки воспользовался малярным скотчем.

Провожу параллельные линии. Прикладываю ленту и намечаю места будущих отверстий.

Повторяю с другой стороны.

Сверлю отверстия тонким сверлом.

Рассверливаю отверстия большим сверлом.

Подчищаю все отверстия скальпелем.

Займемся лентами. Необходимо добраться к контактным площадкам. Аккуратно поддеваю ленту, отделяя ее от защитного силикона.

Следующий этап: вклеивание светодиодных лент.

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

Снаружи заливаю отверстия. На остальных участках я отказался от заливки. Выглядит не аккуратно, да и необходимости заливке нет. Родная силиконовая защита на ленте весьма надежна.

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

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

Вклеиваю контроллер и подключаю его к боковой ленте.

Проверяю работу подсветки.

Измерил ток потребления. Одна боковая полоска потребляет около 100мА, соответственно общее потребление только светодиодной подсветки будет около 300мА, что многовато, с учетом того, что емкость аккумуляторов всего 900мА/ч. Изначально хотел поставить аккумуляторы формата 18650 емкостью 3000мА/ч, но они не влезли по высоте. Решил снизить ток потребления светодиодной ленты. Оказалось, что ленте вполне хватает 9В для нормального свечения.

Воспользовался компактным понижающим DC-DC преобразователем. В итоге ток снизился до 120мА в максимуме, когда горят все три RGB кристалла.

Вклеиваю плату защиты BMS.

Соединяю контакты батарейного отсека с платой BMS. Сверху на плату BMS приклеил на двустороннюю клейкую ленту понижающий DC-DC преобразователь LM2596, дополнительно закрепив каплями термоклея.

Смотрите про коптеры:  Квадрокоптер с GPS своими руками. Часть 1. ⋆ Хобби блог FPSTYLE.

Между выключателем питания и BMS поставил предохранитель.

Устанавливаю аккумуляторы.

Соединяю светодиодные ленты перемычками. Проверяю работу подсветки.

Следующий этап: питание машинки.

Первоначально хотел поставить переменный резистор для плавного изменения напряжения и соответственно скорости. От этой идеи решил отказаться. Основная причина – не нашел подходящего места для переменного резистора, да и переменного резистора нужного номинала 470Ом не нашел, только подстроечный, что не очень удобно. И потом, скорость при снижении напряжения не так сильно меняется, как мне хотелось, а опускать напряжение питания ниже 5В не стал, опасаясь нестабильной работы электроники машинки. Ведь зачем-то производитель для питания поставил пять батареек.

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

Во время включения питания машинка моргает передними фарами и задними фонарями, пока не нажать на кнопки пульта. После этого фары и фонари гаснут и зажигаются соответственно во время движения вперед или назад. Если машинка не двигается и подсветка выключена, не понятно, включено питание или нет. На DC-DC преобразователе есть светодиод индикации работы, но он светит тускло и находится внутри корпуса. Пришла идея установить светодиодные противотуманки. Заодно они добавят света при езде в темное время суток.

Просверлил пару отверстий и закрепил в них светодиоды термоклеем.

Соединил светодиоды последовательно, добавил в цепь гасящий резистор.

Разъем для зарядки вывел сбоку. Пришлось немного подрезать пластиковый держатель шарнира двери. Дополнительно закрепил разъем термоклеем.

Работы по модернизации окончены. Перед сборкой любуемся внутренней начинкой.

Собираю машинку. Несколько фото в темноте и на свету.

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

модернизации шуруповертов

, он для четырех аккумуляторов. Для него есть отличное место установки под BMS. Возможно установлю позже, заказал пару тонких индикаторов 3S на Aliexpress.

Программное обеспечение

Для разработки ПО я использую QT вместе с IDE QT Creator т.к. он наиболее мне знаком, а также благодаря кроссплатформенности я могу запускать свои программы как на одноплатном ПК с Debian так, и десктопе с Windows, что очень удобно. Для разработки ПО микроконтроллера используется Arduino IDE. Для наглядности постараюсь представить все разделы на рисунке 2.

image
Рисунок 2. — Архитектура АП (BNO 080 добавлен на будущее).

1) Графический интерфейс управления — представляет из-себя спутниковую карту с помощью которой осуществляется управление ЛА. Сама программа отображения спутниковых снимков не моя, она была украдена мной тут (её автор тоже пытался сделать что-то подобное).

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

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

Управление кнопками WADS напрямую управляет рулями с помощью ПД регуляторов. При нажатии каждой кнопки на вход регулятора поступает значение, например, при нажатии S тангаж 30 а при отпускании 0. При нажатии W -30 и т.д. Включается WADS с помощью чекбоксов: «ручное», «кнопки».

Данный режим помогает проверить работоспособность всех рулей пред стартом. Работает графический интерфейс на ноутбуке, команды управления от графического интерфейса с помощью TCP соккета предаются в ядро. Графический интерфейс управления представлен на рисунке 3:

image
Рисунок 3 — Графический интерфейс управления.

2) Ядро автопилота это та часть ПО которая вычисляется на одноплатном компьютере TinkerBoard. Ядро отвечает за навигацию и движение по маршруту. Для этого к компьютеру подключен датчик GPS. С его помощью можно получить текущее положение ЛА (широту и долготу) и сравнить это положение с тем, что имеется в маршруте полёта.

В результате этой операции получается азимут на цель, который отправляется на микроконтроллер вместе с остальными параметрами полёта. В дальнейшем ядро можно оснастить своим IMU датчиком, чтобы реализовать ИНС. Например, можно использовать BNO 080 проинтегрировать, ускорение и получить скорость, а проинтегрировав скорость получить расстояние.

Такую ИНС можно использовать в связке с GPS датчиком на случай временной потери связи со спутником, чтобы ЛА не пропустил «поворот» на точку. В момент работы от GPS ИНС будет постоянно корректироваться его показаниями и заполнять промежутки между периодами обновления GPS датчика.

Таким же образом должен вносить поправки алгоритм машинного зрения или SLAM изменяя высоту точки и создавая смещения рассчитанного азимута. После окончания расчёта маршрута ядро отправляет по UART данные: азимут, высоту, угол атаки, тип точки, а также необходимо ли выполнять вращение вокруг этой точки.

3) Команды ядра выполняет микроконтроллер, основная задача МК следовать по заданному курсу на заданной высоте. Для этого на МК установлен IMU датчик BNO 055, барометр bmp 280 и сонар. Для движения по курсу используется азимут полученный от ядра он, сравнивается с текущим курсом и полученное рассогласование передаётся в ПД регуляторы управления рысканьем и креном.

Управление тангажом осуществляется 2мя ПД регуляторами: 1-й определяет рассогласование текущей и заданной высоты, которое поступает на вход 2-го регулятора, при этом выход регулятора высоты ограничен текущим углом атаки, чтобы контролировать её набор.

В случае, если в графическом интерфейсе тип точки выбран взлёт или посадка, для определения высоты используется сонар. Его показания комплексируются с данными барометра, чтобы наиболее точно определить расстояние до земли и вертикальную скорость. Помимо основных функций МК также собирает телеметрию о работе IMU датчиков, текущем направлении и высоте, передаёт их в ядро, где эти данные дополняются данными от GPS и поступают в графический интерфейс.

Заключение

На данный момент автопилот ещё находится на стадии полётных испытаний и полностью не настроен. Впрочем я провёл только два запуска и пока не подобрал коэффициенты для регуляторов.

Вообще ПД регуляторы мне кажутся не стабильными и хочется заменить их чем-то более надёжным, тем более они уже устарели. Также необходимо заменить расчёты с углами Эйлера на расчёты в кватернионах, т.к. последние более стабильно себя ведут при развороте ЛА на углы больше 120 градусов и полётах во время ветра.

Ссылка на исходники ЯД (с библиотеками)Github тут только исходники но новее

Оцените статью
Добавить комментарий

Adblock
detector