Русский
Русский
English
Статистика
Реклама

Осрв

Linux в режиме реального времени

23.11.2020 14:22:47 | Автор: admin


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

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

Возможности ядра в реальном времени существует уже более десяти лет в экосистеме программ с открытым исходным кодом. Столько же времени доступна поддержка Red Hat Enterprise Linux (RHEL) для ядра реального времени. Тем не менее многие системные администраторы неверно истолковывают его основные концепции и фактическое рабочее поведение. В этой статье я опишу некоторые из его основных функций, отличия от стандартного ядра и шаги по установке.

Планировщик ЦП в реальном времени


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

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

  • Задержка прерывания относится к периоду времени от поступления прерывания в CPU до запуска процедуры обработки. Когда происходит событие, ОС должна сначала завершить выполняемую инструкцию и определить тип возникшего прерывания. Затем он должен сохранить состояние текущего процесса до обработки прерывания с помощью специальной процедуры, interrupt service routine (ISR).


    Рис. 1 Задержка прерывания.
  • Время, необходимое диспетчеру планирования для остановки одного процесса и запуска другого, называется задержкой диспетчеризации. Предоставление задач реального времени с немедленным доступом к процессору требует, чтобы ОС реального времени минимизировали также и эту задержку. Наиболее эффективным методом поддержания низкой задержки отправки является предоставление ядер с приоритетным прерыванием.


    Рис. 2 Задержка диспетчеризации.


Планировщик с учетом приоритетности процессов


Наиболее важной особенностью ОС реального времени немедленно реагировать на критический процесс, требующий доступ к ресурсам CPU. В результате планировщик для операционной системы реального времени должен поддерживать алгоритм приоритетного прерывания. Такие алгоритмы назначают каждому процессу приоритет в зависимости от его степени важности. Если планировщик также поддерживает приоритетное прерывание, текущий процесс на CPU по запросу будет вытеснен в пользу более приоритетного процесса.


Рис. 3 Классификация планировщиков.

Существует несколько алгоритмов для планировщика в реальном времени.

  • Rate-Monotonic Scheduling алгоритм со статическим приоритетом класса планирования. Статические приоритеты назначаются в соответствии с продолжительностью цикла задачи, вследствие чего более короткие циклы имеют более высокий приоритет исполнения. В худшем случае КПД загрузки центрального процессора ограничен следующей величиной.


    При числе процессов n, стремящемся к бесконечности ряд будет сходиться к ln2 0.693147.
  • Earliest-deadline-first (EDF) Scheduling динамически назначает приоритеты в соответствии с крайним сроком. Чем раньше крайний срок, тем выше приоритет и чем позже крайний срок, тем ниже приоритет. В отличие от RMS, планировщик EDF не требует, чтобы процессы были периодическими и постоянно запрашивали одно и то же количество процессорного времени на пакет. Единственное требование состоит в том, чтобы процесс объявлял свой крайний срок планировщику, когда он готов к запуску.


    Рис. 4 Планировщик EDF.

    На рисунке видим общий принцип работы планировщика. На точке 4 был замещён T1 и его место занял T2 так как его крайний срок наступал раньше, чем у T2. После отработки T3 планировщик вернулся к T1, который завершился на отметке 21.
  • POSIX real-time-scheduling. Стандарт POSIX.4 определяет три политики планирования. Каждый процесс имеет атрибут планирования, который может быть выставлен в одну из трех вариантов политики.

    • SCHED_FIFO политика упреждающего планирования с постоянным приоритетом, при которой процессы с одинаковым приоритетом обрабатываются в порядке первым пришел первым обслужен (FIFO). Данная политика иметь не менее 32 уровней приоритета.
    • SCHED_RR политика аналогична SCHED_FIFO, но использует метод временного среза (циклический перебор) для планирования процессов с одинаковыми приоритетами. Он также имеет 32 уровня приоритета.
    • SCHED_OTHER политика не определена и зависит от системы; может вести себя по-разному в разных реализация.


Установка и использование RHEL Real Time


Для начала следует подключить репозиторий Red Hat Enterprise Linux для Real Time, и установить группу пакетов RT.

[root@server ~]# subscription-manager repos --enable rhel-8-for-x86_64-rt-rpms[root@server ~]# yum groupinstall RT

