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

Prikupets
Dfyj:

Мне кажется, что с учетом того что ГПС имеет погрешность ±10м то будь то 1 или 2 или пол секунды
огромной роли не сиграют.

Ведь даже при большом количестве принимаемых спутников, около 5-6 спутников , сидя\стоя на месте , координата в 3D пространстве всёравно меняется !

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

Возможно, прогу и можно прошить в GPS. Я видел всякие SDK вроде под проци в GPS. Возможно, опытный serj скажет более подробно 😃

Dima-dim

Могу посоветовать зайти сюда www.uav-dpla.narod.ru и связаться с хозяином. Вся аппаратура самодельная и самолет тоже, может он подскажет чего… Я видел как это летает, любо дорого посмотреть. Уводят по дальше, задают на ноутбуке точку, выключают передатчик, и он сам возвращается в эту точку и кружит на одном месте пока не получит команду чё ему дальше делать.

Unav
vovic:

Как называется приемникGPS, позволяющий программировать PWM - сигнал?

Приёмник фирмы Javad Navigation Systems с процессором Motorola MPC566.
Весь автопилот реализован непосредственно в GPS приёмнике.
Сначала работал на частоте 1Hz, но оказалось мало для ровной езды.
Сейчас позиция считается 10Hz по методу наименьших квадратов ( без Калмана )
Шум позизии около метра-двух
Фильтруется только направление скорости на интервале 0.5 сек

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

Подключил GPS и RF приёмники к рулевым машинкам через мультиплексор.
Теперь одни каналы могу отдать на время GPSу (курс), а другими управляю с передатчика (тяга, высота). Легко отрабатывать посадку.

Psw
Unav:

Приёмник фирмы Javad Navigation Systems с процессором Motorola MPC566.
Весь автопилот реализован непосредственно в GPS приёмнике.

Получается, что люди, способные понимать/модифицировать внутренности ГПС всё-таки есть в природе.

Unav:

Сначала работал на частоте 1Hz, но оказалось мало для ровной езды.
Сейчас позиция считается 10Hz по методу наименьших квадратов ( без Калмана )

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

Unav:

Шум позизии около метра-двух
Фильтруется только направление скорости на интервале 0.5 сек

Ну про шум мне трудно сказать, но точность без ВААС минимум который пишет ГПС - 4 метра.
А ВААС вроде как только над Штатами работает.

Unav:

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

Хочу сказать простое и надоевшее слово “ДАЙ”. Можно в личку, можно здесь. Если вообще можно. Ну то есть тоже хочется попробовать на мини кваке ну и быть могет на электро планере ушастом в будущем.

Unav:

Подключил GPS и RF приёмники к рулевым машинкам через мультиплексор.
Теперь одни каналы могу отдать на время GPSу (курс), а другими управляю с передатчика (тяга, высота). Легко отрабатывать посадку.

Ну енти детали реализации важны, если на “Дай” найдётся ответ " Возьми".
Желательно с исходниками естественно. Потому как самому изобретать ентот велосипед силёнок-то может и не хватить.
Однако всё-равно радует, что хоть кто-то могёт, хоть для какого-то частного случая проца в ГПС. Особенно про ненавистные 1 и 10 Гц расчета позиции/принятия управляющих решений.
В идеале (не бюджетном) мне кажется данные с нескольких ГПС антенн/модулей разнесенных/разноориентированных по квадрату крылья/фюз обсчитывать в одном процике с учетом разницы их пространственного положения.
Хотя лично я в ентой математике как детёныш.

Vad64
Psw:

Получается, что люди, способные понимать/модифицировать внутренности ГПС всё-таки есть в природе.

По-моему, не столь суть важно, где живет клиентская программа - во внешнем процессоре или подгружается к ядру в процессор GPS. Главное, чтобы сам приемник мог выдавать координаты чаще, чем раз в секунду. JavadNS, судя по мануалам, могут работать до 100Гц, но цены на их приемники измеряются в тысячах $$

vovic
Unav:

Приёмник фирмы Javad Navigation Systems с процессором Motorola MPC566.
Весь автопилот реализован непосредственно в GPS приёмнике.

Мнда… Размерчик великоват. В таком формате и с таким весом есть готовые навигаторы с удобным вводом и отображением маршрута. Однако на борт планера такой девайс не поместить.
Скажем, вариант использования штатного дешевого eTrex с RCAP получается по габаритам меньше, а по весу - столько же. Так это с индикатором и многоточечным маршрутом.
Насчет частоты обновления - 4Гц запросто дают приемники u-blox, а больше оно и не нужно.

Psw
Vad64:

JavadNS, судя по мануалам, могут работать до 100Гц, но цены на их приемники измеряются в тысячах $$

