Smalltim OSD and autopilot (часть 1)

baychi
foxtrot:

Вчера вон на 1-2 сек. пару раз (с интервалом 8 сек. пропадала связь Futaba 10CAP 2.4ГГц + R608FS на прямой видимости на удалении 675-641,

Сергей, с R608FS очень удобно взять сигнализацию качаства связи с красного светодиода. Можно вынести сам диод или цепочку резистор+светодиод параллельно такой-же цепочке приемника. И разместить индикатор в поле зрения камеры. Отдельные битые пакеты (от помех) видны как редкие вспышки (бывают на любой дальности), а за 10-15 сек до полной потери на пределе дальности частота вспышек резко возрастает. Очень удобно, особенно если без АП летаете.

foxtrot:

Томас ведь незря подчеркивает super winde band hopping. Т.е. чтобы реально заглушить нужно чтобы все разом накрыли широкий диапазон, причем надолго и во всем диапазоне достаточно мощно, чтобы перекричать 2-7W излучения передатчика Томаса, т.е. должно быть реальное невезение.

Зато частотные прыжки при 7 Вт выходной, будут слышны всем рациям диапазона 433 (и даже шире, судя по некоторым цифрам). И кому-то это может не понравится. Вообще-то, по большому счету такой метод распределения спектра, как прыжки по каналам в общедоступном диапазоне, где разрешена аналоговая и цифоровая передача - это варварство. В 2.4 ГГц, где бегает только цифра - еще куда ни шло, ну собъется пакет, повторится автоматически, не страшно.

foxtrot
Dronavt:

Затем попытки нарастить дальность РУ с полетом до границ видео.
Затем добиваем до получившейся дистанции видеолинк (если конечно потребуется)

Признайтесь, а кроме любопытства эксперементатора в чем для вас кайф дальнего полета? Стандартный сценарий клипа такого полета (типовое название “рекорд”) - пилим сколько хватит дальности батареи или видео и гребем кое-как обратно. И в чем прикол? Не ну он наверное есть 1-2 раза, а дальше в чем смысел? Я конечно понимать, что можно летать (снимать кино) там, где не подъехать и не подойти, скажем на 1-2-3 км, либо нужно слетать относительно низко на такой дистанции (на пределе допустимой высоты, например, 1/10 дистанции). Пока других вариантов практического применения АП как страховки при устойчивом RC и видео линке не вижу, разве что для отладки этого самого линка в том числе при проверке конкретного места полетов на помехи.

Мне самому на самом деле нравится разработка Smalltim (правда все больше напоминает санта-барбару), особенно нравится в части удобства - всякие настроечки картинки, параметров, гибкости и т.д.

baychi:

Сергей, с R608FS очень удобно взять сигнализацию качаства связи с красного светодиода. Можно вынести сам диод или цепочку резистор+светодиод параллельно такой-же цепочке приемника. И разместить индикатор в поле зрения камеры. Отдельные битые пакеты (от помех) видны как редкие вспышки (бывают на любой дальности), а за 10-15 сек до полной потери на пределе дальности частота вспышек резко возрастает. Очень удобно, особенно если без АП летаете.

Спасибо! Раньше не летал и даже особо не интересовался дальними заплывами, так пару раз было над Хантами, но здесь никак не ожидал, что при каких-то 600 метрах возможна такая подлянка. Теперь наверное надо задуматься насчет вскрытия (на всяк случай) приемничка. Я праильна понял резюк и светодиод должны быть такими же как родные? Можете посоветовать параметры?

baychi:

Зато частотные прыжки при 7 Вт выходной

Ну эт я понял для желающих полетать на 15 км. Мне хватит 3, т.е. хватит самого передатчига 0,5-1-2 Вт (переключается в процессе полета при реальной необходимости). Надеюсь местные радисты меня не запинают за такую наглость… 😃

baychi
foxtrot:

в чем для вас кайф дальнего полета?

Во первых, если скажем у Вас модель с хорошей камерой для фото/видеосъемки, то инода нужно залетать подальше в поисках достойного объекта или вида.
А при этом неплохо знать воможности радио и видеолинка, а как их оценить, без тестового полета до границ связи? Потом выясняется, что видео бъет дальше РУ, да и энергетика позволяет и хочется удлинить РУ, ну и так далее.

foxtrot

Если не хватит самого передатчика без бустера (например, шибко часто придется переключаться на 2Вт) буду думать над большей или более эффективной RC антенной.

baychi
foxtrot:

Я праильна понял резюк и светодиод должны быть такими же как родные? Можете посоветовать параметры?

На приемнике стоит пара ключей ( в виде 5-ножечной микросхемы), один ключь - на зеленый, другой - на красный диод. Ключ открывается от земли. От ключа резистор Ом на 500 и сам диод к +5 В. Я подключал к ключу, через резистор в 1-2 кОм яркий (хорошо виден при токе 1-3 мА) красный светодиод.
Вечером попробую сфоткать доработку для R608FS/HS если хотите.

foxtrot
baychi:

А при этом неплохо знать воможности радио и видеолинка, а как их оценить, без тестового полета до границ связи? Потом выясняется, что видео бъет дальше РУ, да и энергетика позволяет и хочется удлинить РУ, ну и так далее.

Вот собсно и уточненное позиционирование АП относительно системы Томаса - проверка границ. Отседова и должна строиться логика приобретения того или другого - если нужно эти границы пощупать (например, как сказано дорогая видеокамера), тада скорее АП, если в принципе на грани летать не нужно, то хватит и Томаса. Я б летал на 0,5-1 Вт и использовал 2 Вт только када полный ахтунг причем низко 😃

Хотя прием с переключением мощности у Томаса + RSSI тоже в какой-то мере дает возможность пощупать границы не доводя полет до отказа из-за дальности. Только вот отказ видео остается неприкрытым риском.

baychi:

На приемнике стоит пара ключей ( в виде 5-ножечной микросхемы), один ключь - на зеленый, другой - на красный диод. Ключ открывается от земли. От ключа резистор Ом на 500 и сам диод к +5 В. Я подключал к ключу, через резистор в 1-2 кОм яркий (хорошо виден при токе 1-3 мА) красный светодиод.
Вечером попробую сфоткать доработку для R608FS/HS если хотите.

Буду очень благодарен, особенно если видно ногу микрухи!

P.S. Может его как-нить на поворотной камере закрепить, чтобы в уголке подмигивал 😃

Dronavt
foxtrot:

И в чем прикол? Я конечно понимать, что можно летать (снимать кино) там, где не подъехать и не подойти, скажем на 1-2-3 км, либо нужно слетать относительно низко на такой дистанции (на пределе допустимой высоты, например, 1/10 дистанции).

В моем случае именно так, для кинушки.
Дальность ради дальности быстро наскучит.

foxtrot

Гы гы запостил а потом че-то не сходится…

foxtrot:

Отседова и должна строиться логика приобретения того или другого - если нужно эти границы пощупать (например, как сказано дорогая видеокамера), тада скорее АП, если в принципе на грани летать не нужно, то хватит и Томаса.

Скорее наоборот - када нужно пощупать - смотрим RSSI, например, того-же Томаса, а када надо летать и нет желания изучать конкретную местность - ставим пилот и надеемся, что поможет када будет полный ахтунг.

В любом случае обе системы нужны и обе важны. Но к итогу наверное нужно относиться так: ставим пилот - надежность субъективно по ощущениям возросла до 9x % или ставим приблуду Томаса соответственно надежность 9x %, а если есть много денег, места, грузоподъемности - ставим и то и другое и надежность надеемся где-то 99.x %

baychi
foxtrot:

Может его как-нить на поворотной камере закрепить

А еще этот сигнал можно усреднить и подать на телеметрию, в качестве одного из напряжений. В последней версии АП+ТМ, по снижению уровня (а напряжение на входе ТМ бцдет падать по мере открытия ключа), можно даже мигание для привлечения внимания включить. Хотя индикатор в поле зрения камеры, конечно нагляднее, оперативнее и проще. 😃

serj
foxtrot:

/////… Подозрения только на радиовысотомер вертолета с которого бросали паратрупперов, в самом аэропорту локаторы давно выключены, оборудование снято, на том борту (по словам знакомого диспетчера, работавшего в тот день) своего локатора нет. Но как грится против лома-радиовысотомера нет приема кроме автономного самолета (АП).

Подозрения скорее всего “не о том”- слишком мала мощность (около 500мвт) и частота сильно выше ( около 4Ггц стандартные)

А вот ответчик запросто мог гадить, мощность там в импульсе ватт 300.

foxtrot

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

baychi
foxtrot:

RSSI тоже в какой-то мере дает возможность пощупать границы не доводя полет до отказа из-за дальности.

RSSI мало что дает в реальных условиях. Он показывет лишь уровень сигнала на входе приемника (причем часто любого в данном диапазоне, а не только своего передатчика. Не знаю как Томас, а FUTABA - сигналы не различает.), но вторая составляющая С/Ш в любом случае остается неизвестной. Вечером на той-же фотке, покажу где берется RSSI на R608FS, можете его тоже на телеметрию вынести.

slides

Мда, вот тут-то я и несогласен. Когда пришел новый приемник Томаса, соответственно незабинденный на передатчик, я его решил проверить с целью выяснения устойчивости диверсити к перегрузке по выходу РССИ разными сопротивлениями. Новый (зеленый двуслойный) приемник с прошивкой 4.0 при включении передатчика показал 10% и прыгал в этом диапазоне, после бинда - 98-100%. Чудеса ? Действительно, непонятно на каком уровне идет оценка уровня самого сигнала, Томас например не писал, что РССИ как-то связано с битыми пакетами. Этот вопрос надо ему задать. Кстати, благодаря навороченности современных телеметрий, мы можем вручную установить нижний уровень отсечки РССИ (например, когда приемник начинает переходить в ФС и прихватить этот диапазон с запасом) То есть, вылетав до 5% РССИ, мы будем гарантированно в радиоконтакте. Повторю - система оценки РССИ в этом приемнике линейна и обвала РССИ за короткий промежуток времени не замечено. Мало того, система оценки РССИ на маленьком и большом приемниках разная. На мелком - происходит хаотичная скачка уровня сигнала ±10%, на большом же - она более стабильна. Советую внимательно изучить полеты на дальность зарубежных коллег и понаблюдать за этим параметром.

Далее. Система Томаса - это только чуть большая гарантия стабильности управления самолетом и отнюдь не исключает полноценный автопилот. Как показывает практика такие мусорные производители как спектрум не могут выпускать стабильных приемников, устойчивые к помехам от видео-ВЧ. И систему Томаса я приобрел не с целью полета на -надцать км, а лишь иметь гарантию, большую, чем предоставляет производитель радио, не заточенного под ФПВ.

насчет гайцев - не летайте над ними и не летайте у города. проблем меньше на порядок

baychi
slides:

приемник с прошивкой 4.0 при включении передатчика показал 10% и прыгал в этом диапазоне, после бинда - 98-100%. Чудеса ? Действительно, непонятно на каком уровне идет оценка уровня самого сигнала,

Я думаю способы измерения RSSI у Томаса и Futab-ы похожи. Вот по этим картинкам rcopen.com/forum/f4/topic146799/38 видно, что RSSI это лишь уровень ВЧ несущей (независимо от целостности данных) на том канале диапазона, который в данный момент слушает приемник. А он, как известно, прыгает по 72 каналам (у Футабы). Поэтому, когда я рядом с приемником ставлю WiFi устройство, занимающее небольшой участок диапазона, но передающее информацию большимим пачками, то при выключенном передатчике вижу эти пачки, как узкие импульсы (Image0) -то есть результат пересечения каналов и момента передачи, что при усреденении дает незначительный подъем RSSI. А когда приемник ловит сигнал своего передатчика и прыжки по каналам синхронизированны с ним, то RSSI на 90% показывает усредненный уровень своей связи (Image4 например).

baychi
foxtrot:

особенно если видно ногу микрухи!

На фотке - два почти одинаковых приемника Futaba: еще недоработанный R6008HS (вверху) и доработанный R608FS (внизу). Стрелками показано, где взять RSSI и признак потери пакетов (сигнал красного индикатора) Я вывожу оба сигнала через разъем DATA (предназначен для перепрограммирования приемника), отключая его от родных цепей.

Вывод RSSI - высокоимендансный (десятки килоом). Кроме того он весьма чувствителен к нагрузке и помехам. Выводить его напрямую и подключать к телеметрии нельзя! Нужно ставить между ним и выходным разъемом резистор 100-200 кОм (это защитит микросхему ВЧ тракта от помех и перенапряжений), а на входе телеметрии желательно иметь входное сопротивление порядка 1 МОм. Для ТМ от Тимофея, я убираю резистор нижнего плеча делителя (1 кОм); вместо него ставлю керамичесчкий конденсатор 0.5-1 мкФ (для усреднения импульсов); а резистор верхнего плеча (2 кОм) увеличиваю до 1 МОм.

Вывод “потеря пакета” - напротив - идет от транзисторного ключа на землю и рассчитан на нагрузку в 10-20 мА. Родной светодиод подключен к нему через резистор в 1 кОм, а затем к +3.3 В. Я подключаю свой светодиод (повышеной яркости) через резистор в 2 кОм к + 5 В приемника и вывожу его в поле зрения камеры.

smalltim

Коллеги, я сделал всё, что хотелось иметь в базовом функционале.
Что именно - распишу позже.
Осталась одна вещь, пришедшая в наследство от времен активного дебага. Логи. Сейчас в логи пишется буквально всё, что только можно. Я хочу больше половины утоптать/выкинуть нахрен.
Сразу скажу, что структуру логов, единожды определив для релиза, буду в дальнейшем менять крайне редко - не хочется иметь потом проблемы с просмотровщиком логов. Вот то, что пишется в энергонезависимую память сейчас, каждые 0.2/0.5/1/2/5/10 секунд.

По крайней мере входные и выходные ППМ я хочу сократить до 2 байт или до байта или вообще выкинуть, и кое-что еще сжать-сократить-урезать. Что скажете?

typedef struct
{
 U32   samplenumber;
 U32   gps_date;
 float gps_time;
 U8    gps_numsatellites;
 U8    gps_fixmode;
 U8    ap_status;  // bits: ap_active:assist_active:rcsignal_lost etc
 float gps_startlat;
 float gps_startlon;
 float gps_startalt;
 float gps_curlat;
 float gps_curlon;
 float gps_curalt;
 float gps_curspeed;
 float gps_curheading;
 float compass_curheading;
 float bearing_to_base;
 float turn_rate;
 float voltage1;
 float voltage2;
 float voltage3;
 float current;
 float mah;
 float temperature;
 float baro_curspeed;
 float baro_curalt;
 float pyro_curroll;
 float pyro_curpitch;
 float pyro_targetroll;
 float pyro_targetpitch;
 float targetthrottle;
 float in_ppm_curwidth[8];
 float out_ppm_curwidth[6];
 U8 controlbyte;    // designates correct dump sample;
}  dumpsample_type;

Сейчас эта структура занимает 168 байт, выкину ppm и начальные широту-долготу-высоту по гпс, будет 100 байт. Всё, кроме текущих широты-долготы-высоты ГПС заменю на 16- или 8-битные целые с фиксированной точкой, будет в итоге 63 байта. Будет выигрыш во времени записи в 2.6 раза, и теперь на самой высокой частоте записи логов, 5 раз в секунду, памяти хватит не на 40 минут полета, а на 106 минут полета - почти 2 часа. То есть, 2-3-4 крайних полета будут всегда лежать в памяти.
Запись в память постраничная, по 528 байт, сделано кэширование страниц, и с маленькими записями лога меньше память придется дергать. Тоже плюс.

baychi
smalltim:

выкину ppm и начальные широту-долготу-высоту по гпс, будет 100 байт. Всё, кроме текущих широты-долготы-высоты ГПС заменю на 16- или 8-битные целые с фиксированной точкой, будет в итоге 63 байта.

Было бы хорошо одну и ту-же структуру записи использовать для лога и для выдачи наружу через цифровой интерфейс типа UART (для GSM модема, дополнительного контроллера и т.п). Эти же данные можно и через видеотракт гнать для следящей антенны, как ты раньше хотел. Посему GPS координаты точки старта я бы оставил. 16 бит вместо float - поддерживаю (8 даже для PPM - маловато, не говоря об АЦП). Насчет ужимания вообще, - главное не переборщить. Лучше оставить запасные поля (например дополнить размер структуры до степени двойки), чем потом менять формат от версии к версии. Даже 128 байт размера вполне достаточно. Ведь 5 Гц запись лога нужна в основном для отладки самого АП, для обычного разбора полетов достаточно 1-2 Гц.

slides

А зачем все время гнать нулевую точку ? или я понял чего-то не так…

baychi
slides:

А зачем все время гнать нулевую точку ?

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

Dronavt

В программировании я не силен, но ИМХО, имея записанную точку старта в логе, можно парировать ситуацию, рассмотренную некоторое время назад. А именно, аварийную перезагрузку АП в воздухе с потерей координат старта 😊?

baychi
Dronavt:

имея записанную точку старта в логе, можно парировать ситуацию, расмотренную некоторое время назад. А именно, аварийную перезагрузку АП в воздухе с потерей координат старта

Самим АП? Можно, наверное, только как отличить рестарт от штатного отключения питания?
Кстати, вопрос к Тимофею, сторожевой таймер Меги задействован? И вообще алгоритм АП как нибудь самоконтролируется?
Например, я в своих железках (на базе DSP) делаю в фоновом цикле постоянный “контроль контекста”: проверяю маски прерываний, указатель стека и некоторые стратегические регистры. А при обнаружении нестыковок - делаю запись в лог ошибок и рестарт программы.
Ведь сбои процессора могут быть вызваны не только ошибками в программе, но и помехами по питанию или входам, и даже космическими лучами. 😃