В составе RT идут эти компоненты:

  • kernel-rt ядро с функционалом реального времени;
  • rt-setup установка окружения Red Hat Enterprise Linux Real Time;
  • rt-tests утилиты тестирования функций RT;
  • rt-eval для оценки возможности применять RT на данной системе;

После установки RT и перезагрузки нужно убедиться, что загружено ядро kernel-rt.

[root@server ~]# uname -aLinux rt-server.example.com 4.18.0-80.rt9.138.el8.x86_64 

Посмотрим на некоторые отличия kernel-rt от стандартного ядра.

  • При высокой нагрузке происходит проверка приоритета задачи (1-99).
  • Высокоприоритетным (99) задачам отдается предпочтение при доступе к ресурсам центрального процессора.
  • Не задействует политику Completely Fair Scheduling (CFS).
  • Использует политику SCHED_FIFO, либо же SCHED_RR.


Рис. 5 Сравнение kernet_rt со стандартным ядром.


На графике показан замер времени отклика из миллиона повторений для систем, использующих ядра RHEL Linux 7 и RHEL Real Time соответственно. Синие точки на этом графике представляют время отклика (в микросекундах) систем со стандартным ядром RHEL 7, а зеленые RHEL 7 Real Time. Из графика видно, что особенность kernel-rt в гораздо меньшей дисперсии и, соответственно, в большей предсказуемости времени отклика системы.

Настройка и тестирование


После установки RT может потребоваться дополнительная настройка и доводка для достижения наиболее стабильных показателей времени отклика системы. Такие требования могут предъявить компании финансового, или телекоммуникационного сектора. Сама настройка итеративный процесс и нужно запастись терпением в начале процесса. Вряд ли получится подкрутить пару переменных и понять, что достигнут наилучший результат из возможных.

Утилита hwlatdetect из пакета rt-tests покажет задержки, вызванные аппаратным и микропрограммным обеспечением, путем опроса источника тактовых импульсов и поиска непонятных пропусков.

[root@server ~]#  hwlatdetect --duration=60shwlatdetect:  test duration 60 secondsdetector: tracerparameters:Latency threshold: 10usSample window:     1000000usSample width:      500000usNon-sampling period:  500000usOutput File:       NoneStarting testtest finishedMax Latency: Below thresholdSamples recorded: 0Samples exceeding threshold: 0

В данном примере parameters указывает на задержку и способ обнаружения. Порог задержки по умолчанию был выставлен на 10 микросекунд (10 s).

RT имеет также утилиту rteval для тестирования производительности системы в реальном времени под нагрузкой. Программа создаёт большую нагрузку на систему, используя планировщик SCHED_OTHER, а затем измеряет отклик в реальном времени на каждом из активных CPU. Цель в том, чтобы постоянно выполнялись различные задачи, такие как выделение / освобождение памяти, дисковый I/O, вычисления, копирование памяти и другие.

Каждый поток измерений берет временную метку, бездействует в течение некоторого интервала, а затем принимает другую временную метку после пробуждения. Задержка по результатам измерения равна t1 - (t0 + i), где

  • t1 фактическое время измерения;
  • t0 теоретическое время пробуждения первой временной метки;
  • i интервал ожидания.

Отчет утилиты rteval выглядит так.

System:Statistics:Samples:           1440463955Mean:              4.40624790712usMedian:            0.0usMode:              4usRange:             54usMin:               2usMax:               56usMean Absolute Dev: 1.0776661507usStd.dev:           1.81821060672usCPU core 0       Priority: 95Statistics:Samples:           36011847Mean:              5.46434910711usMedian:            4usMode:              4usRange:             38usMin:               2usMax:               40usMean Absolute Dev: 2.13785341159usStd.dev:           3.50155558554us

Использованные материалы





Подробнее..

Как реверс-инжиниринг чужой инерциальной навигационной системы перерос в свою собственную разработку

19.03.2021 10:13:30 | Автор: admin

Сегодня, благодаря MEMS-датчикам, инженеры начинают использовать инерциальные навигационные системы везде, где есть движение. В зависимости от требуемой точности как по углу, так и по координатам, применяют МЕМS-датчики разного уровня цены и интегрированности: от "все датчики в одной микросхеме" до "один датчик - одна микросхема". А сама инерциальная навигация, как часть инженерных систем, впервые появилась в торпедах, кораблях, ракетах и самолетах.