Ну вот блин, а я то наивный полагал что ГПС до $100 стоимость. Какова же глубина моего заблуждения - цены ОТ $3 000 до $56 000. Ентот ценовый диапазон для модели Боинга 1:1 приемлемо наверное.
Хотя да, 100 Гц принятия решений ето конечно круто. Однако просто не по деньгам удовольствие. Ну то есть не игрушечное явно.
Так что моё “ДАЙ” снимается с обсуждения - не мой размерчик.
Зато судя по ценам и сложность исходной задачи вполне можно оценить.

Vad64
Psw:

Зато судя по ценам и сложность исходной задачи вполне можно оценить.

Если исходная задача - приведение устойчивого аппарата в заданную точку с точностью в несколько десятков метров, то вполне достаточно скорости и точности дешевого GPS приемника, как правильно заметил vovic.

Unav

Сам приёмник точно не бюджетный и преднозначен для другого сектора.
Поэтому и дал название фирмы.

Антенну поставил “ширпотребовскую” GlobalSat 4см. в диаметре
одночастотную с магнитиком.

Позиция считается без всяких WAAS дифференциальных систем.
Т.е. с точки зрения позиции всё по-честному.

Просто мне удобно с ним обращаться.
Хотел прежде всего поделиться моей реализацией.
В процессоре MPC565/566 есть модуль Modular Input/Output Subsystem
На нём и запрограммировал PWM сигнал
Позицию пишу во внутреннюю память.
Используется только “голая” плата весом 150грамм.

Данный приёмник используется чисто в хоббийных целях без всех его возможностей.
Математика простейшая, нацеленная на микроконтроллер.
Просто у меня нет отдельного микроконтроллера (хотя в дальнейшем перейду на дешёвый GPS и отдельный контроллер), а есть дорогой приёмник.
Мне сейчас удобней использовать такой вариант (всё в одном флаконе).

Наверняка в других приёмниках можно сделать похожее.

Испытывался не сам GPS приёмник, а его реализация и, собственно, алгоритм автонавигации с простой математикой.
Коммерческие варианты не интересууют. Хочу сделать весь комплекс сам и с “подручными”
материалами с нуля, с чисто хоббийными целями.
GPS приёмник дорогой, но он у меня есть, и ипользую его как маленький компьютер с позицией.
вес - 150г.
Возможности GPS приёмника для расчёта сверхточной позиции не используются.
Т.е. он у меня как дорогой макет для будущей дешёвой реализации.

А вот на любые вопросы связанные непосредственно с автоуправлением отвечу с радостью.

Реализация мультиплексора:
Поставил нашу отечественную микросхемку К555КП12, стоимостью 10р.
Она умеет в зависимости от уровня управляющего сигнала подключать выход к одному из 4х входных цифровых сикналов.
Таким образом на входе мультиплексора
с радиоприёмника
1й канал - курс
2й канал - управление
с GPS приёмника - курс

Ко 2му каналу RC прёмника подключил регулятор оборотов. Выдаёт либо высокий либо низкий уровень для мультиплексора
На выходе мультиплексора сигнал либо с RC приёмника, либо с GPS. Управление вторым каналом с RC передатчика.
Также и тяга и т.п.
Таким образом в любой момент с RC пульта можно управлять курсом самому, либо брать с GPS.

vovic

Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Unav
vovic:

Давно ищу себе соучастника вот в таком деле. Есть готовый проект:
rcpilot.sourceforge.net/modules/rcap/index.php
С открытым софтом - исходники выложены на сайте.
Он хорош простотой и доступностью любому желающему. Мною испытан и отлажен. Но плох тем, что работает только с навигатором, задающим курс на цель. С обычными GPS- приемниками работать не может.
Цель замышляемого дела - модифицировать софт так, чтобы он смог работать с любой GPS-головкой.
Я заткнулся на том, что не смог написать расчет азимута на цель по известным координатам на Пикбейсике без библиотек функций. Ну, не программист я. 😊
Может кто возьмется помоч ?

Синусы/косинусы и обратные функции в Пикбейсике есть?

Vad64
vovic:

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

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

Psw
Vad64:

Если исходная задача - приведение устойчивого аппарата в заданную точку

Мною имелась ввиду сложность/дороговизна реализации задачи принятия управляющих решений 10-100 раз в секунду.
А по численным алгоритмам - енто конечно круто, не вопрос.
Но мне кажется всё-таки, раз уж в (пик) бэйсике нету обратной тригонометрии, всё-таки (хотя бы)математику писать на Сях, поскольку в стд либ есть потребные арк функции, ну а Си есть условно бесплатный.
Ну а всякие обработчики входного текста NMEA - можно и на асме.
Ну а о платформе как обычно два лагеря - АВР супротив ПИК (пора уже хоть 18).
И там и там приверженцы/сторонники/противники.
P.S.
А в BU353 асинхронный NMEA выход нашёлся под антенной, естественно. Лень фотать, но выход нашёл.
Но ещё даже к своей макетке 18пик+20*4 лсд не подключал, обработчик NMEA текста не писал - как-то не с руки было.
Кстати, про сирф-3 вроде до 10 Гц пишут обновление позиции, или я чего-то путаю ?

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.