Fail-Safe - Автопилот для полетов по камере

Unav

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

Например:
разница в 1 минуту
между
широтами долготами
Москва 1856 м 1058 м /метров
Воронеж 1855 м 1150 м /метров

serj
Psw:

Об ентом Серж насколько я понимаю только мечтает - увеличить частоту принятия решений с 1 Гц до 10 Гц хотя бы.

Однако всё-равно радует, что хоть кто-то могёт, хоть для какого-то частного случая проца в ГПС. Особенно про ненавистные 1 и 10 Гц расчета позиции/принятия управляющих решений.

Я мечтаю, чтоб хоть и на 0.5гц, но чтобы эта сволочь не тормозила по 6-7 а иногда и 10с в поворотах на скоростях 130-150км/ч, а то блин такие вилюшки получаются… в окружность 70м с трудом наводится, в 50м уже промахивается с первого раза., это ежели до точки меньше 350м и надо повернуть на 110 градусов и больше…
Если издалека наводиться или выписывать полукилометровые круги 😃 (что при такой скорости занимает всего 30с), отклонения курса и связанные с ними проблемы существенно уменьшаются 😃

Вовик, а у тебя на антарисе по отношению к визуальному положению на 130-150 км/ч наземной скорости как обстоят дела-не смотрел?

Мне тут на выставке наплели, что при равномерном движении при скоростях выше сотни (автомобиль на трассе) примерно 0.2% точек из упрыгивает с линнии пути километров на 5 в сторону, потом назад. Дескать проверено на автомобильных системах, и такое встречается в серии LEA постоянно. Насколько я понимаю, софт в TIM и LEA не особо отличается…

vovic
serj:

Вовик, а у тебя на антарисе по отношению к визуальному положению на 130-150 км/ч наземной скорости как обстоят дела-не смотрел?

Да записи ж полетов выложены - можно самому посмотреть. Визуально погрешность координат не превышает размаха крыла планера. Про автомобили - это ж совсем другое дело. Планер в лесу и между зданиями никогда не летит. Над ним всегда чистое небо (в смысле - радиопрозрачное). Поэтому точность очень высокая. На виражах с ускорениями 2 - 3g потери точности нет. Скорости - до 200 км в час, не думаю, что машины ездят быстрее.
Чтобы на автомобиле была аналогичная точность антенна GPS должна быть обязательно активной и расположена на крыше машины, желательно не на краешке, а ближе к середине.

Unav:

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

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

PigTail

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

vovic
PigTail:

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

Там пример вычислений на поле прямоугольных координат. При переходе к географическим можно в первом приближении использовать этот подход, домножив долготу на косинус широты.
Второй вариант рачетов (для машинных приложений) к сожалению не может обойтись без отдельного определения квадранта результата. Действительно, если в последней формуле принять равным дельта Х нулю, что фактически указывает на нахождении планера и цели на одной широте, то рекомендуемая формула вообще не учитывает, находится цель западнее или восточнее планера. Т.е. налицо неоднозначность результата с точностью до Пи-радиан, которую можно устранить только отдельным кусочком кода, разбивающем задачу на квадранты.
Так что без этого никак не обойтись
Что мне еще не понравилось в варианте с арккосинусом - отсутствие масштабируемости погрешности вычислений в зависимости от расстояний до цели. В варианте с арктангенсом остается постоянной относительная погрешность вычисления курса на цель, что весьма удобно для стабильной работы автопилота при прохождении координат цели. Зато надо отдельно отрабатявать особые точки, чтобы избежать деления на ноль. В варианте с арккосинусом особых точек нет, зато по мере приближения к цели растет относительная погрешность вычислений, что может дестабилизировать управление от автопилота при достижении цели.
Почему так важно поведение у цели? Если автопилот используется для спасения модели при помехах или отказе аппаратуры RC управления, то по достижении цели модель будет кругами и восьмерками летать над пилотом постепенно к нему приближаясь, создавая предпосылки к восстановлению линии командного управления и управляемой посадке у земли. Но это возможно только при стабильной отработке автопилотом управления вблизи цели.
Буду рад, если меня поправят.

PigTail

Понятно, что прямоугольные координаты, просто в данном учеьнике утверждается, что при размерах менее 22 км можно применять прямоугольные координаты.
Окончание формулки разве не делает результат однозначным ?
если ΔY => 0 , то α = a ,
если ΔY < 0 , то α = 360 - a .

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

serj
vovic:

Да записи ж полетов выложены - можно самому посмотреть. Визуально погрешность координат не превышает размаха крыла планера. Про автомобили - это ж совсем другое дело. Планер в лесу и между зданиями никогда не летит. Над ним всегда чистое небо (в смысле - радиопрозрачное). Поэтому точность очень высокая. На виражах с ускорениями 2 - 3g потери точности нет. Скорости - до 200 км в час, не думаю, что машины ездят быстрее.

