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

vovic
Prikupets:

У меня уже есть прога на компиляторе PICC для PIC16F688 которая вычисляет азимут и расстояние на базу. RCCAP-алгоритм позволит по ней доворачивать одной сервой.

Как бы взглянуть на исходники?

Vad64
vovic:

😃

> арктангенс от отношения разности координат по долготе и широте
Это не вполне корректно. В зависимости от широты вклад градуса долготы разный.

> оперируя с разрядностью в 24 двоичных разряда
Зачем такие точности? Азимут на базу нам нужен с точностью в проценты. Абсолютные координаты - да, имеют большую разрядность. Но их надо только вычесть друг из друга, а дальше точность особой роли не играет. Я бы поступил так: по знакам дельт широты и долготы, а также по сравнению их модулей определил бы октант угла, а также вырожденные точки 0, 90, 180 и 270. Дальше просто поделить меньшее на большее (fractional деление). Если точка не вырожденная, то определить угол внутри октанта просто по таблице. Окончательно угол вычислить с учетом октанта.

Если непременно хочется посчитать, то можно использовать Си с math библиотекой. Обычно там есть float и double. Про PIC компиляторы, правда, не знаю.

vovic
Vad64:

> арктангенс от отношения разности координат по долготе и широте
Это не вполне корректно. В зависимости от широты вклад градуса долготы разный.

> оперируя с разрядностью в 24 двоичных разряда
Зачем такие точности? Азимут на базу нам нужен с точностью в проценты. Абсолютные координаты - да, имеют большую разрядность. Но их надо только вычесть друг из друга, а дальше точность особой роли не играет.

Да я знаю про широту - она в моих широтах особой роли не игает(фиксированный множитель 1,3).

А вычитать просто так с малой разряднотью нельзя. Может оказаться долгота модели 29 градусов 59,999 минут, а точки возврата 30 градусов 00,001 минут. Поэтому до вычитания нужна полная разрядность координат, а это 7 десятичных разрядов. Вблизи точки возврата нужна высокая точность - до 0,001 угловой минуты географических координат, тогда точка будет отрабатываться восьмерками виражей. Это очень удобно, если проблема с дальностью канала - когда какой-нибудь злыдень включит передатчик на вашем канале. Тогда планер сам прилетит на точку старта и будет восьмерками постепенно снижаться, пока не попадет в зону уверенного приема вашего передатчика.
В теме rcopen.com/forum/f37/topic42591
есть записи реальных полетов моих планеров. Если запись открыть в Exelе , то последний столбик - высота планера в дециметрах, а два предыдущих столбца - географические координаты в формате ХХ градусов YY,YYY минут по долготе и широте. Можете посмотреть как реально меняются эти данные в полете модели. Там видна и целесообразная точность вычислений.

Vad64
vovic:

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

Вычитать - конечно, нельзя! Еще раз повторю свою мысль: точность абсолютных координат важна. Но над ними делается только простая операция (вычитание). Дальше такая высокая точность не нужна, поскольку результат арктангенса нам нужен с точностью в проценты и его можно вполне брать по таблице. Причем выгодно бить круг именно на октанты, тогда результат деления дельт всегда будет в диапазоне от 0 до 1. Если одна из дельт близка к нулю (или гораздо меньше другой дельты по абсолютному значению), то это можно считать вырожденной точкой. Таким образом, имеем точное вычитание, точное сравнение абсолютных значений и знаков, неточное деление, поиск по таблице длиной в несколько десятков значений и коррекция по октанту. Т.е. все довольно просто.

vovic
Vad64:

Т.е. все довольно просто.

Просто программисту, но не мне. 😦
Мне уже помогли надыбать кусочек готового кода кусочно-линейной аппроксимации:
www.dattalo.com/technical/software/…/arctan.asm
Как раз для октетов.
Но у меня опыта не хватает все это вместе объединить и встроить в уже готовую программу RCAP.

Prikupets
vovic:

Как бы взглянуть на исходники?

Извините, только в 4 часа прошлой ночи заработало. Понятность кода соответствующая 😕

GPS.zip

Vad64

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

vovic
Prikupets:

Извините, только в 4 часа прошлой ночи заработало. Понятность кода соответствующая 😕

Спасибо, поразбираюсь. Для начала вопрос, а зачем Вы читаете два NMEA-сообщения, если в GPRMC есть и координаты и текущий курс? Разве не проще и короче читать одно сообщение?

Vad64:

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

Для наших приложений лучше всего использовать стандарт интерфейса NMEA. Для целей навигации автопилота лучше всего подходит строка $GPRMC. Ее поддерживают практически все GPS-приемники любых фирм.
Спецификаця стандарта есть в сети www.navgeocom.ru/support/nmea/index.htm
Если есть интерес - могу прокоментировать его.
Купить OEM GPS в Москве - как за хлебом сходить.

serj

Во, Андрей уже автопилот строит 😃
Я даже предполагаю их будет два- по числу работающих на данный момент приемников 😃😃

на дельтаплане, на котором ты летаешь- очень плохо получится 😃 а вот на планере , как у Володи- вполне. надо что- нибудь большое, самолетящее, желательно ушастое- тогда и через атлантику перелететь можно. 😃

P.S а чего это у тебя в конце файла nmea мои координаты указаны? 😃 это явно неспростааа… 😃😃

Prikupets
Vad64:

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

Конечно - 1500 р.

serj:

Во, Андрей уже автопилот строит 😃
Я даже предполагаю их будет два- по числу работающих на данный момент приемников 😃😃

на дельтаплане, на котором ты летаешь- очень плохо получится 😃 а вот на планере , как у Володи- вполне. надо что- нибудь большое, самолетящее, желательно ушастое- тогда и через атлантику перелететь можно. 😃

