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

Prikupets
Vad64:

А этот Пикбейсик - бесплатный софт или как? Есть ли в нем симулятор? Где можно посмотреть описание?

Я может упустил что-то, но почему бы не написать на C ? Если отбросить извраты, но его базовая часть (логика, арифметика, простые типы) не сложнее Бейсика. К тому же есть тип double, библиотеки и нормальные комиляторы (PICC например). Контроллер лучше брать из серии PIC18, например PIC18F252 - у него 16k команд (32k bytes) и 1.5kb RAM, Serial, 5 ADC, Freq до 25 MHz или 40 Mhz с учетверителем такатовой. Цена около 250р. Программатор WinPic800, железо у меня Tait LPT.

vovic
Prikupets:

Я может упустил что-то, но почему бы не написать на C ?

Я уже писал - если писать на С - надо писать всю программу. В т.ч. отработку прерываний, чтение и декодирование NMEA, декодирование входного РРМ-сигнала, формирование выходного РРМ-сигнала, отработку подстроечных параметров по пути перекладки, реверсу и коэффициенту передачи на серву руля.
Если на пиковском ассемблере или пикбейсике - надо написать только расчет азимута. Все остальное уже написано, ОТЛАЖЕНО и ИСПЫТАНО в полете!
Впрочем, возможно на С написать расчет азимута, откомпилить его в ассемблер пика и вставить кусок в программу. Но я тоже не потяну - С не знаю.

PigTail

Хм… там книга у производителя энтого бэйсика и в оной упомянуто что он long intеger в 32 бита жует и с чем Вы хотите извращаться c 24-мя, косинус и сунус в библиотеке тоже вроде есть или точности не хватает?

Psw
vovic:

Я уже писал - если писать на С - надо писать всю программу.

Так а много язычные проекты разве кто-то отменял ?
Написать на С функцию с нужным входом/выходом ( вплоть до Вход = Текст NMEA Широта/Долгота и Выход = азимут/расстояние до цели) откомпилить и встроить её в готовый проект.
Немного гемор связывать воедино, зато не нужно всё переписывать.

vovic:

Впрочем, возможно на С написать расчет азимута, откомпилить его

Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.
А нацеливать лучше на совместимый по выводам (к исходному проекту) пик18 - ресурсов больше. Наверняка Микрочип пик басиц компилит и для пик16 и пик18.

vovic:

Я брал бесплатно вот тут - это форум поклонников PIC

Вовик, так а быть может не поленишься кинуть в меня ентим Микрочип пик басицом или ссылкой на него? Потому как у меня парочка есть, но какие-то они странные, меня не особо завели. Но они не Микрочип, который насколько я понял в МпЛаб ихний интегрится. А к МпЛабу я уже как-то привык.

vovic:

Как всегда - недостатка в советах нет, но вот помоч - это всегда дифицит.

Ну я как обычно готов орать “ДАЙ” какую-либо исходники/прогу для пика или атмела уже тоже - купил мег несколько штук для опытов. А программатор Тритон у меня их одинаково хорошо шьёт. А для пика ещё и внутрисхемный программер/отладчик прикупил на Микрочипе через СГиба с очередной посылочкой - так что бета тестер/ковырятель исходного кода из меня хоть какой-то.
P.S.
2 Вано:
А про антенну BU353 - на самой антенне пайку якобы трогать нельзя. Толстый Проводок с ентой пайки в антенне протыкает модуль насквозь. Вот с обратной стороны платы его и надо отпаять. На моих фото выше в ентой теме как сейчас помню хорошо видна ента капля припоя на плате - гораздо больше и корявее всех остальных. Антенна кстати приклеена к экрану - енто доп гемор. Я когда (подантенный) экран отпаивал не снимая антенны подрезал нечаянно кондёр в уголке платы. Но без него тоже работает.
А потом уже можно и центральный антенки паять.
А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ? Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?
А то я выход нашёл, а вот вход найти не получилось почему-то. По минимуму достаточно, но программить только по USB пока что.

Boriska62
Psw:

Ну ту же скорость интерфейса и интервал обновления ? Или 10 Гц можно только по Сирф Бинари брать, а по NMEA он так и будет вещать - 4800 бод 1 Гц обновления ?

Я эксперементировал с PocketLoox520, в нем именно sirf3 стоит. Мне удавалось его и в sirfbinary и в NMEA режимах переключать на скорости обмена до 57600. Вот по скорости обновления сказать ничего не могу, не пробовал.
Недавно прикупил модуль ET-301 для subj. Буду его мучать в ближайшее время.

Psw:

А кстати, сирф-3 можно заставить запомнить параметры обмена, или каждый раз после подачи питания нужно программировать ?

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

vovic
Boriska62:

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

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

Psw:

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

Вот тут подробная инструкция по инсталляции бесплатного компилятора Пикбейсика поверх бесплатной MPLAB:
www.microchip.ru/phorum/read.php?f=2&i=131857&t=13…
Там есть все необходимые ссылки. Я делал все точно по ней - и все работало. MPLAB я брал версии 7.40.Важно правильно пути прописать, где будет компилируемый текст.

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

Psw:

Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.

Был бы очень рад. Но у него пока другие интересы. Жаль.

Psw

Вовик, за ссылочку спасибо, весьма информативна.

vovic:

Был бы очень рад. Но у него пока другие интересы. Жаль.

У всех другие интересы - трудно жить только электроникой/моделизмом.
Однако же надо не только деффчонок жарить и пиво зло употреблять, надо ещё и проги ковырять для само обучения/удовлетворения.
Одним словом, мне надо пик басиц для комплекта ставить. Правда, я думал, что он от Микрочип. А ентот ПикБасицПро от www.microengineeringlabs.com у меня уже был. Правда, к МпЛабу для построчной эмуляции я его так и не подвязал. Теперь буду пробовать. Ну и страничка с готовыми проектиками на ПикБасице тоже весьма содержательна, наверное.
P.S.
А в BU353 вроде вместо ентой батарейки СуперКонденсатор ионный стоит.
Ну типа - на какое-то время он питает бортовые часы для быстрого старта.
Хотя действительно ничего не стоит литиевую таблетку туда замонстрячить, если енто “какое-то” время окажется слишком малым.

vovic
Psw:

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

К модулю u-blox я примострячил CR1220 где то в апреле месяце. До сих пор все ОК. Она при включении девайса подзаряжается. Горячий рестарт очень полезен, когда в перевернутом полете GPS приемник теряет спутники. Пропадает всего около 5 секунд реальных координат после возврата планера в нормальное положение.

Prikupets

Цитата(Psw @ Dec 15 2006, 02:26)
Вот и я о том. А в помошники как минимум Прикупеца взять - он добрая душа потому как.

vovic:

Был бы очень рад. Но у него пока другие интересы. Жаль.

Интересы не изменились. А вот время не хватает тотально. Даже спать приходится по 5-6 часов. Моделизм отдыхает. Работа блин все съедает… Щас сам пытаюсь потихоньку портировать свою GPS прогу на 18F252-PIC.

Unav

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

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Гц с которыми приемник выдает данные
то что идет наружу это мнгновенное значение фильтрованного сигнала.

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