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

slides

ага и автопилот там уже готовый ! Мужики ! Не дурите Челу голову - готова только телеметрия !

smalltim

Экспериментальная прошивка версии 262e от 1 декабря 2009
[скачать v262e.hex, 23 кб]
[скачать v262enb.hex для плат без бародатчиков, 23 кб]

Изменения относительно прошивки верcии 261:

  • Введено отображение трех независимых величин напряжений, без проверки каких-либо условий.
  • Убрана поддержка устаревших GPS модулей GlobalSat EM406A

Прошивка версии 261 от 29 сентября 2009
[скачать v261.hex, 23 кб]
[скачать v261nb.hex для плат без бародатчиков, 23 кб]

Изменения относительно прошивки верcии 254:

  • Добавлена поддержка новой платы телеметрии smalltim mini и отображение изображения телеметрии с тенями под символами
  • Добавлена программная фильтрация ложных синхроимпульсов от LM1881 (проявляется как “дрожание” изображения по вертикали с некоторыми видеокамерами)
  • Убрана поддержка GPS модулей Locosys LS20031, работающих на скорости порта 9600 бод, 1 Гц, убрано переконфигурирование модулей “на лету”
kulikof

Экспериментальная прошивка версии 262e от 1 декабря 2009

чем е!то она експериментальная?

Dronavt
kulikof:

чем е!то она експериментальная?

В честь начала зимы введена “оптимистичная” температура за бортом! 😃
С началом календарной зимы, господа!

slides

Ой, жалко то как ! Я думал, что мониторинг РССИ сделал. То есть она конечно частично сделана (слабый уровень РССИ-выхода падает на 100 ком-ном сопротивлении до мизера, без резистора приемник сходит с ума). Хотя пока АП не готов все равно не актуально - для старого программатора нужен переходник, лень делать

V_Labanauskas

Kak ponial Vse kto imejet GPS moduli “EM-406” i “LS20031” mogut s novoi prosivkoi zasunut ih sebe v z… (mooning)
Kakie togda moduli podhodiat(marki)
Licno mojo mnenie cto lucse Sirf modulia nicego netu. Lovit sputniki daze pod betonnim perekritiem, a MTK 10Hz za 30min nestartoval daze pod sifernoi krisei 😃

smalltim:

Экспериментальная прошивка версии 262e от 1 декабря 2009

Изменения относительно прошивки верcии 261:

  • Введено отображение трех независимых величин напряжений, без проверки каких-либо условий.
  • Убрана поддержка устаревших GPS модулей GlobalSat EM406A

Прошивка версии 261 от 29 сентября 2009
Изменения относительно прошивки верcии 254:

  • Добавлена поддержка новой платы телеметрии smalltim mini и отображение изображения телеметрии с тенями под символами
  • Добавлена программная фильтрация ложных синхроимпульсов от LM1881 (проявляется как “дрожание” изображения по вертикали с некоторыми видеокамерами)
  • Убрана поддержка GPS модулей Locosys LS20031, работающих на скорости порта 9600 бод, 1 Гц, убрано переконфигурирование модулей “на лету”
smalltim

Все телеметрии уж полгода как комплектуются модулями Locosys LS20031, поэтому было бы глупо тащить еще поддержку старых модулей.
Если надо оставить поддержку EM406A - оставим
Прошивка на то и экспериментальная, что она сденана для “попробовать и послушать, что скажут”.

>В честь начала зимы введена “оптимистичная” температура за бортом!
Термодатчик просто не подключен 😃

C RSSI всё сделано, но не выложено. Мне надо одну хитрую штуку сделать, чтоб с показом RSSI стало ну совсем удобно.
Рассказываю.
Насколько я понимаю, уровень напряжения на выходе RSSI у разных приемников может отличаться. Поэтому нужна калибровка или адаптация телеметрии к каждому отдельному приемнику, если хочется показывать не тупо напряжение, а “палочки” или проценты сигнала RSSI.
Мысль такая: телеметрия мониторит состояние RSSI и копит минимальные и максимальные уровни, приходящие на вход RSSI. Текущий уровень показывается как проценты в диапазоне от минимального до максимального найденного вольтажа RSSI.
Тогда процесс приучения телеметрии к приемнику выглядит следующим образом: вышли в поле полетать, включили телеметрию, включили передатчик, RSSI максимальный. Телеметрия нашла и запомнила максимальное значение. Потом выключили передатчик и RSSI стал минимальный. Телеметрия запомнила минимальное значение. Дальше включаем передатчик и летим как обычно, а телеметрия показывает проценты или палочки RSSI.