P.S а чего это у тебя в конце файла nmea мои координаты указаны? 😃 это явно неспростааа… 😃😃

почему два ? 😁

почему плохо получится ? Из-за ветра ?

координаты - это я добивал память до 4k - у меня программатор глючил на неполной прошивке 😃

serj

если у тебя нету инерциалки, самолет должен лететь сам, если бросить ручки, и не завалиться в спираль,если имеет место небольшой крен, или еще куда нибудь- 😃. и скорость желательно поболе, а то против ветра не улетит…

Driver-NN

Во время поворота самолета на заданный курс нужно будет знать текущий курс в реалтайме. Иначе, придется подбирать коэффициенты для конкретного дрынолета при конкретной скорости в конкретную погоду 😕 . Для быстрого определения текущего курса может помочь трехосевой магнитометр.
Почитать про магнитометры можно здесь . Так же имеется довольно приличное описание проекта автопилота с магнитометрами HMC1022+HMC1021. Правда, весит этот проектец под 8 метров и проц там ARM7-TDMI. Пока выкладываю фрагмент исходничка для магнитометра и навигации. Если будет интерес, выложу все остальное.

code.rar

Psw

Тема живая - что не может меня не радовать.

vovic:

Купить OEM GPS в Москве - как за хлебом сходить.

А я вот чего-то не нашёл в Москве ОЕМ Sirf Star-III приемничка, по ентому пришлось прикупить парочку в корпусах:
Голубозубый и USB версии. Ну у голубозубого на контактах мини-USB разъёма похоже асинхронный сигнал сидит - потому как с обычным USB кабелем девайс то появляется то пропадает и ничего не определяется, а для USB идет только фирменный шнурок с конвертором посередине. А вот с USB версией у меня прокол - разобрал, а там - хрен чего разберёшь/отличишь, где там USB конвертер, а где - собственно GPS приемник. (Быть может Серж подскажет по фоткам, чего там надо от чего раздраконить) По ентому при необходимости подключать по USART придётся пользовать голубозубый, хотя он и дороже. Зато возможен дистанционный контроль на старте - наверное.

Prikupets
serj:

если у тебя нету инерциалки, самолет должен лететь сам, если бросить ручки, и не завалиться в спираль,если имеет место небольшой крен, или еще куда нибудь- 😃. и скорость желательно поболе, а то против ветра не улетит…

Я других самолетов и не держу, только те, что летают с брошенными ручками. Пилотаж и фанфлай не для меня 😃 Так что рулить можно и хвостом.
А в сильный ветер я не пускаю.

vovic
Psw:

Тема живая - что не может меня не радовать.

А вот с USB версией у меня прокол - разобрал, а там - хрен чего разберёшь/отличишь, где там USB конвертер, а где - собственно GPS приемник. (

Тема не так чтобы живая, к сожалению… 😦

USB там и не отделишь от финишной части приемника, расчитывающей координаты. На чип-сете АНТАРЕС, к примеру, USB - это просто один из периферийных интерфейсов микроконтроллера, занимающегося расчетами.
Только нафига вам USB? На борту самолета хост USB организовывать - не приведи Господи, такой геморрой! Надо брать стандартный выход СОМ-порта в NMEA-формате. Тогда ваши наработки будут взаимозаменяемыми с другими GPS-девайсами. А если затянет под конкретный фирменный интерфейс одного производителя - можно попасть в лужу, - не факт что через год данный девайс будет на рынке, так что распространение наработки и даже тривиальный ремонт после краша может оказаться в тупике. А уж тем более блю-тус - не стоит заморочек.

Prikupets:

Извините, только в 4 часа прошлой ночи заработало. Понятность кода соответствующая 😕

Андрей, я повторю вопрос - зачем читать два сообщения NMEA: GPGGA и GPVTG, если координаты и курс есть в одном - GPRMC?
И второй вопрос - софт уже отлажен и проверен в работе? Или тока поезд в пути?

6wings

извините за дурацкий вопрос: а гироскоп тут не поможет?
Он же должен сохранять ориентацию при любых маневрах модели (во всяком случае тот, в котором крутится маховик)

Driver-NN
vovic:

Надо брать стандартный выход СОМ-порта в NMEA-формате. Тогда ваши наработки будут взаимозаменяемыми с другими GPS-девайсами.

Золотые слова. Приемник с USB у меня уже валяется без дела именно по этой причине. Так же стОит брать приемник сразу со встроенной активной антенной.

vovic:

Андрей, я повторю вопрос - зачем читать два сообщения NMEA: GPGGA и GPVTG, если координаты и курс есть в одном - GPRMC?

Мне тоже интересно было бы узнать чем не понравился GPRMC?

vovic
Driver-NN:

Так же стОит брать приемник сразу со встроенной активной антенной.

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

Driver-NN
6wings:

извините за дурацкий вопрос: а гироскоп тут не поможет?
Он же должен сохранять ориентацию при любых маневрах модели (во всяком случае тот, в котором крутится маховик)

Если говорить о временнЫх интервалах 10-20 секунд, то это так. Дальше пьезогироскоп даст дрейф в десятки градусов. В инерциалке относительно гравитации обнулить гироскопы можно с помощью акселерометров, в навигационке (по курсу) - с помощью GPS.

Я думал о применении ADXRS150 для смены курса (там секунд 10 на маневр нужно), но реальный эксперимент пока не проведен, точно ничего сказать не могу.

vovic:

А вот это не факт. Я взял антенну активную отдельно. В узком носе Сопрано, к примеру, намного проще размещать авионику, когда антенна отдельно…

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

vovic
Driver-NN:

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

Дык магниты выкинуты, кабеля оставлено 15 см. Осталось литое силуминовое основание антенны - тоже можно выкинуть грамм 30 - 40. Но было лень. 😊