Smalltim OSD and autopilot (часть 2)
Илья, давайте видео, думаю, поможет.
Готовлюсь к выходу наземки, вылизываю прошивки, и т.д. и т.п.
В поле свежую прошивку наземки так и не проверял, погода вообще мрак.
С GPS модулем автопилота, лежащим на балконе, поворотка потихоньку поворачивается вслед за ползанием координат GPS вокруг стартовой точки.
Пример работы с Google Earth, параллельно с ним гипертерминал:
Поворотка 5 раз в секунду отстреливает следующие данные:
$GSSTG - Ground Station Settings - настройки наземной станции
$GSSTA - Ground Station Status - состояние наземной станции
$GSTR1,
$GSTR2 - Ground Station Telemetry Raw Data 1/2 - две пачки сырых данных прямо с борта
$GPGGA - стандартное сообщение NMEA
$GPRMC - стандартное сообщение NMEA
Формат всех сообщений открыт. В будущем, возможно, где-то что-то немного поменяется, но не сильно.
$GSSTG - целые числа через запятую:
$GSSTG,1481,1686,1904,1103,1974,0,3,90,0,0,0,1
- горизонтальная серва: длина PPM в микросекундах для поворота направо на 180 градусов
- горизонтальная серва: длина PPM в микросекундах для поворота в среднее положение
- горизонтальная серва: длина PPM в микросекундах для поворота налево на 180 градусов
- вертикальная серва: длина PPM в микросекундах для поворота в горизонталь
- вертикальная серва: длина PPM в микросекундах для поворота в вертикаль
- номер звукового эффекта при повреждении данных в видео
- номер звукового эффекта при просадке батареи наземной станции
- пороговое напряжение при просадке батареи наземной станции
- номер звукового эффекта при потере RC связи на борту
- номер звукового эффекта при включении автовозврата на борту
- номер звукового эффекта при потере данных от спутников GPS на борту
- минимальное расстояние, при котором отключается наведение антенны
$GSSTA:
$GSSTA,163,210,3,160,320,90,0,3590,2206,43,-337,0,3,
- количество пакетов данных, успешно прошедших проверку, в секунду
- общее количество пакетов данных, в секунду
- количество циклов успешного обновления полного объема данных от телеметрии, в секунду
- ID платы: 160 - телеметрия с автопилотом
- отдетектированное количество строк в видеосигнале
- угол поворота антенны по горизонтали, в градусах, 0 - нейтраль, увеличение угла - против часовой стрелки
- угол поворота антенны по вертикали, 0 - горизонталь, увеличение угла - вверх
- значение таймера PPM для поворота по горизонтали
- значение таймера PPM для поворота по вертикали
- напряжение батареи наземной станции, вольт*10
- dx до модели по земле /1.11111, сантиметры
- dy до модели по земле / 1.11111, сантиметры
- расстояние до модели по земле, метры
Сейчас убрано, но вернется в релизе:
- версия прошивки, старший номер
- версия прошивки, средний номер
- версия прошивки, младший номер
- дата прошивки, день
- дата прошивки, месяц
- дата прошивки, год
$GSTR1,$GSTR2
- 2х32 байта, записанных в 16-ричной форме. Значащие - только первые 57 байт. Данные ложатся на такую структуру:
typedef struct
{
S32 gps_curlat; // lsb = 0.00001 deg
S32 gps_curlon; // lsb = 0.00001 deg
S32 gps_startlat; // lsb = 0.00001 deg
S32 gps_startlon; // lsb = 0.00001 deg
U16 gps_curspeed; // lsb = 1kmh
S16 gps_startalt; // lsb = 1m
S16 gps_dz; // lsb = 1m
S16 gps_heading; // lsb = 1deg
U16 baro_curspeed; // lsb = 1kmh
U16 baro_curalt; // lsb = 1m
S16 compass_curheading; // lsb = 1deg
S16 compass_bearing_to_base; // lsb = 1deg
U8 autopilot_status;
U8 gps_numsatellites_batteryindicator; // (low 4bits)/battery indicator(high 4 bits)
S16 gps_bearing_to_base; // lsb = 1deg
U16 current; // lsb = 0.01A
U16 mah; // lsb = 1mah
U16 voltage1; // lsb = 0.01/0.1v
U16 voltage2; // lsb = 0.01/0.1v
U16 voltage3; // lsb = 0.01/0.1v
S8 cur_pitch; // lsb = 1deg
S16 cur_roll; // lsb = 1deg
U16 gps_distance; // lsb = 1m
U8 variometers; // low 4 bits = GPS vario, high 4 bits = baro vario
U8 rc_signal_voltage_value_bitmask; // bits 7,6,5 =1 - voltages 1,2,3 > 10v, bit4 = 1 - rc signal present, bits3…0 - numsticks
U16 flight_time_seconds;
S16 temperature; // lsb = 0.1c
// 57 bytes of essential information
U8 nonsense0;
U8 nonsense1;
U8 nonsense2;
U8 nonsense3;
U8 nonsense4;
U8 nonsense5;
U8 nonsense6;
// 7 bytes of data for alignment to 64 bytes
} telemetry_ap_data_type; // 64 bytes
По структуре видно, что данные сгруппированы в пачки по 4 байта (32 бита), это минимальный объем данных, передаваемых в одной строке ТВ сигнала.
Соответственно, все параметры расположены либо на границе в 4 байта, либо внутри пачки в 4 байта, чтобы избежать повреждения.
Вместе с 4 байтами данных передается еще 1 байт идентификатора посылки и 2 байта контрольной суммы.
Но повреждение данных - дело неизбежное, не только из-за неидеальных условий передачи видео, но и из-за построения схемы/логики.
Поворотка не ожидает данных от телеметрии в какой-то четко определенный момент времени после начала кадра или получения синхроимпульса. Напротив, в течение каждой строки поворотка бомбит видеосигнал до тех пор, пока не наступит таймаут или удастся синхронизироваться с фазой заковыривания данных средствами телеметрии.
Это безмерно упрощает схему декодирования данных из видеосигнала и ослабляет требования к качеству видео - на дрожание и сдвиги фазы/синхро поворотке просто покласть в разумных пределах. Зато, с другой стороны, это требует злых проверок данных на корректность на выходе декодера. В результате чего, на примере строки $GSSTA выше, я имею 163 корректных пакета по 4 байта из 210 распознанных пакетов, в искусственно ухудшенных условиях - сбитой настройке уровня сигнала на поворотке.
С учетом 4-кратного дублирования - более чем нормально, можно падать до ~50 пакетов и по-прежнему, не терять в скорости обновления данных на земле.
Наконец,
$GPGGA, GPRMC - стандартные NMEA строки, но с ограничениями:
- время - не UTC время, а время полета
- точность по высоте - до 1м
- точность по широте-долготе - до 0.00001град.
- HDOP,VDOP и прочее не передается
Поворотка представляется системе композитным USB устройством с двумя виртуальными COM портами, для выбора в GoogleEarth можно использовать любой.
Драйвер для поворотки как таковой не нужен в любой версии Windows от XP и выше, 32/64бит, но при первом подключении к ПК нужно подсунуть *.inf файл.
Вроде пока всё.
Круто! Это ж просто мечта!
У меня сразу два вопроса созрело:
- Скорость порта будет 2400?
- С наземки можно будет данные до USB выцепить? Очень хочется часть этой бесценной информации самопальному контроллеру наземки скармливать, чтобы он в случае чего и про самолет писком предупреждал.
так что бы стал отрабатывать руль направления и привет вместо этого включается мотр. че за бред?
Есть в смаллтиме прикол такой: 1 и 2-ой каналы выходы местами попутаны относительно входов. Это учтено? А руль направления там не задействован в калибровке вообще, и в отличие от ФИшки, ворочание носом на РН не действует.
Эта ошибка давно поправлена, в следущей-же партии.
- Скорость порта будет 2400?
Это скорость в гипертерминале для виртуального COM порта. Можно хоть 115200 поставить, всё равно будет работать на скорости USB 😃
С наземки можно будет данные до USB выцепить?
Могу отстреливать на UART, разъем для этого на плате стоит.
контроллеру наземки скармливать, чтобы он в случае чего и про самолет писком предупреждал
Моя ж и так пищит, зачем еще пищать?
imageshack.us/g/220/c9g.mp4/ - вот ссылка там два видео. Я уже не знаю это какойто БРЕД. что только не делал. В режиме АП самолет полностью контролируеться передатчиком, в режиме Стабилизации НЕТ. помоему мне опять попался БРАК. что то мне невезет(((((. НУ другого обяснения я не нахожу… ДУрдом. Может и вправду неисправен?
вот ссылка там два видео. Я уже не знаю это какойто БРЕД. что только не делал. В режиме АП самолет полностью контролируеться передатчиком, в режиме Стабилизации НЕТ. помоему мне опять попался БРАК. что то мне невезет(((((. НУ другого обяснения я не нахожу… ДУрдом. Может и вправду неисправен?
После калибровки диапазонов каналов надо нажимать на кнопку “ЗАВЕРШИТЬ и ЗАПИСАТЬ”(на видео это не было сделано). Так же сразу нужно делать калибровку команд управления.
Самопроизвольное включение газа похоже на наводки на канал газа в квартире. Проверять нужно на улице. Вот если бы вы выложили видео с улицы, и там были бы какие либо проблемы, то тогда бы и дали вам совет. В квартире(как уже раньше вам писали) невозможно провести обьективные тесты. Идите уж на улицу…
Итак все что делал на видео было примером. Записывал я по 100 раз. уже, ничего е меняется. на улеце с газом тоже самое. а вот про коллебровку команд управления можно поподробнее.
что только не делал.
Я тоже не увидел на видео зваершения калибровки диапазонов, а также процедуры “Калибровка команд управления” - что является основным этапом!
Так-же на видео плохо видно “нормальное отображение горизонта”. Он либо постоянно перевернут (тогда сервы и должны быть в раскоряку), либо одновременно меняется крен и тангаж - что весьма странно - либо Вы так руку перемещаете, либо в этом и есть проблемма.
Можете сделать примерно тоже самое, только помедленее. Для начала (РУ можно не трогать), попробуйте руками сысмитировать все основные состояния горизонта (смотрим только картинку самолетика в КП). Ладонь под нижнем вертикальным датчиком постоянно.
- Без поднесения второй руки крен и тангаж должны быть близки к 0.
- Подносим вторую ладонь к 2-м передним горизонтальным датчикам. Моделька в КП должна опустить нос, крен меняться незначительно.
- Вторая рука возле задней пары пирометров - моделька задирает нос, крен тот-же.
- Подносим ладонь справа от гор. прирометров. Самолетик на экране наклоняется по крену, тангаж близок к нулю.
- Ладонь слева. Крен в другую сторону, тангаж близок к 0.
Сможете это воспроизвести? Если нет, проверьте кабель от пиродатчиков - правильно ли разъемы воткнуты в АП?
Если да, еще раз пройдите оба визарда РУ в КП (не забудьте сохранить и записать) и смотрите на раеакцию серв по пунктам 1-5. Они должны компенсировать наклоны моделли в КП.
удалено
а вот про коллебровку команд управления можно поподробнее
Так Вы ее не делали!!!
а вот про коллебровку команд управления можно поподробнее.
В КП она стоит следующей строкой. Калибруете, так же как и диапазоны каналов, по всплывающим подсказкам. Т.е. нажимаете “начать калибровку” и дальше читаете, выполняете подсказки. Но это не решит проблему с наводками в квартире. Как откалибруете, идите в поле и проверяйте. Если будут проблемы, то снимите в поле видео и выкладывайте.У меня в квартире, при включении стабилизации, все сервы с ума сходят, не реагируют на стики - в поле все отлично!
В квартире(как уже раньше вам писали) невозможно провести обьективные тесты.
Можно и нужно. Процентов на 90 все настройки делаются и проверяются дома. В поле - только тонкая подстройка режимов. Но здесь до тонкостей еще далеко. 😃
Но здесь до тонкостей еще далеко. 😃
+1:)
а вот про коллебровку команд управления можно поподробнее.
Илья, вот цитата из руководства ( smalltim.ru/…/autopilot_manual 3-1-9.pdf ):
КАЛИБРОВКА RC КАНАЛОВ
Как входами автопилота от RC приемника, так и выходами являются каналы с сигналом в формате PPM.
Калибровка каналов радиоуправления необходима для того, чтобы автопилот имел представление о PPM,
соответствующем нейтральным положениям и о полном диапазоне изменения входных каналов.
Имея эту информацию, автопилот в любой момент может вычислить положения ручек RC передатчика и использовать их для управления моделью.
С другой стороны, калибровка каналов радиоуправления необходима для того, чтобы автопилот генерировал корректный выходной сигнал на сервомашинки,
полноценно использующий доступный диапазон в каждом канале и в то же время не выходящий за границы этого диапазона во избежание
механических поломок сервомашинок и элементов конструкции модели.
То есть, калибровка RC каналов заставляет автопилот пользоваться точно такими же значениями нейтралей и крайних точек каналов,
что установлены на Вашем RC передатчике, и если Ваша аппаратура уже настроена по расходам и оттриммирована для Вашей модели,
то при калибровке RC каналов автопилот автоматически учтет и запомнит эти настройки Вашей аппаратуры.
Следует учесть, что нейтральными положениями автопилот считает средние положения любых ручек RC передатчика, включая ручку на канале газа, то есть
нейтральное положение канала газа для автопилота – среднее положение ручки, или ровно 50% газа.
Перед началом калибровки убедитесь в том, что двигатель модели отключен, и манипуляции с ручками RC передатчика не приведут к неожиданному включению двигателя.
Нажав кнопку Начать калибровку, следуйте указаниям Контрольной Панели.
… … …
Завершив калибровку, нажмите кнопку Завершить и записать.
КАЛИБРОВКА КОМАНД УПРАВЛЕНИЯ
Для того, чтобы автопилот мог адекватно управлять моделью в режиме стабилизации и автономного полета, ему необходимо показать,
как Вы, управляя моделью вручную, изменяете сигналы в каналах PPM для управления моделью по крену, тангажу и газу.
Управляя моделью самостоятельно, автопилот будет повторять Ваши команды.
Управляя моделью в режиме стабилизации или автономного полета, автопилот формирует выходные значения PPM,
смешивая запомненные при калибровке значения PPM для команд управления по крену, тангажу и газу в пропорциях,
вычисленных подсистемами стабилизации и навигации. Таким образом, автопилот фактически копирует команды пилота при управлении моделью.
Математически каждая из команд управления моделью представляет собой 6-компонентный (6 каналов) вектор состояния PPM,
а выходные каналы PPM в автономном полете и в режиме стабилизации определяются как линейная комбинация векторов команд управления,
где весовые коэффициенты определяются подсистемами стабилизации и навигации.
… … …
То есть, калибруя команды управления, Вы, Илья, учите автопилот пользоваться правильными сервами для выполнения нужных команд.
На калибровке просят крен вправо - показываете на пульте полный крен вправо, и жмете ОК. И так далее.
В конце - Завершить и записать.
Без этого АП будет в лучшем случае бессмыссленно двигать сервами.
Все так я и знал “Балбес” вобщем вроде как все заработало. отсалось только одно но. Никак не могу настроить что бы при отключении аппаратуры включался АП. все Файл сефы я отключил. но при отключении аппы ничего не происходит. и еще вопрос функцыя Автовозврат это и есть пренудительный рижим АП? но тогда почему я находясь в этом режиме контролирую все управление? или опять затупил
П.С. простите что доставляю столько хлапот. Нужно быть внимательнее. и самое главное что я это читал, но все ровно не сделал(((
Файл сефы я отключил. но при отключении аппы ничего не происходит.
Поэтому и не происходит.
Надо настроить FS так, чтобы по правляющему каналу был режим “Принудительное вклчение АП”.
А тка-же по любому другому канлу выход за пределыдиапазона калибровки (это поможет различать пропадание связи и ручное включение RTH).
Никак не могу настроить что бы при отключении аппаратуры включался АП.
Илья, запустите Контрольную Панель, подключите АП к компутеру, ткните в Диагностику, отмотайте окошко с текстом в самый низ и посмотрите, обнуляется ли число PPM импульсов, задетектированных автопилотом в во входных каналах, когда Вы выключаете передатчик.
Если это так, то выставьте в настойках определения RC сигнала пропадание PPM в одном из каналов, в том, где он пропадает.
После этого откройте панель калибровки каналов и последите за строкой Состояние RC сигнала, включая и выключая пульт. Должно быть ОК и Потеря RC сигнала, соответственно.
и еще вопрос функцыя Автовозврат это и есть пренудительный рижим АП?
Да, Вы включаете автовозврат принудительным включением автовозврата. Ну, или он сам может включиться, если Вы разрешили самостоятельное включение автовозврата при потере связи, при удалении выше Х метров, и т.д.
почему я находясь в этом режиме контролирую все управление
Если Вы проверяете это дома, то GPS, скорее всего, не находит спутники. Пока спутники не найдены, АП блокирует автовозврат, оставаясь в режиме ручного управления или в стабилизации - без спутников АП не знает, куда лететь домой.
Илья, мне немного боязно за Вашу модель. Пожалуйста, пробегитесь глазами по Руководству ( smalltim.ru/…/autopilot_manual 3-1-9.pdf ). Будут вопросы - задавайте сейчас, а не после неудачных вылетов.
Могу отстреливать на UART, разъем для этого на плате стоит.
Это было бы замечательно! UART подойдет на все 100%
Моя ж и так пищит, зачем еще пищать?
Ну это так, образно. Пока мой контроллер молча работает, только лампочки ошибок зажигает. Со временем планирую еще и речевым информатором дополнить, тогда очень пригодится информация с борта - будут напоминания о севшей батарейке, плохой связи и прочем.
Илья, мне немного боязно за Вашу модель. Пожалуйста, пробегитесь глазами по Руководству ( smalltim.ru/netcat_files/File...al 3-1-9.pdf ). Будут вопросы - задавайте сейчас, а не после неудачных вылетов.
будет жить))))))))))))))))))))))))
постараюсь больше “на дурока не делать!”))))) я сам не знаю как можно было так жестко затупить… это все психи мои))))
это модель тренажер ее не жако, как обучусь всем тонкостям именно вашего АП так буду ставить его на Шторх 2.5 м копию… до этого юзал FY-21 там все просто было… но нет настроек.
И еще момент, нужно следить за пристыковкой разъемов к АП. Земли обоих шлейфов должны быть с одной стороны у края платы. В моем варианте это черный провод на вертикальном и коричневый на горизонтальном пиродатчике и, самое главное, провода проверять на предмет не отломался ли… У меня была ситуевина на днях, стабилизация валила самоль на правое крыло в штопор, долго не мог понять че за бред, загоню самоль повыше включаю СТ-самоль на крыло и к земле, выключаю выравниваю… так несколько раз. АП даже побоялся включать. После удачного приземления разобрал всю начинку в самоле нашел - оторвалась земля на разъеме вертикального пиродатчика. Кстати бок чисто мой, АП сувал туда-сюда раз сто, вот и досувался…