У меня нет и не было никогда приемников с выходом RSSI, так что вопрос: оно так сработает?

По поводу высокоомности RSSI вопрос в принципе решенный: делаем повторитель на ОУ в горошине на проводке к телеметрии.

Brandvik

Тим, показания лучше делать аналоговыми (палочки), визуально более информативно…

baychi
smalltim:

У меня нет и не было никогда приемников с выходом RSSI, так что вопрос: оно так сработает?

В принципе - да, но есть несколько тонкостей.

  1. При выключенном передатчике RSSI показывает уровень шума в диапазоне.
    У меня дома (RSSI с R617FS, к примеру) это значение колеблется от 40 до 60 мВ. А на поле бывает и 20-30 мВ. Максимум (передатчик рядом с приемником) - 0.46 В.
  2. Нижнее значение RSSI при котором наступает FailSafe может в воздухе быть меньше, чем значение при отключенном передатчике на земле.
  3. Показания RSSI (по крайней мере с FUTABA) это логарифмическая величина. По моим оценкам 2-х кратное уменьшение напряжения соответсвует 10-ти кратному падению уровня.

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

denisry

Уважаемы smalltim.

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

slides

Вот только давайте не будем засорять проблему пакетами, ЛОГ-декодерами и т.д. Мы с Тимом обсуждали тему РССИ. Для эстетов можно ввести переключатель чувствительности шкалы сигнала - логарифм с накоплением или линейный с накоплением (типа прикола с выбором ГПС или бародатчика). Однозначно надо делать сглаживание показателя РССИ и я думаю не подбирать кондей в параллель, а математическим способом, благо ресурсов Меги должно хватить. Отображать надо 10 палками, причем после палок обязательно процент писать. В автопилотном куске можно сделать условие включения при определенном уровне РССИ и вариант отображения. ИМХО. Неплохо бы чтобы на определенном уровне РССИ (и ниже) значок начинал мигать.

Кстати, как отписался Томас, его система имеет выход с линейной характеристикой…

baychi
slides:

Неплохо бы чтобы на определенном уровне РССИ (и ниже) значок начинал мигать. Кстати, как отписался Томас, его система имеет выход с линейной характеристикой…

Дима, а тебе RSSI (уровень принимаемого сигнала) зачем вообще нужен? Сформулируй, пожалуйста, как ты собираешся этот сигнал в полете интерпретировать?
И про Томаса: он именно RSSI выдает, или все-же качество сигнала (например, по критерию потерь пакетов)? И в каком виде выдает (какой разъем, диапазон напряжения, форма, степень усреднения и т.п.)?

slides

Отвечаю:
У меня нет автопилота и не факт, что я буду его ставить на все 4 самолета. Поэтому возникло желание хоть как-то контролировать состояние радиолинка. Согласен, что не лучший вариант.

Как оценивает РССИ у Томаса не знаю, но сейчас ему задам вопрос. Выглядит в виде 4-го штырька серворазъема последнего канала от 0,5 вольта (максимум) до 0,29 вольта (минимум)

baychi
slides:

У меня нет автопилота и не факт, что я буду его ставить на все 4 самолета. Поэтому возникло желание хоть как-то контролировать состояние радиолинка. Согласен, что не лучший вариант.

Вот именно! По RSSI можно узнать много нового. Например, насколько далеко приемник находится от передатчика. Или особенности прохождения сигнала в данных атмосферных условиях. Единственно, чего через RSSI нельзя узнать наверняка, это как скоро приемник намерен потерять связь! Потому и спрашиваю, может Томас все-же не RSSI выдает а более важную информацию?

slides

Увы, нет ! Хотя пишет, что есть нога на чипе, с которой можно получить сигнал по потерянным пакетам…

poldeco
denisry:

Уважаемы smalltim.

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

Тим, а в принципе глиссада это есть своего рода гипотенуза? теоретически возможно ведь ведение автопилота по ней на посадку? как вариант… было бы очень интересно… тут конечно упираешься в точность GPS координат и бародатчиков…

smalltim