Вступление

Итак, как заметил Виктор Олегович Пелевин, различные беспилотные летательные аппараты действительно стали распространены во всем мире. И не только для военных целей, но и в быту. А что способствовало распространению их для гражданского применения?

- Прежде всего, снижение стоимости микропроцессоров и микроконтроллеров, а также рост их вычислительной мощности;

- Появление и распространение аккумуляторов с удельной энергоемкостью 150250 Вт*ч/кг, литий-ионных и литий-полимерных;

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

- Появление большого разнообразия миниатюрных приемников спутникового радионавигационного сигнала различной сложности и ценовой категории;

- Широкое распространение инерциальных систем, построенных на микроэлектромеханических (МЭМС) сенсорах: датчиках угловой скорости (ДУС), акселерометрах, магнитометрах и датчиках давления. Про инерциальные навигационные системы мы и поговорим.

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

Механическая конструкция с кардановым подвесом была известна еще в Византии и в Китае. А использование ее для навигации было предложено французским ученым Фуко, он же придумал название гироскоп.

Главное свойство карданова подвеса состоит в том, что если в него закрепить вращающееся тело, то оно будет сохранять направление оси вращения независимо от ориентации самого подвеса. Таким образом, передвигающийся объект, на котором закреплен гироскоп, может постоянно наблюдать свое первоначальное угловое положение в пространстве.

Прототип карданова подвесаПрототип карданова подвеса

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

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

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

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

Изначально инерциальные навигационные системы были только платформенными (далее ПИНС). Что такое гиростабилизированная платформа? Для стабилизации датчиков в пространстве используется такая гироплатформа, которая физически реализует опорную систему координат на движущемся объекте. Гироплатформа имеет минимум 3 вращательные степени свободы относительно объекта, которые обеспечивают сохранение платформе неизменного углового положения в пространстве при угловых эволюциях. Гироплатформы бывают 2 типов:

- с тремя гироскопами, которые имеют 2 степени свободы каждый;

- с двумя гироскопами, которые имеют 3 степени свободы каждый.

Гироплатформа с тремя гироскопами: на платформе установлены два гироскопа с вертикальными осями прецессии и один с горизонтальной осью, здесь же установлены 3 акселерометраГироплатформа с тремя гироскопами: на платформе установлены два гироскопа с вертикальными осями прецессии и один с горизонтальной осью, здесь же установлены 3 акселерометра

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

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

В ПИНС аналитического типа гироплатформа материализует (при околоземной навигации) навигационную систему координат с обеспечением учета вращения Земли, местная вертикаль определяется аналитически. Координаты объекта получаются в вычислителе, в котором обрабатываются сигналы, снимаемые с акселерометров и устройств, определяющих поворот самого объекта относительно гироскопов и акселерометров.

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

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

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

Пример старого свободного гироскопа с индукционным датчиком углаПример старого свободного гироскопа с индукционным датчиком угла

Такие инерциальные MEMS-модули очень привлекательны для применения в разных устройствах (не только в коптерах): цена не превышает 1000 руб. в рознице, интерфейс взаимодействия I2C или SPI, в микросхему встроен датчик температуры, можно на ходу менять максимальный измеряемый размах угловой скорости и кажущегося ускорения. Для более серьезных применений набор MEMS-датчиков с вычислителем заключены в модуль объемом 0,1..0,3 литра, где каждый гироскоп и акселерометр выполнен в отдельной микросхеме.

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

В таблице приведены интересующие нас параметры для характерных современных устройств.

MPU-9250, BMI0556, ICM-20689 и другие подобные микросхемы фирм Bosch, Invensense или STMicroelectronics используются в современных полетных контроллерах для любительских беспилотных коптеров и самолетов. Это, например, контроллеры PixHawk, Naza и другие, чуть более высокого или низкого класса по функциональным и ценовым характеристикам. Все они применяются на беспилотниках класса для хобби или околопрофессионального полетов для наблюдений с помощью камеры на небольшие расстояния и время. Работа полетных контроллеров с подобными ИНС без постоянного комплексирования с данными от приемника GPS\ГЛОНАСС в таких режимах как зависание на точке, возврат на точку старта или автоматический полет по координатным точкам немыслима. Кроме этого, у них есть и другие особенности, которые иногда могут затруднять их использование, а иногда и приводить к авариям: ухудшение стабильности на температурах ниже 510 C, влияние вибраций от работы винтов на отработку углов горизонта, нестабильность определения истинного курса, возникновение toilet bowling (унитазинг, самопроизвольные круговые движения коптера по возрастающему радиусу).

