Smalltim OSD and autopilot (часть 1)
Увы, нет ! Хотя пишет, что есть нога на чипе, с которой можно получить сигнал по потерянным пакетам…
А можно ли реализовать такое: В момент инициализации, телеметрия запоминал точку старта и выводила прямую (Виртуальная ВПП), а после старта могла бы просчитать необходимый угол снижения, направление глиссаду так сказать на эту прямую. тем самым помогая пилоту приземлится.
Как я себе представляю:
Стою я на прямой дороге, включаю борт, направляю нос модели по пути дороги, появляется прямая наложенная поверх дороги. Взлетаю, наслаждаюсь полетом. Включаю посадочный режим, появлятся направление на прямую и рекомендация снижаться или набрать высоту или сделать круг. То-есть не просто вектор на точку старта а глиссаду.
Я думаю это полезна функция которая сразу выбьет вашу систему в лидеры не смотря на то-что для меня Вы уже лидер.
Тим, а в принципе глиссада это есть своего рода гипотенуза? теоретически возможно ведь ведение автопилота по ней на посадку? как вариант… было бы очень интересно… тут конечно упираешься в точность 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 передатчика, датчиков телеметрии. Они живут во внешней памяти и выживают при любых манипуляциях с пилотом, включая, например, полное стирание логов или перепрошивку пилота/телеметрии.
Сделай, лишним не будет…
😃
Думаю над возможностью сохранения калибровок. Коллеги, это надо?
Пригодится. Либо надо делать какую-то сигнализацию отсутствия калибровки, а то после очередной перепрошивки, лекго забыть перекалиброваться. 😉
А я вот считаю, что аппаратно сделать автопилот на пирометрах может кто угодно. Будет вполне нормальный такой себе летающий автопилот. А вот всё остальное, что делает продукт действительно качественным - это правильный софт. И это, по сравнению с пайкой железки, поверь мне, не в 5 и не в 10 раз больше времени и мозгов требует…
Теперь пилот может при включении либо сразу стремиться занимать целевую высоту (как раньше), либо линейно набирать/снижать высоту при полете домой или от точки к точке. Для чего ? Экономия акка или облет деревьев ?
Чтобы было больше шансов долететь домой и раньше вернуться в зону действия РУ или видео.
А еще помню, как мой бедный Изя на сбросе всего-то 200 м высоты до 110 км/ч разогнался. Еще бы метров 100 и без крыльев остался. 😃
>Пригодится. Либо надо делать какую-то сигнализацию отсутствия калибровки, а то после очередной перепрошивки, лекго забыть перекалиброваться.
Это как это? У тебя при перепрошивке слетают калибровки?
>110 км/ч разогнался
Фигня! Мой до 130 разгонялся 😜
А вот всё остальное, что делает продукт действительно качественным - это правильный софт. И это, по сравнению с пайкой железки, поверь мне, не в 5 и не в 10 раз больше времени и мозгов требует…
Совершенно верно. Софт уже давно берет 90% трудозатрат. И создает огромную инерцию в развитии любой системы. 😉
У тебя при перепрошивке слетают калибровки?
Только при глобальной смене версии, с изменением структуры данных.
А я вот считаю, что аппаратно сделать автопилот на пирометрах может кто угодно. Будет вполне нормальный такой себе летающий автопилот. А вот всё остальное, что делает продукт действительно качественным - это правильный софт. И это, по сравнению с пайкой железки, поверь мне, не в 5 и не в 10 раз больше времени и мозгов требует…
Вопрос в готовом продукте - ты прав на 100%, что по мне - купил и забыл проблему со встречами/доставками/подъездами, извини, но мне проблемно, т.к. выходные заняты, в будние на машине к тебе проблемно прорываться… Сейчас время пока есть, но какими темпами у нас наше предприятие превращается в мануфактуру 18-го века - страшно подумать. Наш директор по ходу забыл, что это не фирма, где сотрудникам можно жестко действовать на нервы и понятие ТЗ (трудовое законодательство) отсутствует. Извини за всплеск души…😃
>И создает огромную инерцию в развитии любой системы.
Потому и была написана новая панель, объектно-ориентированная, с афигенно прописанными классами. Так что добавлять новые фичи - просто приятная работа. Сохранение-загрузку настроек в файл и пилот через USB я, например, сделал суммарно часов за 5.
>Только при глобальной смене версии, с изменением структуры данных.
Понял. Я сейчас немного изменил подход, всё новое ложится в конец, не смещая данные.
Нам нужен правильный, доведённый до относительного совершенства и удобства применения софт. Долго ждали - ещё немного подождём.
Но все-таки, Тим, как у тебя дела с “железом”? Процесс идёт?
>Наш директор по ходу забыл, что это не фирма, где сотрудникам можно жестко действовать на нервы и понятие ТЗ (трудовое законодательство) отсутствует. Извини за всплеск души…
Дима, работа есть работа, и её надо работать. Я же знаю, ты любишь свое дело.
А семья есть семья, ее надо любить еще сильнее.
Ну не хватает времени заскочить - придумаем что-нибудь 😃
>Но все-таки, Тим, как у тебя дела с “железом”? Процесс идёт?
Конечно, идет. В мелкий пилот вошло очень много пожеланий и рекомендаций всяческих, дело за малым - отправить платки в печать.
Оптимизировал поиск во внешней памяти, благодаря этому удалось сократить время старта и загрузки автопилота при подаче питания с ~5 сек до ~0.3 сек.
Изменения относительно прошивки верcии 254:
- Убрана поддержка GPS модулей Locosys LS20031, работающих на скорости порта 9600 бод, 1 Гц, убрано переконфигурирование модулей “на лету”
А он уже морально устарел ? Или тут опечатка?
Не опечатка. Просто нет нужды переконфигурировать модуль GPS на лету, тратя на это место в коде OSD, когда можно тот же Locosys заранее переконфигурировать раз и навсегда. А начиная уже не помню с какого времени все локосисы в составе комплекта smalltim mini конфигурируются на 5 Гц и 38400.
V versii “V2.61” vnesena funkcija tenei.
No nikak nepoimu na zasvecenom ekrane dolzno bit vidno cifri ili net???
Nezametil pocti nikakih izmenenii tolko nadpis izmenilas pri starte.
Pokazite kto nibud foto zasvecenogo svetom ekrana, mozet u menia vsio normalno rabotaet 😃
No nikak nepoimu na zasvecenom ekrane dolzno bit vidno cifri ili net???
Требуется еще аппаратная поддержка. В версии Mini - это сделано. Как доработать старую телеметрию, надо спрашивать у Тимофея.
Сами тени почти черные и на засвеченном экране видны. Близкий пример в посте N84.