Да, гипотенуза. Но садиться автоматом, основывась на баро или ГПС я б не рискнул.
Нарисовать глиссаду или что-нибудь, что помогает садиться, на экране телеметрии - можно, почему бы и нет.

Про автопилот.

Переписал классы работы с настройками.

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

Сделал слив всего комплекта настроек из автопилота в Контрольную Панель и заливку из Панели в автопилот.

Сделал сохранение всего комплекта настроек из Панели в файлы настроек *.apsettings и чтение из файлов в Панель.

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

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

Калибровки, внимание, не сохраняются. Это сделано для того, чтобы чужие калибровки каналов RC передатчика, датчиков телеметрии, компаса и т.д., не натворили делов. Надеюсь, не надо объяснять, что будет вытворять автопилот, откалиброванный, например, с инвертированным газом, если подсунуть ему передатчик с неинвертированным газом.

При работе с настройками в силе следующие правила:

  1. Если какие-то настройки не слиты в Панель из автопилота, или не сброшены в значения по умолчанию или не залиты раньше из файла, то они не сохраняются в файл.

  2. Если какие-то настройки не слиты в Панель из автопилота, не сброшены в значения по умолчанию или не залиты из файла, то они не заливаются в автопилот.

  3. Если каких-то настроек в файле нет или не распознаются или файл поврежден, то они не читаются в Панель.

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

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

Файл с настройками по умолчанию выглядит примерно так:

aaa.apsettings:

<group>autopilot_control_panel.pp_pcontrol = Управление моделью
   <param>model_type = type0
   <param>use_elevon_mixer = False
   <param>roll_limit = 30 град
   <param>pitch_limit = 15 град
   <param>heading_change_speed_limit = 180 град/сек
   <param>heading_type = GPS
   <param>heading_prediction = 0 сек
   <param>target_altitude = 100 м
   <param>baro_gps_altitude = GPS
   <param>throttle_speed_control = throttle
   <param>throttle = 50 %
   <param>target_speed = 45 км/ч
   <param>baro_gps_speed = GPS
   <param>min_throttle = 30 %
   <param>throttle_boosted = 100 %
   <param>throttle_boosted_time = 15 сек
   <param>roll_p = 20 %
   <param>pitch_p = 20 %
   <param>roll_d = 50 %
   <param>pitch_d = 50 %
   <param>heading_p = 25 %
   <param>altitude_p = 10 %
<group>autopilot_control_panel.pp_engagement = Включение/выключение автопилота
   <param>on_distance_higher_altitude_lower = Расстояние > 500 м, Высота < 100 м
   <param>on_distance_higher = 1500 м
   <param>on_altitude_higher = 1500 м
   <param>on_v1_lower = Не используется
   <param>on_v2_lower = Не используется
   <param>on_mah_higher = 1700 мАч
   <param>on_time_higher = 3600 сек
   <param>on_rc_loss = True
   <param>off_distance_lower = Не используется
   <param>off_time_higher = 1800 сек
   <param>off_rc_pickup = True
<group>autopilot_control_panel.pp_assist = Стабилизация
   <param>assist_mode = Mode1
   <param>assist_percentage = 50 %
   <param>assist_maxroll = 45 град
   <param>assist_maxpitch = 30 град
   <param>pyro_correction_roll = 0 град
   <param>pyro_correction_pitch = 0 град
<group>autopilot_control_panel.pp_logging = Бортовой журнал
   <param>logging_interval = type3
   <param>flightnum = 0
   <param>recordnum = 0
   <param>recordaddress = 0
   <param>recordsize = 0 байт
   <param>logtime = Неизвестно
<group>autopilot_control_panel.pp_magnetic = Настройки компаса
   <param>magnetic_inclination = 0 град
<group>autopilot_control_panel.pp_lostppm = Определение потери RC сигнала
   <param>lostppm_channelnum = channel1
   <param>outofrangeppm_channelnum = channel1
   <param>range_expansion = 10 %
<group>autopilot_control_panel.pp_controlchannel = Настройка управляющего канала
   <param>action0 = type0
   <param>action1 = type1
   <param>action2 = type2
<group>autopilot_control_panel.pp_alarm = Предупреждения на экране телеметрии
   <param>on_altitude_lower = 100 м
   <param>on_altitude_higher = 500 м
   <param>on_distance_higher = 1000 м
   <param>on_v1_lower = 9.0 v
   <param>on_v2_lower = 9.0 v
   <param>on_mah_higher = 1000 мАч
   <param>on_time_higher = 1800 сек
<group>autopilot_control_panel.pp_telemetry_layout #1 = Раскладка параметров на экране - Экран 1
   <param #0> "Качество/наличие RC сигнала" = 32,32
   <param #1> "Время полета" = 57,32
   <param #2> "Строка состояния" = 11,32
   <param #3> "Скорость по GPS" = 0,41
   <param #4> "Шкала скорости по GPS" = 4,35
   <param #5> "Высота по GPS" = 28,41
   <param #6> "Шкала высоты по GPS" = 26,35
   <param #7> "Скорость по бародатчику" = 128,47
   <param #8> "Шкала скорости по бародатчику" = 6,3
   <param #9> "Высота по бародатчику" = 156,47
   <param #10> "Шкала высоты по бародатчику" = 24,3
   <param #11> "Курс по GPS" = 12,33
   <param #12> "Курс по компасу" = 54,1
   <param #13> "Угол на точку старта по GPS" = 12,48
   <param #14> "Угол на точку старта по компасу" = 54,16
   <param #15> "Искусственный горизонт" = 6,35
   <param #16> "Растояние от точки старта" = 109,51
   <param #17> "Количество спутников GPS" = 96,51
   <param #18> "Широта/долгота GPS" = 96,53
   <param #19> "Температура" = 96,56
   <param #20> "Ток" = 105,56
   <param #21> "Расход батареи (число)" = 113,56
   <param #22> "Расход батареи (индикатор)" = 6,0
   <param #23> "Напряжение 1" = 122,54
   <param #24> "Напряжение 2" = 91,55
   <param #25> "Напряжение 3" = 91,56
   <param #26> "Вариометр по GPS" = 31,35
   <param #27> "Вариометр по бародатчику" = 30,3
<group>autopilot_control_panel.pp_telemetry_layout #2 = Раскладка параметров на экране - Экран 2
   <param #0> "Качество/наличие RC сигнала" = 32,32
   <param #1> "Время полета" = 57,32
   <param #2> "Строка состояния" = 11,32
   <param #3> "Скорость по GPS" = 0,41
   <param #4> "Шкала скорости по GPS" = 4,35
   <param #5> "Высота по GPS" = 28,41
   <param #6> "Шкала высоты по GPS" = 26,35
   <param #7> "Скорость по бародатчику" = 128,47
   <param #8> "Шкала скорости по бародатчику" = 6,3
   <param #9> "Высота по бародатчику" = 156,47
   <param #10> "Шкала высоты по бародатчику" = 24,3
   <param #11> "Курс по GPS" = 12,33
   <param #12> "Курс по компасу" = 54,1
   <param #13> "Угол на точку старта по GPS" = 12,48
   <param #14> "Угол на точку старта по компасу" = 54,16
   <param #15> "Искусственный горизонт" = 6,35
   <param #16> "Растояние от точки старта" = 109,51
   <param #17> "Количество спутников GPS" = 96,51
   <param #18> "Широта/долгота GPS" = 96,53
   <param #19> "Температура" = 96,56
   <param #20> "Ток" = 105,56
   <param #21> "Расход батареи (число)" = 113,56
   <param #22> "Расход батареи (индикатор)" = 6,0
   <param #23> "Напряжение 1" = 122,54
   <param #24> "Напряжение 2" = 91,55
   <param #25> "Напряжение 3" = 91,56
   <param #26> "Вариометр по GPS" = 31,35
   <param #27> "Вариометр по бародатчику" = 30,3