Однако все это недопустимо при применении в коммерческих целях, при массе БПЛА до 30 кг, и более. Кстати, 30 кг это, по измененным законам РФ, максимальная масса беспилотного воздушного судна, которое можно эксплуатировать без согласования с диспетчерскими службами использования воздушного пространства, с некоторыми дополнительными ограничениями.

В общем, если говорить о промышленных или сельскохозяйственных дронах, таких как DJI Agras T20 или DJI серии Matrice c временем полета до 40-50 минут и стоимостью в районе одного миллиона рублей, то здесь требуются более надежные и точные ИНС. Тем более, что при таких массах остро стоит вопрос безаварийности не только в смысле сохранения дрона, но и, что куда важнее, в смысле безопасности окружающих людей. Да и потом, не следует забывать про развитие и распространение всяких приборов и устройств, подавляющих радиосигналы, используемые дроном для управления и навигации. А эти приборы впоследствии могут использовать не только госслужбы.

На снимке захват подразделением силовиков дрона DJI Mavic 2 Pro в Москве на митинге 10 августа 2019 году с помощью электромагнитной пушкиНа снимке захват подразделением силовиков дрона DJI Mavic 2 Pro в Москве на митинге 10 августа 2019 году с помощью электромагнитной пушки

Когда в Миландре появилась необходимость использовать инерциальную навигационную систему в собственной разработке, то выбор такой системы проходил по принципу максимальной точности при достаточной миниатюрности. По сути, выбирался инерциальный модуль на основе MEMS c наилучшими характеристиками. Вопрос цены не стоял остро, так как предполагалось первичное применение в прототипе устройства. Выбор пал на модуль ADIS16480 от Аnalog Devices, на тот момент это был лучший вариант среди имеющихся в свободной продаже. Данный модуль является курсовертикалью, в состав которой входят: ДУСы, акселерометры, трехосевой магнитометр и датчик давления (бародатчик). Выходные данные угловые скорости, кажущиеся ускорения, углы Эйлера относительно горизонта и истинный курс (магнитный курс с учетом заданного склонения), а также соответствующий этим углам кватернион (или, взамен углов и кватерниона матрица ориентации). Для коррекции углов используется калмановская фильтрация с применением данных от акселерометров и магнитометра. Также в модуле присутствует возможность подвергать цифровой фильтрации сырые данные угловых скоростей и кажущихся ускорений.

Однако, начиная с некоторого момента, из-за введенных санкций правительства США данный модуль перестал быть доступным в продаже в России. И было принято решение разработать собственный аналог.

Реверс-инжиниринг ADIS16480

По результатам вскрытия

ADIS16480 со снятой крышкойADIS16480 со снятой крышкой

выявлен состав данного модуля и некоторые его схемотехнические особенности. Модуль выполнен в виде гибко-жесткой платы, на основе процессора Blackfin ADSP-BF512, также в нем есть 4 АЦП AD7689BCPZ, датчик давления MS560702BA03-00, магнитометр HMC1043, 6 двухосевых акселерометров AD22037Z и по несколько ДУС в каждой из 3 осей.

Наше устройство по набору датчиков похоже на устройство Analog Devices и выполнено на собственном цифровом сигнальном процессоре К1986ВН04BG. Однако функционально мы его расширили.

Бесплатформенная инерциальная навигационная система МиландрБесплатформенная инерциальная навигационная система Миландр

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

- текущие географические координаты объекта (широта, долгота и высота над референц-эллипсоидом) в системе координат ПЗ-90.02;

- вектор скорости объекта относительно Земли в проекциях на северную, восточную и вертикальную оси.

