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

Dfyj

Нет, не путаешь, так и пишут 😃

Как на нем антенну снять ? нужно пипку по центру в антенне распаять ?

vovic
Psw:

А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.

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

PigTail

А никто кстати путных ссылочек на материалы по подобным рассчетам не подбросит?

Unav

Ладно, синусы/косинусы и обратные посчитаем по рядам Тейлора.
Просмотрел код rcap и не увидел там формата чисел с плавающей точкой.

В ПикБейсике только целочисленная математика?
Или всё-же плавучка есть?

vovic

Плавающую - это через подгружаемые библиотеки - там места может не хватить.
Было бы замечательно написать все в целочисленном варианте. У меня там возникла проблема с разрядностью. Дело в том, что формат координат по долготе, к примеру, таков: ГГГ.ММ,МММ - Это семь с половиной десятичных знаков, что в двоичном варианте составляет 24 разряда. Поэтому считать разницу текущей координаты и координаты цели уже непросто в целочисленной арифметике. Надо изголяться. А я - не умею. Отбрасывать младший разряд - нельзя.
Единственное допустимое упрощение - это ограничиться только северной широтой и восточной долготой.

Вторая проблема - есть готовый кусочек кода кусочно-линейной аппроксимации функции арктангенса -
www.dattalo.com/technical/software/…/arctan.asm
С нормальной точностью. Но он только для октета - 0-45 градусов. К нему еще надо дописать сведение 0-360 градусов через изменение знака и дополнение. Кроме того, чтобы избежать деления на ноль, надо написать отработку выколотых точек - их четыре - это когда цель и модель находятся точно на одной широте или долготе.

Почему я зациклился на этом? Да потому, что, если расчет азимута таки написать на пике, то дальше отлаженный на столе кусочек кода просто вставляется в готовый девайс - и можно лететь! 😃

Vad64
vovic:

Плавающую - это через подгружаемые библиотеки - там места может не хватить.
Было бы замечательно написать все в целочисленном варианте.

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

vovic

Я брал бесплатно вот тут - это форум поклонников PIC:
www.microchip.ru/phorum/
Там дадут ссылочки и посоветуют.
Там отладочная оболочка неплохая есть. Но все равно - нужно соображать.

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

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