<group>autopilot_control_panel.pp_telemetry_layout #3 = Раскладка параметров на экране - Экран 3
   <param #0> "Качество/наличие RC сигнала" = 32,32
   <param #1> "Время полета" = 57,32
   <param #2> "Строка состояния" = 11,32
   <param #3> "Скорость по GPS" = 0,41
   <param #4> "Шкала скорости по GPS" = 4,35
   <param #5> "Высота по GPS" = 28,41
   <param #6> "Шкала высоты по GPS" = 26,35
   <param #7> "Скорость по бародатчику" = 128,47
   <param #8> "Шкала скорости по бародатчику" = 6,3
   <param #9> "Высота по бародатчику" = 156,47
   <param #10> "Шкала высоты по бародатчику" = 24,3
   <param #11> "Курс по GPS" = 12,33
   <param #12> "Курс по компасу" = 54,1
   <param #13> "Угол на точку старта по GPS" = 12,48
   <param #14> "Угол на точку старта по компасу" = 54,16
   <param #15> "Искусственный горизонт" = 6,35
   <param #16> "Растояние от точки старта" = 109,51
   <param #17> "Количество спутников GPS" = 96,51
   <param #18> "Широта/долгота GPS" = 96,53
   <param #19> "Температура" = 96,56
   <param #20> "Ток" = 105,56
   <param #21> "Расход батареи (число)" = 113,56
   <param #22> "Расход батареи (индикатор)" = 6,0
   <param #23> "Напряжение 1" = 122,54
   <param #24> "Напряжение 2" = 91,55
   <param #25> "Напряжение 3" = 91,56
   <param #26> "Вариометр по GPS" = 31,35
   <param #27> "Вариометр по бародатчику" = 30,3
<group>autopilot_control_panel.pp_telemetry_layout #4 = Раскладка параметров на экране - Экран 4
   <param #0> "Качество/наличие RC сигнала" = 32,32
   <param #1> "Время полета" = 57,32
   <param #2> "Строка состояния" = 11,32
   <param #3> "Скорость по GPS" = 0,41
   <param #4> "Шкала скорости по GPS" = 4,35
   <param #5> "Высота по GPS" = 28,41
   <param #6> "Шкала высоты по GPS" = 26,35
   <param #7> "Скорость по бародатчику" = 128,47
   <param #8> "Шкала скорости по бародатчику" = 6,3
   <param #9> "Высота по бародатчику" = 156,47
   <param #10> "Шкала высоты по бародатчику" = 24,3
   <param #11> "Курс по GPS" = 12,33
   <param #12> "Курс по компасу" = 54,1
   <param #13> "Угол на точку старта по GPS" = 12,48
   <param #14> "Угол на точку старта по компасу" = 54,16
   <param #15> "Искусственный горизонт" = 6,35
   <param #16> "Растояние от точки старта" = 109,51
   <param #17> "Количество спутников GPS" = 96,51
   <param #18> "Широта/долгота GPS" = 96,53
   <param #19> "Температура" = 96,56
   <param #20> "Ток" = 105,56
   <param #21> "Расход батареи (число)" = 113,56
   <param #22> "Расход батареи (индикатор)" = 6,0
   <param #23> "Напряжение 1" = 122,54
   <param #24> "Напряжение 2" = 91,55
   <param #25> "Напряжение 3" = 91,56
   <param #26> "Вариометр по GPS" = 31,35
   <param #27> "Вариометр по бародатчику" = 30,3
<group>autopilot_control_panel.pp_versions = Версии микропрограмм
   <param>autopilot_version_string = Неизвестно
   <param>autopilot_date_string = Неизвестно
slides

Круто! Судя по времени регистрации поста у Тима со сном все в порядке.

Интересно, как продвигается работа с аппаратной частью ?

smalltim

Продвигается потихоньку.

Добавил в контроль высоты второй вариант в добавление к существующему. Теперь пилот может при включении либо сразу стремиться занимать целевую высоту (как раньше), либо линейно набирать/снижать высоту при полете домой или от точки к точке.

Добавил интегральный компонент в управление тангажом с его настройкой в Панели.

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

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

slides
smalltim:

Продвигается потихоньку.
Плохо ! Лучше приобрести и ждать софта. имхо. тогда ажиотажа не будет при старте продаж !!!

Добавил в контроль высоты второй вариант в добавление к существующему. Теперь пилот может при включении либо сразу стремиться занимать целевую высоту (как раньше), либо линейно набирать/снижать высоту при полете домой или от точки к точке.
Для чего ? Экономия акка или облет деревьев ?
Добавил интегральный компонент в управление тангажом с его настройкой в Панели.

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

Думаю над возможностью сохранения калибровок. Коллеги, это надо?
Напомню, калибровки - это калибровки компаса, RC передатчика, датчиков телеметрии. Они живут во внешней памяти и выживают при любых манипуляциях с пилотом, включая, например, полное стирание логов или перепрошивку пилота/телеметрии.
Сделай, лишним не будет…

😃