Для того, чтобы модуль работал в режиме БИНС, необходимо при включении передать в него начальные координаты относительно Земли: широту, долготу и высоту над референц-эллипсоидом. С этого момента начинается интегрирование показаний датчиков и счисление координат, скоростей и углов ориентации. Кроме того, знание текущих координат позволяет включить в алгоритм курсовертикали учёт вращения Земли. Таким образом, в отличие от ADIS16480, наш инерциальный навигационный модуль может работать не только в режиме курсовертикали, но и как полноценная инерциальная навигационная система. Курсовертикаль обеспечивает счисление ориентации, точность которой непосредственно влияет на точность счисления координат так, часто характеристикой точности инерциальных систем для самолётов является погрешность в формате ухода координат миль в час.

Также, в отличие от ADIS16480, в нашу БИНС добавлена возможность записи телеметрической информации на microSD-карту, которая оперативно снимается и устанавливается без вскрытия корпуса. Можно сказать, что в наш модуль введена функция черного ящика.

Разработка алгоритмов и математики, а также математическое моделирование

Алгоритм ориентации основан на использовании кватернионов и матриц ориентации, с предварительным интегрированием сырых данных ДУС и акселерометров. В расчетах используются константы Параметров Земли 1990 года (ПЗ-90.02).

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

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

Бароинерциальный фильтр используется для коррекции текущей высоты и вертикальной скорости БИНС по данным бародатчика. Также основан на линейном дифференциальном уравнении.

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

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

В оригинальном приборе используется адаптивный расширенный фильтр Калмана. Этот фильтр оценивает угловую ориентацию, используя комбинацию информации ДУС, акселерометров и магнитометров. Акселерометры обеспечивают угловые измерения по отношению к гравитации Земли. Магнитометры обеспечивают угловые измерения, основываясь на измерениях магнитного поля Земли. В мануале от Analog Devices есть отдельные рекомендации для настройки точности в статике и отдельно для динамики, эти настройки задаются записью в память ADIS16480 данных по ковариации акселерометров и магнитометра, а также уровня шума и дрейфа ДУС. В общем случае эти настройки требуют дополнительного анализа модели движения объекта, на котором устанавливается курсовертикаль, а также специального испытательного оборудования. При использовании ADIS16480 c заводскими настройками при совместных испытаниях с нашим модулем он показал неудовлетворительные результаты, однако эти настройки позволяли сохранять устойчивость работы фильтра даже при сильных вибрациях.

Прежде чем использовать математику и алгоритмы в железе, все это было проверено при помощи математического моделирования. В математическую модель, кроме математики и алгоритмов навигации, были заведены: достаточно простая модель ошибок датчиков (в том числе ненули, гауссовский шум, размах измерения, разрядность АЦП и др.), параметры объекта движения (масса, коэффициент лобового сопротивления, площадь лобовой проекции). Траекторией для моделирования являлось движение по замкнутой линии типа коробочка, т.е., по сути, по квадрату, где координаты начала движения и его окончания совпадают. Сначала моделирование проводилось на чистом (невозмущенном) движении, а потом и при воздействии вибрации:

- синусоидального сигнала в канале ДУС частотой 10 Гц и амплитудой 5 гр/с.;

- синусоидального сигнала в канале ДУС частотой 50 Гц и амплитудой 4 гр/с.;

- синусоидального сигнала в канале ДУС частотой 500 Гц и амплитудой 3 гр/с.;

- синусоидального сигнала в канале ДУС частотой 1000 Гц и амплитудой 2 гр/с.

Отдельным любопытным экспериментом было моделирование работы наших алгоритмов при подаче на их вход реальных сырых данных датчиков ADIS16480, которые были записаны в телеметрию в ходе полетов БПЛА.

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

Разработка и отладка программно-математического обеспечения в среде CM-Lynx и ОСРВ MACS

Разработка и отладка ПМО велась в проприетарной среде Миландра CM-Lynx. Все ПМО написано на C/C++ с редкими вкраплениями ассемблера.

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

- Вытесняющий алгоритм планирования на основе приоритетов;

- Стандартные средства синхронизации потоков:

Мьютексы,

Семафоры,

События,

- Средства для организации межпоточного информационного обмена (очереди сообщений).

Нужно признаться, что в данном случае, при применении нашего же ЦСП K1967ВН04BG выбора не было ни в среде, ни в ОСРВ. Не без некоторых трудностей, но проект был завершен, отлажен и стал живым организмом.

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