дык, по записям ничего не понятно, т.к там нету видео 😃 я имею в виду не пропадание позиции и потерю точности, а отставание по времени 😃,

Пример- , скорость воздушная 120, наземная пусть 160,(летим по ветру) , пошел разворот с угловой скоростью примерно 30- 40 градусов/с, то есть разворот на 180 градусов займет около 5-6 секунд. как при этом ведет себя gps относительно реального (визуально) положения планера ?

У нас при визуальном и “инерциальном” анализе поворота, в зависимости от ускорения в повороте идет отставание курса и позиции от реальной на 3-7с!

Косвенно это можно определить по “плотности” (равномерности распположения на треке) точек в поворотах- если воздушная и угловая скорость не менялась, а ветер составляет процентов 20-30 от скорости планера, то на треке поворот должен выглядеть почти идеальным яйцом (то бишь эллипсом.) 😃

При запаздавании курса и позиции (когда ускорение нарастает примерно до 1.5g) расстояние между точками идет неравномерно- по треку видны рывки скорости, а по логам с самого приемника их нету!

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

vovic
serj:

У нас при визуальном и “инерциальном” анализе поворота, в зависимости от ускорения в повороте идет отставание курса и позиции от реальной на 3-7с!

Трудно представить себе механизм запаздывания. Конечно, в GPS-приемнике есть конвеер вычислений, однако его время задержки не более цикла вычислений - т.е. при потоке отсчетов 1Гц время задержки не более секунды. Это по отношению к результату, выдаваемому по NMEA. Что же касается средств отображения на экране навигатора на карте - там такие задержки запросто возможны - но они нас мало волнуют. Автоматика будет получать свежие данные по NMEA. Где задержки нет. 😒

pdk
vovic:

Трудно представить себе механизм запаздывания.

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

Фильтр Калмана для чайников
Еще можно почитать Wiley - Global Positioning Systems - Inertial Navigation And Integration
в сети нет, но могу поделится

vovic
pdk:

Как раз ничего трудного - в GPS приемнике стоит фильтр калмана, он и дает запаздывание.

Но не более чем на цикл. Одна секунда погоды не делает - планер на крейсерской скорости 80 км в час пролетит не на цель, а в 20 метрах от нее - ну и что? По моему - это не проблема для применения по названию этой темы.

pdk
vovic:

Но не более чем на цикл.

тактовая частота фильтра гораздо выше тех 1-5Гц с которыми приемник выдает данные
то что идет наружу это мнгновенное значение фильтрованного сигнала.

С циклом выдачи задержка никак не связанна, она определяется только реализацией фильтра, его “постоянной времени”

vovic
pdk:

С циклом выдачи задержка никак не связанна, она определяется только реализацией фильтра, его “постоянной времени”

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

pdk
vovic:

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

только это не “задержка в вычислениях.”, а переходной процесс фильтра
( по данным serj задержка достигает 7сек, понятно что настраивать выдаче NMEA на самолете на 8-10сек неприемлемо )

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

vovic
pdk:

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

Насколько я понял из фирменного описания u-blox там модель проста до безобразия - прямолинейное движение. Ширина полосы пропускания фильтрации Кальмана, в рамках которой отрабатывается криволинейное движение, предустановками задается четыре ступени, в зависимости от ускорения объекта на виражах. Соответственно, меняется шум фильтрации на отступлении от модели - чем шире полоса пропускания, тем больше шум координат на вираже. Если вираж делается с бОльшим ускорением, чем полоса пропускания фильтра Кальмана - происходит потеря положения. Я это регулярно наблюдаю на старте с лебедки - планер отпускается из рук, когда усилие леера больше 10 кГ - это при весе планера в 2 кГ дает ускорение больше 5g. Очень часто на записи логгера в момент старта есть потеря положения GPS-вычислителя. Еще такое бывает на кивке динамостарта с лебедки. Но гораздо реже.
Реальные опыты с автопилотом RCAP на местности показали неплохую точность наведения на цель даже с GPS-приемником eTrex, который выдает координаты раз в 2 секунды. Мне кажется, что для полетов моделей планеров и самолетов проблема точности GPS не стоит вообще.
Проблема - написать код. 😃

Prikupets
vovic:

Реальные опыты с автопилотом RCAP на местности показали неплохую точность наведения на цель даже с GPS-приемником eTrex, который выдает координаты раз в 2 секунды. Мне кажется, что для полетов моделей планеров и самолетов проблема точности GPS не стоит вообще.

Спасибо за исследования, эта инфа для меня важна!

vovic
Prikupets:

Спасибо за исследования, эта инфа для меня важна!

Вселяет надежду.
Если будете браться, то просьба, ориентироваться на формат NMEA сообщение $GPRMC . В нем есть и текущие координаты и текущий курс модели. Надо только добавить расчет курса на цель.
Почему такая просьба? - Для живучести решения во времени. Как показывает жизнь - эта сфера очень подвижна, вчерашние фавориты можно завтра уже не найти на рынке средств GPS. Поэтому привязка к самому расхорошему, но собственному стандарту производителя через 3 года может стать недоступной для повторения. А самое ценное решение - свободное для повторения любым желающим.
Готов помочь во всем, что потребуется.

PigTail
Vad64:

А реально ли, скажем, в Москве купить в розницу какой-нибудь OEM GPS модуль с документированной системой команд и форматом данных? Если да, то где, как и сколько это ориентировочно будет стоить?

Пробую приобрести ЕМ-406 в геопарке, обещают 2 неделю, что должны появиться, пока ждемс, как появятся могу свиснуть или взять на Вашу долю, у них доставка по Москве, потом заберете, как удобно будет, цена на сайте 55 баксов. Документация довольно скудна, но лежит на сайте На англицком не менее краткое описание тоже можно найти на Глобалсатовском сайте, кроме NMEA еще могет общаться собственным протоколом чипсета, возможности протоколов пока не сравнивал. Собственно файлы с описаловкой:

serj

Вовик так и не ответил, оценивал ли он динамические характеристики (запаздывание) у антариса 😃

Ну да ладно. Придется выяснять в реальных полетах 😃.

А на планере плавно летающем только по gps задержки скореее всего не превысят 2с- там ускорения невелики 😃.

Prikupets
vovic:

Вселяет надежду.
Если будете браться, то просьба, ориентироваться на формат NMEA сообщение $GPRMC .

Так и делаю 😃

Psw
serj:

Вовик так и не ответил, оценивал ли он динамические характеристики (запаздывание) у антариса 😃

Ну да ладно. Придется выяснять в реальных полетах 😃.

А на планере плавно летающем только по gps задержки скореее всего не превысят 2с- там ускорения невелики 😃.

От себя могу подтвердить задержку между визуальным положением ЛА и положением ГПС выданным еТрексом ( прохождение желаемой точки приземления парапрыгеров)
Задержку оцениваю около 2-5 секунд, что для парапрыгеров не существенно. При оценке полёт прямолинейный, воздушная 130-160 (АН-2 родимый), по земле от ветра, без ощущаемых перегрузок.
И ещё у меня есть предположение, что ГПС вертикаль и грави вертикаль не соосны.
Ну то есть точность/ошибка ГПС при проходе над целью высота 100 метров визуальный угол на цель меньше, чем когда на 2000 метров - тогда ГПС сильнее в бок уводит. Хотя опять же для парапрыгеров с бортовым интеллектом и самонаведением на цель енто тоже весьма не существенно - отличие гораздо менее 10 градусов и его вообще можно списать на глюки визуальной оценки пилота ЛА, который на ентом ЛА ближайшие лет 20 заходы для парапрыгеров и делает. А вот для прицельного бомбометания ну никак не годится.
В еТрексе использовал экран Направление/Расстояние до точки. Более Половины неба экранировались кабиной АН-2, спутников 5-6 с хорошим сигналом, только они меняются быстро.

Psw

Ну вот, редактирование в течение часа:
“Обнаружена ошибка:
У вас нет прав редактирования этого сообщения
Данные сообщения успешно сохранены!”
А если у меня сложное редактирование ? Короче, пришлось вторую мессагу в догонку:

Unav:

Код на С++ вычисление азимуна и расстояние между точками.

Прикольно, коды. Правда, код СРР не особо применим в данном случае, насколько я понимаю.
Потому как для ентих МК Си по проще будет, для примера студенческая 60 дней версия Си для 18 ПИКов ну и документация к нему.
Ну и MPLAB с сайта Микрочип тоже пригодится для исследований.

Unav:

Когда осилю Пик - перепишу на пикбейсике

Да ПИК как таковой осиливать особо и не нужно - надо, что-бы код на функции на Си хоть какую-либо компиляцию проходил как проектик в МпЛабе для отсутствия несоответствий синтаксиса. А обращения к аппаратным ресурсам надо в других местах/прогах делать или оно уже в бэйсике есть. В бэйсике нету обратной тригонометрии и нормальной точности, зато она есть в библиотеках для ПикСи18.
А на входе в Си функцию как я уже говорил можно две пары координат иметь - стартовую и текущую (например прямо в тексте NMEA), а на выходе быть может - байт курса на цель (360 градусов= 0 градусов = 256 = 0) и пара байт расстояния до цели в метрах.
Хотя с параметрами функции быть может Вовик подскажет/уточнит, на что там в RCAP упор делается - на какие параметры бэйсик расчитывает и в какой они форме.