Smalltim OSD and autopilot (часть 1)
ага и автопилот там уже готовый ! Мужики ! Не дурите Челу голову - готова только телеметрия !
Экспериментальная прошивка версии 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 Гц, убрано переконфигурирование модулей “на лету”
Экспериментальная прошивка версии 262e от 1 декабря 2009
чем е!то она експериментальная?
чем е!то она експериментальная?
В честь начала зимы введена “оптимистичная” температура за бортом! 😃
С началом календарной зимы, господа!
Ой, жалко то как ! Я думал, что мониторинг РССИ сделал. То есть она конечно частично сделана (слабый уровень РССИ-выхода падает на 100 ком-ном сопротивлении до мизера, без резистора приемник сходит с ума). Хотя пока АП не готов все равно не актуально - для старого программатора нужен переходник, лень делать
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 😃
Экспериментальная прошивка версии 262e от 1 декабря 2009
Изменения относительно прошивки верcии 261:
- Введено отображение трех независимых величин напряжений, без проверки каких-либо условий.
- Убрана поддержка устаревших GPS модулей GlobalSat EM406A
Прошивка версии 261 от 29 сентября 2009
Изменения относительно прошивки верcии 254:
- Добавлена поддержка новой платы телеметрии smalltim mini и отображение изображения телеметрии с тенями под символами
- Добавлена программная фильтрация ложных синхроимпульсов от LM1881 (проявляется как “дрожание” изображения по вертикали с некоторыми видеокамерами)
- Убрана поддержка GPS модулей Locosys LS20031, работающих на скорости порта 9600 бод, 1 Гц, убрано переконфигурирование модулей “на лету”
Все телеметрии уж полгода как комплектуются модулями Locosys LS20031, поэтому было бы глупо тащить еще поддержку старых модулей.
Если надо оставить поддержку EM406A - оставим ❗
Прошивка на то и экспериментальная, что она сденана для “попробовать и послушать, что скажут”.
>В честь начала зимы введена “оптимистичная” температура за бортом!
Термодатчик просто не подключен 😃
C RSSI всё сделано, но не выложено. Мне надо одну хитрую штуку сделать, чтоб с показом RSSI стало ну совсем удобно.
Рассказываю.
Насколько я понимаю, уровень напряжения на выходе RSSI у разных приемников может отличаться. Поэтому нужна калибровка или адаптация телеметрии к каждому отдельному приемнику, если хочется показывать не тупо напряжение, а “палочки” или проценты сигнала RSSI.
Мысль такая: телеметрия мониторит состояние RSSI и копит минимальные и максимальные уровни, приходящие на вход RSSI. Текущий уровень показывается как проценты в диапазоне от минимального до максимального найденного вольтажа RSSI.
Тогда процесс приучения телеметрии к приемнику выглядит следующим образом: вышли в поле полетать, включили телеметрию, включили передатчик, RSSI максимальный. Телеметрия нашла и запомнила максимальное значение. Потом выключили передатчик и RSSI стал минимальный. Телеметрия запомнила минимальное значение. Дальше включаем передатчик и летим как обычно, а телеметрия показывает проценты или палочки RSSI.
У меня нет и не было никогда приемников с выходом RSSI, так что вопрос: оно так сработает?
По поводу высокоомности RSSI вопрос в принципе решенный: делаем повторитель на ОУ в горошине на проводке к телеметрии.
Тим, показания лучше делать аналоговыми (палочки), визуально более информативно…
У меня нет и не было никогда приемников с выходом RSSI, так что вопрос: оно так сработает?
В принципе - да, но есть несколько тонкостей.
- При выключенном передатчике RSSI показывает уровень шума в диапазоне.
У меня дома (RSSI с R617FS, к примеру) это значение колеблется от 40 до 60 мВ. А на поле бывает и 20-30 мВ. Максимум (передатчик рядом с приемником) - 0.46 В. - Нижнее значение RSSI при котором наступает FailSafe может в воздухе быть меньше, чем значение при отключенном передатчике на земле.
- Показания RSSI (по крайней мере с FUTABA) это логарифмическая величина. По моим оценкам 2-х кратное уменьшение напряжения соответсвует 10-ти кратному падению уровня.
И, наконец, последнее. RSSI намного менее показателен, чем количество потерянных пакетов. 😃 Если Тимофей под словом RSSI понимал вход получающий усредненные значения потерь пакетов - то все прекрасно будет работать по его логике.
А можно ли реализовать такое: В момент инициализации, телеметрия запоминал точку старта и выводила прямую (Виртуальная ВПП), а после старта могла бы просчитать необходимый угол снижения, направление глиссаду так сказать на эту прямую. тем самым помогая пилоту приземлится.
Как я себе представляю:
Стою я на прямой дороге, включаю борт, направляю нос модели по пути дороги, появляется прямая наложенная поверх дороги. Взлетаю, наслаждаюсь полетом. Включаю посадочный режим, появлятся направление на прямую и рекомендация снижаться или набрать высоту или сделать круг. То-есть не просто вектор на точку старта а глиссаду.
Я думаю это полезна функция которая сразу выбьет вашу систему в лидеры не смотря на то-что для меня Вы уже лидер.
Вот только давайте не будем засорять проблему пакетами, ЛОГ-декодерами и т.д. Мы с Тимом обсуждали тему РССИ. Для эстетов можно ввести переключатель чувствительности шкалы сигнала - логарифм с накоплением или линейный с накоплением (типа прикола с выбором ГПС или бародатчика). Однозначно надо делать сглаживание показателя РССИ и я думаю не подбирать кондей в параллель, а математическим способом, благо ресурсов Меги должно хватить. Отображать надо 10 палками, причем после палок обязательно процент писать. В автопилотном куске можно сделать условие включения при определенном уровне РССИ и вариант отображения. ИМХО. Неплохо бы чтобы на определенном уровне РССИ (и ниже) значок начинал мигать.
Кстати, как отписался Томас, его система имеет выход с линейной характеристикой…
Неплохо бы чтобы на определенном уровне РССИ (и ниже) значок начинал мигать. Кстати, как отписался Томас, его система имеет выход с линейной характеристикой…
Дима, а тебе RSSI (уровень принимаемого сигнала) зачем вообще нужен? Сформулируй, пожалуйста, как ты собираешся этот сигнал в полете интерпретировать?
И про Томаса: он именно RSSI выдает, или все-же качество сигнала (например, по критерию потерь пакетов)? И в каком виде выдает (какой разъем, диапазон напряжения, форма, степень усреднения и т.п.)?
Отвечаю:
У меня нет автопилота и не факт, что я буду его ставить на все 4 самолета. Поэтому возникло желание хоть как-то контролировать состояние радиолинка. Согласен, что не лучший вариант.
Как оценивает РССИ у Томаса не знаю, но сейчас ему задам вопрос. Выглядит в виде 4-го штырька серворазъема последнего канала от 0,5 вольта (максимум) до 0,29 вольта (минимум)
У меня нет автопилота и не факт, что я буду его ставить на все 4 самолета. Поэтому возникло желание хоть как-то контролировать состояние радиолинка. Согласен, что не лучший вариант.
Вот именно! По RSSI можно узнать много нового. Например, насколько далеко приемник находится от передатчика. Или особенности прохождения сигнала в данных атмосферных условиях. Единственно, чего через RSSI нельзя узнать наверняка, это как скоро приемник намерен потерять связь! Потому и спрашиваю, может Томас все-же не RSSI выдает а более важную информацию?
Увы, нет ! Хотя пишет, что есть нога на чипе, с которой можно получить сигнал по потерянным пакетам…
А можно ли реализовать такое: В момент инициализации, телеметрия запоминал точку старта и выводила прямую (Виртуальная ВПП), а после старта могла бы просчитать необходимый угол снижения, направление глиссаду так сказать на эту прямую. тем самым помогая пилоту приземлится.
Как я себе представляю:
Стою я на прямой дороге, включаю борт, направляю нос модели по пути дороги, появляется прямая наложенная поверх дороги. Взлетаю, наслаждаюсь полетом. Включаю посадочный режим, появлятся направление на прямую и рекомендация снижаться или набрать высоту или сделать круг. То-есть не просто вектор на точку старта а глиссаду.
Я думаю это полезна функция которая сразу выбьет вашу систему в лидеры не смотря на то-что для меня Вы уже лидер.
Тим, а в принципе глиссада это есть своего рода гипотенуза? теоретически возможно ведь ведение автопилота по ней на посадку? как вариант… было бы очень интересно… тут конечно упираешься в точность GPS координат и бародатчиков…
Да, гипотенуза. Но садиться автоматом, основывась на баро или ГПС я б не рискнул.
Нарисовать глиссаду или что-нибудь, что помогает садиться, на экране телеметрии - можно, почему бы и нет.
Про автопилот.
Переписал классы работы с настройками.
Ужесточил до безобразия стратегию работы с настройками, теперь сделать что-то неосознанно или по ошибке очень трудно.
Сделал слив всего комплекта настроек из автопилота в Контрольную Панель и заливку из Панели в автопилот.
Сделал сохранение всего комплекта настроек из Панели в файлы настроек *.apsettings и чтение из файлов в Панель.
Настройки делятся на группы, соответствующие страницам Панели. Сохранить и прочитать можно только группу целиком.
Контрольная Панель является промежуточным звеном между файлом и автопилотом. Как и раньше, загрузив в Панель файл настроек или самостоятельно изменив настройки в Панели, пользователь должен залить настройки из Панели в автопилот.
Калибровки, внимание, не сохраняются. Это сделано для того, чтобы чужие калибровки каналов RC передатчика, датчиков телеметрии, компаса и т.д., не натворили делов. Надеюсь, не надо объяснять, что будет вытворять автопилот, откалиброванный, например, с инвертированным газом, если подсунуть ему передатчик с неинвертированным газом.
При работе с настройками в силе следующие правила:
-
Если какие-то настройки не слиты в Панель из автопилота, или не сброшены в значения по умолчанию или не залиты раньше из файла, то они не сохраняются в файл.
-
Если какие-то настройки не слиты в Панель из автопилота, не сброшены в значения по умолчанию или не залиты из файла, то они не заливаются в автопилот.
-
Если каких-то настроек в файле нет или не распознаются или файл поврежден, то они не читаются в Панель.
Таким макаром можно сохранить и передать товарищу или выложить в Сеть хоть весь комплект настроек, хоть только одну страничку настроек. Аналогично, взяв файл настроек у товарища или из Сети, можно прочитать файл и все настройки, что есть , попадут в Панель. Потом можно все их залить в автопилот или залить только то, что хочется.
Формат файла настроек - человекопонятный, поддерживающий любые языки, и даже позволяющий вручную редактировать настройки, хотя это и не рекомендуется - если где-нибудь накосячить, соотсветствующая настройка при чтении файла не распознается и не применится.
Файл с настройками по умолчанию выглядит примерно так:
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 = Неизвестно
Круто! Судя по времени регистрации поста у Тима со сном все в порядке.
Интересно, как продвигается работа с аппаратной частью ?
Продвигается потихоньку.
Добавил в контроль высоты второй вариант в добавление к существующему. Теперь пилот может при включении либо сразу стремиться занимать целевую высоту (как раньше), либо линейно набирать/снижать высоту при полете домой или от точки к точке.
Добавил интегральный компонент в управление тангажом с его настройкой в Панели.
Реорганизовал немножко настройки в Панели, чтоб не было путаницы между настройками навигации и настройками контроля моделью.
Думаю над возможностью сохранения калибровок. Коллеги, это надо?
Напомню, калибровки - это калибровки компаса, RC передатчика, датчиков телеметрии. Они живут во внешней памяти и выживают при любых манипуляциях с пилотом, включая, например, полное стирание логов или перепрошивку пилота/телеметрии.
Продвигается потихоньку.
Плохо ! Лучше приобрести и ждать софта. имхо. тогда ажиотажа не будет при старте продаж !!!Добавил в контроль высоты второй вариант в добавление к существующему. Теперь пилот может при включении либо сразу стремиться занимать целевую высоту (как раньше), либо линейно набирать/снижать высоту при полете домой или от точки к точке.
Для чего ? Экономия акка или облет деревьев ?
Добавил интегральный компонент в управление тангажом с его настройкой в Панели.Реорганизовал немножко настройки в Панели, чтоб не было путаницы между настройками навигации и настройками контроля моделью.
Думаю над возможностью сохранения калибровок. Коллеги, это надо?
Напомню, калибровки - это калибровки компаса, RC передатчика, датчиков телеметрии. Они живут во внешней памяти и выживают при любых манипуляциях с пилотом, включая, например, полное стирание логов или перепрошивку пилота/телеметрии.
Сделай, лишним не будет…
😃