ЦСП 1967ВН04BG работает с тактовой частотой 200 МГц (при максимально возможной 230). Ядро процессора содержит два вычислительных устройства, называемых вычислительными модулями. Каждый вычислительный модуль содержит регистровый файл и четыре независимых вычислительных блока: ALU, CLU, умножитель и сдвиговое устройство. Вычислительные блоки способны обрабатывать данные в нескольких форматах представления с фиксированной и плавающей точкой. Форматы данных с плавающей точкой: 32-битное обычное слово (float); 64-битное двойное слово (double); 40-битное расширенное слово. Операции с плавающей точкой выполняются с одинарной, двойной и расширенной точностью, и все эти возможности реализованы аппаратно. Кроме того, у процессора развитая периферия: 3 канала интерфейса SPI, 2 канала UART, 2 резервированных канала магистрального интерфейса ГОСТ52070-2003 (МКИО), интерфейс ARINC, содержащий в своем составе восемь приемников и четыре передатчика по ГОСТ 18977-79 и некоторые другие интерфейсы, а также множество каналов DMA.

Испытания

Испытания проводились в основном на квадрокоптере.

Установка 2-х инерциальных систем на квадрокоптере при проведении сравнительных испытанийУстановка 2-х инерциальных систем на квадрокоптере при проведении сравнительных испытаний

В каждом испытании два модуля (наш и ADIS16480) были жестко закреплены друг относительно друга, и их соответствующие измерительные оси были коллинеарны c допуском 34 угловых градуса. Все испытательные включения происходили также одновременно, при этом в качестве эталона использовались данные географических координат и скоростей, получаемые от приемника спутникового навигационного сигнала. Еще одной опорой для анализа являлось то, что начальные и конечные координаты и угловые положения аппарата совпадают с визуальной точностью. На основе данных о географических скоростях от приемника спутникового навигационного сигнала (при достаточно интенсивном движении) мы получали данные об истинном курсе на траектории движения без учета так называемого угла сноса. Была специально выбрана траектория движения коробочка, где направление движения каждого участка этой коробочки максимально совпадало с направлением на одну из сторон света: север, юг, восток или запад, путевая скорость составляла при этом 36 км/ч. Наш модуль производил счисления координат и углов в чисто автономном режиме (без поддержки от приемника сигнала GPS/ГЛОНАСС).

Результаты испытаний одного из лётных дней в декабре 2020-го годаРезультаты испытаний одного из лётных дней в декабре 2020-го года

Здесь первые три верхних графика углы, счисленные ADIS16480, три нижних счисленные нашим БИНС. На участках прямолинейного движения заметно, как накапливается ошибка углов тангажа и крена ADIS16480, либо наоборот, они как бы медленно приближаются к истинному. Т.е. характеристики этих углов ADIS 16480 не в полной мере соответствуют физике полета квадрокоптера. При этом те же углы БИНС адекватно соответствуют этой физике.

Частота обсчета углов и координат - 1000 Гц. Температура воздуха -8 С. Приведенные в таблице максимальные ускорения, полученные по данным нашего модуля, во всех осях достаточно велики, при этом зарегистрированные по данным ADIS16480 максимальные ускорения не превышали 45 м/с2 по оси Y, а по остальным осям составляли менее 25 м/с2. Это объясняется расположением испытуемого нашего модуля БИНС, который имел приличное отстояние от центра масс коптера, когда как расположение ADIS16480 практически совпадало с этим центром масс. То же можно сказать и об угловых скоростях максимальная угловая скорость у ADIS16480 по сути не превышает 100 гр/с.

Заключение

Проект по разработке собственной бесплатформенной инерциальной навигационной системы можно считать удачным. Мы пошли дальше простого повторения курсовертикали на замену ADIS16480. В данный момент изготавливаются несколько таких модулей в вариантах исполнения с диапазонами измерения ДУС: 450 и 250 гр/с.; и с диапазонами измерения по акселерометрам: 2, 5 и 10g. Предполагается испытать их не только на квадрокоптере, но и на других беспилотниках, и на самолете Як-12. Есть версия для автомобиля, с урезанным количеством датчиков и диапазоном их измерения. Также в плане разработка собственного полетного контроллера для БПЛА ответственного применения коптеров и конвертопланов.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru