Перейти к содержимому
272
Ответы на контрольные вопросы курса

Ответы на контрольные вопросы курса #43

Mission Planner для технического персонала · Урок 43 из 43 · Модуль 5. Справочные материалы

Развёрнутые ответы на вопросы всех уроков и решения расчётных заданий. Сверяйтесь только после того, как сформулировали свой ответ.

Ответ, подсмотренный до попытки, не запоминается. Сначала формулируйте своими словами, потом сверяйтесь с текстом.

Содержание

Урок 3. Подключение к аппарату: USB, радио, сеть

Вопросы к уроку: Подключение к аппарату: USB, радио, сеть

1. Все контуры стабилизации и навигации выполняются на полётном контроллере автономно, с частотой до 400 Гц. Наземная станция лишь отправляет команды и принимает телеметрию. При потере связи автопилот продолжает выполнять текущий режим; реакция определяется параметром FS_GCS_ENABLE, и по умолчанию во многих конфигурациях она отсутствует.

2. Миссия — это десятки пунктов, параметры — тысяча с лишним записей. Кроме того, миссия передаётся по протоколу с подтверждением каждого элемента, а параметры в старой схеме шли отдельными пакетами PARAM_VALUE. MAVFtp существенно ускорил загрузку параметров, передавая их одним блоком.

3. NetID (иначе модемы не образуют пару) и Air Speed (иначе рассинхронизация физического уровня). Скорость последовательного порта должна совпадать между модемом и подключённым к нему устройством, но у наземного и бортового модема она может различаться.

4. Падение txbuffer означает переполнение буфера передачи: данных генерируется больше, чем канал способен передать. Действия: снизить частоты потоков телеметрии в CONFIG → Planner → Telemetry Rates и повысить Air Speed модема при достаточном качестве связи. Поле приходит от самого радиомодема сообщением RADIO_STATUS, поэтому по USB и в симуляторе оно равно нулю.

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

↑ К оглавлению

Урок 4. Экран DATA: полётный экран оператора

Вопросы к уроку: Экран DATA: полётный экран оператора

1. Всего вкладок четырнадцать. В режиме Basic видно десять: скрыты Actions, Status, Servo/Relay и Scripts — те, что нужны для настройки и диагностики. В режиме Advanced видно тринадцать: появляются все служебные вкладки, а вместо упрощённой Actions (Simple) показывается полная Actions. Набор задаётся в CONFIG → Planner → Layout.

2. Панель показывает дисперсии оценок фильтра: Velocity, Pos Horiz, Pos Vert, Compass, Terrain Alt. Значение 0,9 в поле Compass Variance означает, что фильтр почти не доверяет магнитометру: курс по компасу сильно расходится с курсом, вычисленным по движению. Причины — магнитные помехи, плохая калибровка, влияние тока силовых проводов.

3. Префикс PreArm означает проваленную предполётную проверку: команда арминга ещё не отправлялась, автопилот сам сообщает, что не готов. Префикс Arm означает отказ уже на самой команде арминга. Разница важна при диагностике: в первом случае ищут причину в состоянии систем, во втором — в условиях конкретного режима.

4. Красный цвет означает, что условие пункта не выполнено прямо сейчас — например, напряжение батареи ниже заданного порога. Взлететь это не помешает: PreFlight не блокирует арминг, это дисциплина оператора, а не система защиты. Галочка справа — отметка оператора, она не связана с автоматической проверкой.

5. Команда Disarm, отправленная в полёте, при определённых условиях мгновенно останавливает моторы. ArduPilot защищается от этого, но защита срабатывает не во всех режимах и состояниях. Для прекращения полёта существуют RTL и LAND. Особой осторожности требуют три пункта списка Do Action: Terminate_Flight отключает управление полностью и роняет аппарат, Do_Parachute выпускает парашют, Format SD Card стирает карту вместе со всеми логами.

6. На мультироторе выходы с 1 по 4 — это моторы, и ручное управление ими с этой вкладки заблокировано намеренно. Проверять моторы нужно через SETUP → Optional Hardware → Motor Test, где есть контроль оборотов и таймер. Перед любыми проверками снимите винты.

7. Скрипты вкладки Scripts выполняются на компьютере оператора и управляют аппаратом снаружи, через телеметрию. Lua-скрипты автопилота лежат на SD-карте в каталоге APM/scripts/ и работают внутри полётного контроллера. Обрыв связи останавливает сценарий станции, но не влияет на бортовой скрипт.

8. Подменю Mass отправляет команды всем подключённым аппаратам одновременно: Arm, Arm(Force), GUIDED, AUTO, TAKEOFF, Fly To. Пункт Arm(Force) вдобавок пропускает предполётные проверки, то есть активирует аппарат, который сам себя считает неготовым. В одиночной работе этой веткой пользоваться незачем.

9. Кривая nav_roll — крен, заданный автопилотом, roll — фактический. Они должны идти вплотную с небольшим запаздыванием. Заметное отставание означает вялый отклик регуляторов, колебания вокруг заданной — перебор с коэффициентами. Правая ось нужна, когда на одном графике выводятся величины разного масштаба: без неё кривая напряжения рядом с углами в градусах выродится в прямую линию.

10. Журнал .tlog пишет наземная станция: он содержит только то, что дошло по радиоканалу, зато с текстовыми сообщениями и в реальном темпе — по нему разбирают, что видел оператор. Бортовой .bin пишет автопилот на свою карту: он полнее и с более высокой частотой записи, без пропусков связи — по нему разбирают, что делал аппарат.

↑ К оглавлению

Урок 5. Экраны PLAN, SETUP и CONFIG

Вопросы к уроку: Экраны PLAN, SETUP и CONFIG

1. Distance — полная длина маршрута с учётом всех точек. Prev — расстояние от курсора до предыдущей точки. AZ — азимут от предыдущей точки на курсор в градусах, где 0 соответствует северу. Home — расстояние от курсора до точки дома. Счётчики обновляются при движении курсора и позволяют прикинуть дальность, не открывая измерительных инструментов.

2. Обычная запись подтверждает приём каждого пункта миссии, Write Fast отправляет их потоком без построчного подтверждения. На нестабильном радиоканале часть команд может потеряться незаметно. Чтение обратно кнопкой Read — единственный надёжный способ убедиться, что в памяти автопилота лежит именно ваш маршрут: программа сообщит об успехе записи даже тогда, когда до аппарата дошла лишь часть пунктов.

3. В режиме Absolute высота отсчитывается от уровня моря, а не от точки взлёта. Если площадка расположена на высоте 587 метров, а в миссии указано 100, аппарат попытается снизиться почти на полкилометра. Подтверждение — защита от самой дорогой ошибки планирования.

4. Страница рассчитывает около двух десятков параметров по четырём исходным числам, главное из которых — диаметр винта в дюймах. От него зависят частота фильтра гироскопа INS_GYRO_FILTER, фильтры регуляторов, пределы углового ускорения и коэффициент компенсации нелинейности тяги. Остальные три числа — количество ячеек батареи и напряжения заряженной и разряженной ячейки — задают пороги защиты по напряжению.

5. Страница записывает всего три параметра: INS_LOG_BAT_MASK, INS_LOG_BAT_CNT и LOG_BITMASK. Это подготовка к пакетной записи сырых данных гироскопов в лог, а не включение анализатора спектра и не настройка фильтра. Сам режекторный фильтр настраивается параметрами INS_HNTCH_* уже после анализа записанного лога.

6. Поле Rate Roll P соответствует параметру ATC_RAT_RLL_P, поле Gyro в группе Basic Filters — параметру INS_GYRO_FILTER, поле Altitude Hold P — параметру PSC_POSZ_P, в прошивках 4.7 и новее PSC_D_POS_P.

7. Отдельного пункта нет, потому что дерево префиксов встроено в саму страницу CONFIG → Full Parameter List как левая панель. Она сворачивается и разворачивается кнопкой со стрелкой; выбор ветки фильтрует таблицу справа.

8. Изменить значение в колонке Value, нажать Write Params, убедиться, что подсветка изменения исчезла, при наличии в описании пометки о необходимости перезапуска перезагрузить автопилот, затем нажать Refresh Params и проверить записанное значение.

↑ К оглавлению

Урок 6. Протокол MAVLink: как аппарат разговаривает со станцией

Вопросы к уроку: Протокол MAVLink: как аппарат разговаривает со станцией

1. Телеметрия передаётся потоком без гарантии доставки и с конечной частотой: значение уходит с борта, идёт по радиоканалу и отрисовывается уже с задержкой. Потерянный пакет не переспрашивается, следующий придёт через доли секунды. Поэтому на экране всегда состояние аппарата на некоторый момент в прошлом, а не текущее.

2. MAVLink 1 имеет заголовок 6 байт и до 255 типов сообщений. MAVLink 2 — заголовок 10 байт, расширяемые поля, подпись пакетов и до 16 777 215 типов сообщений. Версия переключается параметром SERIALx_PROTOCOL: значение 2 включает MAVLink 2, значение 1 — первую версию. Правится в SETUP → Mandatory Hardware → Serial Ports или в CONFIG → Full Parameter List.

3. Сообщения сгруппированы в потоки, и частота задаётся сразу всей группе. Вибрации передаются сообщением VIBRATION в потоке EXTRA3 вместе с EKF_STATUS_REPORT, BATTERY_STATUS, WIND и RANGEFINDER. Поднять частоту только вибраций невозможно — ускорится вся группа, а вместе с ней вырастет нагрузка на канал.

4. Цифра означает номер канала связи, а не физического порта. Первый набор относится к USB, второй обычно к первому телеметрийному порту. Подняв частоты «для радио», легко по ошибке нагрузить USB-канал и не увидеть эффекта в поле. Проверять фактический результат нужно в MAVLink Inspector.

5. Параметры адресации правятся только в CONFIG → Full Parameter List — специальной страницы для них нет. Поиск по SYSID может ничего не дать, потому что в прошивках 4.7 и новее группа переименована: SYSID_THISMAV стал MAV_SYSID, SYSID_MYGCS — MAV_GCS_SYSID. Надёжный приём — ввести оба варианта через вертикальную черту: SYSID|MAV_SYSID.

6. Идентификатор станции управляет тремя вещами: срабатыванием GCS-failsafe, приёмом RC-override и приёмом ручного управления, в том числе с джойстика. Телеметрию аппарат при этом продолжает отправлять всем, и обычные команды принимает. Полная блокировка чужих пакетов включается отдельно: SYSID_ENFORCE = 1, в новых прошивках — бит 0 в MAV_OPTIONS.

7. Параметр аппарата задаёт, какой идентификатор автопилот ждёт от станции. Поле CONFIG → Planner → GCS ID задаёт, каким идентификатором представляется сама программа; это настройка Mission Planner, она не пишется в автопилот. При расхождении картина выглядит загадочно: телеметрия идёт и HUD живой, но джойстик не работает и GCS-failsafe не срабатывает.

8. Каждому борту назначается уникальный идентификатор аппарата: SYSID_THISMAV, в новых прошивках MAV_SYSID — значения 1, 2, 3 и так далее. Иначе станция получит смешанный поток и будет считать несколько бортов одним аппаратом. Для группы дополнительно включают строгую проверку: SYSID_ENFORCE = 1 либо MAV_OPTIONS = 1.

↑ К оглавлению

Урок 7. Система параметров ArduPilot

Вопросы к уроку: Система параметров ArduPilot

1. Все параметры без исключения доступны в CONFIG → Full Parameter List. Специализированные страницы — Extended Tuning, GeoFence, Initial Tune Parameters, User Params — правят те же значения, но показывают лишь небольшую их часть под понятными подписями и с проверкой диапазонов. Полный список даёт доступ ко всему, но без интерпретации.

2. PSC_VELXY_I — Position Control, контур горизонтальной скорости, интегральный коэффициент; в прошивках 4.7 и новее называется PSC_NE_VEL_I. EK3_SRC1_YAW — EKF3, первый набор источников, источник курса. Q_ASSIST_SPEED — QuadPlane, скорость, ниже которой включается помощь подъёмных моторов.

3. Разработчики ArduPilot периодически переименовывают параметры, приводя единицы к системе СИ и делая префиксы единообразными. Крупнейшая переработка прошла в версии 4.7. Значения при обновлении прошивки переносятся автоматически, но имена в статьях и чужих конфигурациях остаются старыми. Искать нужно по обоим вариантам сразу, вводя их через вертикальную черту, например WPNAV|WP_SPD.

4. Параметр не только переименован, но и переведён в другие единицы: WPNAV_SPEED задавался в сантиметрах в секунду, WP_SPD — в метрах в секунду. Значение 1000, перенесённое напрямую, означает попытку лететь со скоростью километр в секунду. Прошивка обрежет его по верхней границе диапазона, но настройка окажется не той, что задумана.

5. Это не переименование, а инверсия смысла: ARMING_CHECK перечисляет проверки, которые нужно выполнять, а ARMING_SKIPCHK — те, которые нужно пропустить. Автоматическая конверсия при обновлении может дать неверный результат, а ошибка означает молча отключённые предполётные проверки.

6. Для применения типового набора настроек, не затрагивая индивидуальные калибровки: наборы фильтрации под конкретные винты, стандартный набор failsafe для организации, набор навигационных скоростей под тип задачи. Mission Planner применит только перечисленные в файле строки, остальные параметры не тронет.

7. Кнопка Load from file только подставляет значения из файла в таблицу на экране, подсвечивая изменённые строки. В автопилоте при этом остаются прежние значения — они записываются лишь по нажатию Write Params. Это удобно: между загрузкой и записью можно просмотреть, что именно изменится.

8. MAVFtp передаёт таблицу параметров одним блоком вместо тысячи отдельных пакетов, многократно ускоряя подключение. Требует MAVLink 2 (SERIALx_PROTOCOL = 2), поддержки со стороны прошивки версии 4.1 и новее и модема, не разрывающего длинные пакеты. Отдельной галочки в интерфейсе нет — механизм включается автоматически.

↑ К оглавлению

Урок 8. Прошивка автопилота: выбор версии и процедура

Вопросы к уроку: Прошивка автопилота: выбор версии и процедура

1. Stable — проверенные релизы для реальной эксплуатации, риск минимальный. Beta — сборки для тестировщиков и тех, кому нужна конкретная новая функция: известные ошибки в них исправляются, но неизвестные встречаются. Latest, он же master, — ветка разработки для разработчиков: может не собраться, не взлететь или потерять калибровки.

2. Обновление меняет значения по умолчанию, иногда переименовывает или удаляет параметры, а изредка сбрасывает калибровки. Всё это требует полной перепроверки на земле и тестового полёта, то есть отдельного времени. В день ответственной задачи такого запаса нет, а обнаружить проблему в воздухе дороже, чем отложить обновление.

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

4. Иконка аппарата заливает последнюю стабильную версию для этого типа. All Options открывает полный список: все версии, все платы, все каналы. Нужна, когда требуется конкретная версия — например, откатиться на предыдущую стабильную ветку или повторить сборку, на которой аппарат уже облётан.

5. Заливка прошивки требует прямого доступа к загрузчику платы по COM-порту, а при активном MAVLink-соединении порт занят. Поэтому программа блокирует экран и показывает сообщение «You cannot load new firmware while connected via MAVLink»: из всех элементов остаётся только Bootloader Update. Это касается и симулятора SITL — подключение к нему такое же MAVLink-соединение. Чтобы увидеть иконки аппаратов и список версий, нужно нажать DISCONNECT.

6. Нет, кабель остаётся подключённым всё время. Разорвать нужно только программное соединение — кнопкой DISCONNECT: при заливке программа сама открывает COM-порт и говорит с загрузчиком напрямую, а занятый MAVLink-подключением порт она получить не сможет. Перевод платы в режим загрузчика программа выполняет сама, отправив команду перезагрузки; плата на несколько секунд пропадает с порта и появляется снова уже как устройство-загрузчик.

7. Сообщение «Please unplug the board and reconnect» появляется, только когда программа не смогла достучаться до платы за три секунды: не нашла сигнал heartbeat или не получила ответ на команду перезагрузки в загрузчик. При штатной работе его быть не должно, и появление означает проблему со связью — чаще всего кабель, порт или занятое другим приложением соединение. В этом случае действительно нужно вынуть кабель и вставить снова: у программы есть 30 секунд на повторный поиск платы.

8. Сначала простое: сменить кабель, поскольку кабели без линий данных — самая частая причина; сменить порт USB на встроенный, не через хаб; проверить, что порт виден в системе и выбран в программе. Затем — Force Bootloader на экране Install Firmware. Далее аппаратный способ: зажать DFU или Boot при подключении USB либо дважды нажать Reset. В крайнем случае скачать файл .apj с сервера ArduPilot вручную и залить через Load custom firmware.

9. У разных прошивок разные наборы параметров: значительная часть имён из файла ArduCopter в ArduPlane просто не существует, а совпадающие по имени могут иметь другой смысл. Поэтому при смене типа аппарата все параметры сбрасываются, и настройку выполняют с нуля, включая все калибровки из SETUP → Mandatory Hardware.

↑ К оглавлению

Урок 9. Конфигурация рамы и ориентация контроллера

Вопросы к уроку: Конфигурация рамы и ориентация контроллера

1. FRAME_CLASS и FRAME_TYPE. Проверка — через Motor Test со снятыми винтами: порядок отклика моторов и направление вращения сверяются с диаграммой на сайте ArduPilot.

2. Включение мультироторной части в прошивке ArduPlane. Порождает два независимых набора настроек: самолётный (TECS, L1/NPFG, RLL_RATE_*) и мультироторный (Q_A_*, Q_P_*, Q_WP_*), которые настраиваются раздельно.

3. Калибровка акселерометра определяет смещения в системе координат, уже развёрнутой согласно AHRS_ORIENTATION. Изменение ориентации после калибровки делает записанные смещения бессмысленными.

↑ К оглавлению

Урок 10. Калибровка акселерометра и компаса

Вопросы к уроку: Калибровка акселерометра и компаса

1. Полная калибровка определяет смещения и масштабные коэффициенты всех трёх осей каждого IMU и требует шести точных положений аппарата. Calibrate Level работает только с одним горизонтальным положением и правит лишь AHRS_TRIM_X и AHRS_TRIM_Y, то есть учитывает наклон установки платы относительно корпуса. Полную процедуру делают при сборке и после механических изменений, а Calibrate Level достаточно, когда аппарат слегка уводит вбок в ALT_HOLD, но в остальном ведёт себя нормально.

2. Дрожание рук создаёт паразитные ускорения, которые процедура принимает за постоянное смещение датчика. Результат — неверные offsets и кривой горизонт. Нужна неподвижная опора: ровный стол, подставки, для крупных аппаратов коробка или ящик с вырезом.

3. Hard-iron — это постоянное магнитное поле рядом с датчиком: магниты моторов, ферромагнитный крепёж, динамики. На сфере калибровки оно сдвигает центр из нуля, лечится обычными offsets. Soft-iron — искажение самого поля Земли стальными и никелевыми деталями, оно не смещает сферу, а деформирует её в эллипсоид; компенсируется масштабными коэффициентами по осям.

4. Fitness 20 попадает в диапазон 16–30, то есть подгонка плохая. Калибровку нужно повторить в другом месте, подальше от арматуры, автомобилей и строений, предварительно сняв часы и телефон. Если значение не улучшается, проблема в установке компаса на аппарате, а не в месте калибровки.

5. Внутренний компас платы расположен вплотную к силовой электронике и питающим проводам, поэтому шумит сильнее внешнего на мачте. Автопилот сводит показания всех включённых компасов, и один зашумлённый датчик портит общее решение, вызывая сообщения о расхождении компасов. Один хороший компас надёжнее пары «хороший плюс шумящий».

6. При поднятии газа перевёрнутые и переставленные через один луч винты создают тягу вниз и прижимают аппарат к земле вместо того, чтобы поднимать его. Это единственное, что удерживает закреплённый аппарат от отрыва на 50–75 процентах газа.

7. Магнитная помеха от силовой части пропорциональна току, и компенсация строится именно на этой зависимости. Без датчика тока измерять нечего: остаётся вариант компенсации по газу, но связь помехи с газом нелинейна, поэтому такой режим не рекомендуется.

8. Это «серая зона» между 31 и 60 процентами: у одних аппаратов при таком уровне помех LOITER и RTL работают приемлемо, у других нет. Программная компенсация справится не всегда, поэтому правильнее устранить причину механически — вынести компас на мачту, скрутить силовые провода попарно, отодвинуть автопилот от силовой части.

9. CompassMot снимает данные в одной точке пространства при неподвижном аппарате и одной его ориентации относительно поля Земли. MagFit использует запись реального полёта на разных курсах, высотах и токах, поэтому лучше разделяет постоянные смещения, масштабные искажения и влияние тока. Подряд их выполнять нельзя, потому что обе процедуры пишут в одни и те же параметры COMPASS_MOTCT и COMPASS_MOT_*: поправки наложатся друг на друга и результат окажется хуже, чем без компенсации вовсе.

10. В радианах. Вручную его обычно не трогают, потому что при включённом COMPASS_AUTODEC значение подставляется автоматически по координатам GPS из встроенной модели магнитного поля Земли и обновляется при перелёте на большие расстояния.

↑ К оглавлению

Урок 11. Калибровка радиоуправления и регуляторов оборотов

Вопросы к уроку: Калибровка радиоуправления и регуляторов оборотов

1. По каждому каналу записываются RCn_MIN, RCn_MAX и RCn_TRIM. Mission Planner сохраняет канал только при выполнении всех условий сразу: минимум строго меньше максимума, ни одно значение не равно нулю, а нейтраль лежит внутри найденного диапазона. Если условие нарушено (например, тумблер не прогнали и границы совпали), канал пропускается молча, без сообщения об ошибке. Поэтому итоговое окно со списком «Channel: Min | Max» нужно просматривать: неподключённые и непрогнанные каналы видны в нём как 1500 ± 2.

2. Реверс, заданный параметром RCn_REVERSED, живёт в автопилоте и теряется при сбросе параметров, а при замене приёмника или переносе настроек на другой аппарат приводит к неожиданному направлению управления. Кроме того, при отладке причину приходится искать в двух местах сразу — в аппаратуре и в параметрах. Реверс в передатчике остаётся вместе с моделью и очевиден при проверке.

3. Калибровка нужна аналоговым PWM-регуляторам (MOT_PWM_TYPE = 0), потому что регулятор определяет команду по длительности импульса и должен запомнить её границы. Цифровым DShot150…DShot1200 (значения 4–7) калибровка не нужна: значение газа передаётся числовым кодом, границы диапазона не требуются. Brushed не калибруется, для OneShot обычно тоже не требуется, а в режимах PWMRange и PWMAngle границы задаются параметрами SERVOn_* индивидуально по каждому выходу.

4. Кнопка не запускает калибровку немедленно: она записывает ESC_CALIBRATION = 3, то есть взводит флаг «войти в режим калибровки при следующем запуске». Сама процедура начинается после полного обесточивания и повторной подачи питания: прошивка ждёт нажатия предохранительного выключателя, напоминая об этом сообщением «ESC calibration: Push safety switch», затем пять секунд удерживает полный газ и сбрасывает его в ноль. Флаг сбрасывается в 0 в начале процедуры, поэтому следующий старт будет обычным.

5. Motor Emergency Stop (RCn_OPTION = 31) мгновенно снимает сигнал с моторов, при этом аппарат остаётся активированным. Дизарминг выполняется штатно, проверяет условия и срабатывает не всегда мгновенно. Отдельный легкодоступный тумблер нужен потому, что в аварийной ситуации на земле — опрокидывание, попадание постороннего предмета в винты, наматывание — счёт идёт на доли секунды и искать нужную команду в интерфейсе некогда.

6. Mission Planner передаёт положение стиков сообщением RC_CHANNELS_OVERRIDE, то есть подменяет показания приёмника значениями с USB-устройства. Для реального полёта способ непригоден по двум причинам. Во-первых, задержка канала связи между наземной станцией и аппаратом непредсказуема, и управление получается запаздывающим. Во-вторых, при пропадании связи сообщения перестают приходить, и по истечении времени RC_OVERRIDE_TIME (по умолчанию 3 секунды) прошивка считает управление потерянным и переходит в failsafe. В симуляторе это безопасно, а в воздухе означает потерю управления. Для реального аппарата управление ведётся только через приёмник.

7. Mission Planner опрашивает у USB-устройства только кнопки, а в классическом режиме USB-джойстика EdgeTX отдаёт каналы 1–8 осями. Трёхпозиционный тумблер, назначенный на канал, приходит в компьютер как ось, поэтому Detect в правой части экрана его не находит — там определяются только физические кнопки пульта и слайдеры. Правильное решение: оставить тумблер каналом RC в левой части экрана и назначить функцию параметром прошивки, например RC7_OPTION = 153 (ArmDisarm). Это работает потому, что подменённые каналы приходят в прошивку тем же путём, что сигнал приёмника, и вспомогательные функции отрабатывают одинаково. Существует и расширенный режим USB-джойстика EdgeTX, где каналу можно задать тип «кнопка», но он доступен только на пультах с флеш-памятью от 1 МБ; на Zorro, Pocket и TX12 с процессором STM32F407xE (512 КБ) этот пункт меню в прошивке отключён и отсутствует.

↑ К оглавлению

Урок 12. Монитор батареи и итоговая проверка перед полётом

Вопросы к уроку: Монитор батареи и итоговая проверка перед полётом

1. По залитой при зарядке ёмкости. Полностью зарядите батарею, полетайте до расхода хотя бы половины, запишите потребление, показанное автопилотом, затем зарядите батарею зарядным устройством с подсчётом залитой ёмкости. Новый коэффициент получается умножением старого на отношение реальной ёмкости к показанной: \( \mathrm{BATT\_AMP\_PERVLT}_{\mathrm{нов}} = \mathrm{BATT\_AMP\_PERVLT}_{\mathrm{стар}} \times \dfrac{C_{\mathrm{реальная}}}{C_{\mathrm{показанная}}} \). Одной итерации обычно достаточно.

2. Включает сравнение порога не с мгновенным напряжением, а с напряжением, скорректированным на просадку. Автопилот непрерывно оценивает внутреннее сопротивление батареи по совместному изменению тока и напряжения и вычисляет, каким было бы напряжение без нагрузки. Это устраняет ложные срабатывания failsafe на пиках тяги, когда напряжение кратковременно проваливается на вполне живой батарее. Компенсация требует работающего датчика тока: без измерения тока поправку вычислить не из чего.

3. Задержка в секундах, в течение которой напряжение должно непрерывно оставаться ниже порога, прежде чем сработает failsafe. Она отсеивает короткие провалы напряжения при резком увеличении тяги. Значение по умолчанию 10 секунд, диапазон 0–120. Ноль отключает реакцию на низкое напряжение, то есть проверка перестаёт работать вовсе, а не срабатывает мгновенно.

4. Потому что у обычной, не «умной» батареи счётчик израсходованной ёмкости обнуляется при каждой перезагрузке автопилота. Если подключить наполовину разряженную батарею и включить питание, прошивка будет считать её полной, и проверка по остатку заряда пропустит взлёт. Напряжение же измеряется физически и обмануть себя не даёт, поэтому BATT_ARM_MAH применяют только совместно с BATT_ARM_VOLT.

5. Это вспомогательные списки Mission Planner, а не параметры прошивки. Они подставляют в поля калибровки заранее известные значения для конкретной модели модуля питания и конкретной платы: коэффициент делителя BATT_VOLT_MULT, коэффициент тока BATT_AMP_PERVLT, а также номера аналоговых входов BATT_VOLT_PIN и BATT_CURR_PIN. Выбор платы важен потому, что у разных контроллеров датчики подключены к разным входам. Подставленные значения усреднённые, поэтому их всё равно уточняют калибровкой по мультиметру.

↑ К оглавлению

Урок 13. Режимы полёта мультиротора

Вопросы к уроку: Режимы полёта мультиротора

1. STABILIZE не использует GPS, компас и контуры положения — работают только гироскопы, акселерометры и внутренние контуры углов и угловых скоростей. Поэтому нормальное поведение в STABILIZE означает, что механика, вибрации и базовый тюнинг в порядке, и причину проблем следует искать выше — в навигации. Плохое поведение уже в STABILIZE указывает на механику, вибрации или PID, и заниматься навигацией до их устранения бессмысленно.

2. В LOITER стик задаёт скорость перемещения: отклонение преобразуется в желаемое ускорение для контроллера положения, а нужный угол наклона вычисляет уже сам контроллер. В POSHOLD стик задаёт угол наклона напрямую, как в STABILIZE, а контроллер удержания подключается только после отпускания стика. Три следствия: первое — в LOITER скорость ограничена параметром LOIT_SPEED (в 4.7+ LOIT_SPEED_MS), в POSHOLD она ограничена только максимальным углом наклона, поэтому при одинаковом отклонении стика аппарат разгоняется сильнее; второе — в POSHOLD оси крена и тангажа независимы, можно лететь вперёд, одновременно удерживая позицию по боковой оси, а в LOITER контроллер работает с вектором скорости целиком; третье — реакция на резкое движение стика в POSHOLD мгновенная, а в LOITER сглаживается контуром навигации.

3. Это запоминание наклона, необходимого для противодействия ветру. Пока аппарат стоит в режиме удержания, POSHOLD оценивает требуемый угол и затем прибавляет его к углу, который задаёт пилот, и к углу торможения. Оценка начинается через 1,5 секунды после входа в удержание и обновляется только когда аппарат практически неподвижен. Величина поправки ограничена двумя третями максимального угла наклона, чтобы пилот всегда мог перебороть автоматику. При смене режима или посадке оценка сбрасывается. В LOITER отдельного механизма не нужно: там снос парируется контроллером положения по данным GPS.

4. RTL набирает высоту RTL_ALT (в 4.7+ RTL_ALT_M, в метрах вместо сантиметров) и летит к точке дома по прямой, поэтому препятствие на этой линии он проигнорирует. SMART_RTL возвращается по упрощённому записанному треку, повторяя уже пройденный путь, который заведомо свободен. SMART_RTL предпочтителен при полётах среди препятствий — между зданиями, под мостом, в лесу. Недоступен он может оказаться потому, что буфер точек трека ограничен: в длительном полёте он заполняется, и переключение в режим просто не сработает. Проверять доступность нужно до вылета.

5. В STABILIZE автопилот удерживает только углы крена и тангажа, а газом управляет напрямую пилот. В ALT_HOLD добавляется барометр: автопилот удерживает высоту, центральное положение стика газа означает «висеть», а отклонение задаёт вертикальную скорость. Новая точка отказа — сам датчик высоты: если барометр обдувается потоком от винтов или на него светит солнце, высота начинает «плавать» именно в ALT_HOLD, тогда как в STABILIZE проблема незаметна. Поэтому барометр закрывают поролоном.

↑ К оглавлению

Урок 14. Режимы самолёта и наземных аппаратов, настройка переключателя

Вопросы к уроку: Режимы самолёта и наземных аппаратов, настройка переключателя

1. Валидное решение по положению от EKF, то есть работающий GPS и согласованный с ним компас, и загруженная в аппарат миссия минимум с одним пунктом. При взлёте с земли первой командой миссии должна быть TAKEOFF, иначе автопилот не поймёт, как выполнить отрыв. Частая ошибка — миссия нарисована на карте в PLAN, но не записана в аппарат: тогда прошивка сообщает, что аппарат в AUTO без запущенной миссии.

2. Один канал, разбитый на шесть окон по длительности импульса. Имена различаются по прошивкам: в ArduCopter и ArduPlane канал задаётся параметром FLTMODE_CH, а позиции — FLTMODE1…FLTMODE6; в Rover канал задаётся MODE_CH, а позиции — MODE1…MODE6. Различается и канал по умолчанию: у Copter это канал 5, у Plane и Rover — канал 8, причём для Plane и Rover допустимы только каналы с 5 по 8. Границы окон одинаковы во всех прошивках: до 1230, 1231–1360, 1361–1490, 1491–1620, 1621–1749 и от 1750 мкс. Настраивается в SETUP → Mandatory Hardware → Flight Modes, текущее положение подсвечивается зелёным.

3. Разница в том, какую величину задаёт стик тангажа. В FBWA стик задаёт угол тангажа, газ ручной, высота при нейтральном стике не удерживается — аппарат постепенно снижается или набирает и сносится ветром. В FBWB стик задаёт вертикальную скорость, газ автоматический, при нейтральном стике высота удерживается. CRUISE работает как FBWB и дополнительно удерживает путевой курс с учётом сноса: отпущенные стики означают «держи эту линию и эту высоту». Поэтому FBWA применяют для облёта и ручного полёта с подстраховкой, а CRUISE — для дальнего перелёта.

4. Режимы, требующие навигационного решения (LOITER, AUTO, RTL, GUIDED, CIRCLE, SMART_RTL), недоступны при отказе GPS или расхождении компаса: автопилот откажет в переходе, а тумблер при этом останется в новом положении, и аппарат продолжит лететь в прежнем режиме. Если первая позиция занята таким режимом, то в момент отказа навигации пилот щёлкает «в безопасное положение» и не получает ничего, теряя секунды на выяснение причины. Поэтому в первой позиции ставят STABILIZE для мультиротора, FBWA или MANUAL для самолёта, MANUAL для наземного аппарата.

5. Самолёт не может остановиться в воздухе, поэтому LOITER у него означает полёт кругами вокруг заданной точки на заданной высоте; радиус задаётся параметром WP_LOITER_RAD, а отрицательное значение меняет направление облёта на против часовой стрелки. У мультиротора LOITER — это удержание точки на месте с активным торможением при отпускании стиков. Общее у них только название и требование к качеству навигации.

6. HOLD — немедленная остановка и стояние на месте: летающий аппарат так не может, ему нужна либо подъёмная сила, либо посадка. DOCK — автоматическая стыковка со станцией зарядки, что имеет смысл только для наземного аппарата. SIMPLE — управление в системе координат оператора, у мультиротора есть аналогичный по идее Simple/Super Simple, но у Rover это самостоятельный режим. Кроме того, у наземного аппарата мягче failsafe: действие задаётся параметром FS_ACTION, и по умолчанию это остановка, а не возврат, поскольку отказ не приводит к падению.

↑ К оглавлению

Урок 15. Арминг: проверки и отказы

Вопросы к уроку: Арминг: проверки и отказы

1. Значение — сумма степеней двойки по номерам нужных битов. Для ARMING_CHECK складывают биты проверок, которые нужно выполнять, причём бит 0 (значение 1) означает «все проверки». Для ARMING_SKIPCHK смысл обратный: складывают биты проверок, которые нужно пропустить. Поэтому прежнему «все включены» (ARMING_CHECK = 1) соответствует ARMING_SKIPCHK = 0, а прежнему «все выключены» (ARMING_CHECK = 0) — ARMING_SKIPCHK = -1. Кроме того, в новом параметре нет бита 0 (All), а для мультироторов нет и бита 9 (Airspeed). Удобнее не считать вручную, а нажать Set Bitmask в колонке Options и отметить нужное галочками.

2. Префикс указывает, на чём именно остановилась проверка. PreArm: — не пройдены предполётные проверки, которые идут непрерывно, пока аппарат стоит на земле; сообщение обычно видно ещё до того, как вы дали команду. Arm: — предполётные проверки пройдены, но отказала проверка, выполняемая в момент самой команды: режим не допускает арминга, аппарат наклонён, поднят стик газа. Практическая польза в том, что префикс сразу сужает круг поиска: при PreArm: смотрят на датчики и калибровки, при Arm: — на текущий режим и положение стиков. Отдельно стоит помнить, что предполётные проверки не обрываются на первой непройденной: в прошивке они объединены побитовым «и», поэтому в списке сообщений видно сразу несколько причин, и устранять нужно каждую.

3. Отключатся все необязательные проверки: барометр, компас, GPS, IMU, параметры, каналы RC, напряжение платы, уровень батареи, логирование, предохранительный выключатель, конфигурация GPS, система, миссия, дальномер, камера, AuxAuth, визуальная одометрия и FFT. Но обязательные проверки останутся: исправность моторов и корректность рамы, конфликт Interlock и аварийного стопа, положение и высота, калибровка входов RC, настройка последовательных портов. Именно поэтому попытка «просто взлететь», отключив всё, часто не помогает: аппарат по-прежнему отказывает, но теперь без внятного сообщения о настоящей причине.

4. Гироскопы калибруются при включении питания и требуют полной неподвижности: прошивка усредняет показания, считая их нулевым уровнем. В движущемся автомобиле есть вибрации и повороты, поэтому калибровка не сходится и появляется PreArm: Gyros not healthy. Лечится тем же, чем вызвано: поставить аппарат неподвижно и перезагрузить автопилот. По той же причине нельзя брать аппарат в руки в момент включения.

5. Сообщение означает, что измеренный модуль магнитного поля вышел за допустимые границы, а не что «сломался компас». Порядок действий: отойти от источника помех — арматуры в бетоне, металлических конструкций, силовых кабелей, автомобиля — и проверить, исчезло ли сообщение. Если исчезло, дело в площадке. Если нет, проверить, не появилось ли рядом с компасом новое железо на самом аппарате: закреплённая батарея с магнитом, инструмент, вновь проложенный силовой провод. Полная формулировка сообщения содержит измеренное значение и границы — по нему видно, насколько велико отклонение.

6. Потому что это сообщение говорит не о качестве калибровки, а о том, что новые смещения записаны в параметры, но ещё не применены: прошивка использует их только после перезапуска. Повторная калибровка снова записывает параметры и снова требует перезагрузки. Нужно просто перезагрузить автопилот.

↑ К оглавлению

Урок 16. Подготовка площадки и первый взлёт

Вопросы к уроку: Подготовка площадки и первый взлёт

1. Медленный отрыв удерживает аппарат в зоне эффекта земли: поток от винтов отражается от поверхности, подъёмная сила меняется скачками, и аппарат начинает раскачиваться у самой земли, где на исправление нет ни высоты, ни времени. Решительный, но контролируемый подъём газа выводит его из этой зоны за доли секунды. Резко — не значит рывком до упора: нужен уверенный вывод на тягу выше висения, после чего сразу подхват на висение.

2. На газу 20–30 %, когда моторы вышли на обороты, но аппарат ещё стоит: крен вправо — аппарат наклоняется вправо, крен влево — влево, тангаж вперёд — приподнимается хвост, руддер вправо — аппарат пытается развернуться вправо. Обратная реакция по крену означает, что корректирующее воздействие уходит не на те моторы: либо неверен FRAME_TYPE (например, рама собрана по схеме H, а в параметре стоит X), либо сигнальные провода надеты на выходы автопилота не в том порядке. В обоих случаях аппарат опрокинется в первые полсекунды после отрыва, поэтому проверку прекращают и разбираются на земле.

3. До подачи питания выполняют механический осмотр (винты, лучи, провода, крепление батареи) и включают передатчик, переведя переключатель в первую позицию — STABILIZE. Порядок именно такой по двум причинам. Во-первых, после подключения батареи аппарат считается способным раскрутить моторы, и работа руками в зоне винтов становится опасной. Во-вторых, если передатчик включить позже автопилота, приёмник в момент инициализации не даёт сигнала, прошивка воспримет это как отказ радиосвязи и уйдёт в failsafe.

4. Прошивка засчитывает удержание руддера только при нулевом газе: стик должен стоять в самом низу, в пределах мёртвой зоны RCx_DZ. Приподнятый на пару процентов газ сбрасывает отсчёт, и активация молча не происходит. Удерживать нужно ровно 3 секунды. Кроме того, сама возможность задаётся параметром ARMING_RUDDER: при значении 0 арминг руддером запрещён, при 1 разрешён только арминг, при 2 — арминг и дизарминг. У мультироторов по умолчанию 1, поэтому выключить моторы руддером не получится.

5. Горячий мотор означает, что в него уходит энергия, не превращающаяся в тягу. Причины три: перетюненные PID — рейт-контур даёт высокочастотные колебания, невидимые глазом, но моторы непрерывно отрабатывают их; винты слишком велики для этих моторов и регуляторов; перекос рамы или несоосность, из-за которых автопилот постоянно парирует уход. Продолжать полёты нельзя: перегрев ведёт к размагничиванию магнитов и деградации обмоток, а отказ произойдёт в воздухе. Сначала находят причину, затем повторяют висение и снова проверяют температуру.

↑ К оглавлению

Урок 17. Оценка аппарата после первого полёта

Вопросы к уроку: Оценка аппарата после первого полёта

1. Означает, что для висения требуется 58 % тяги — аппарат перегружен. Запаса на манёвр и ветер практически нет, отказ одного мотора фатален. Значение близко к жёсткому потолку прошивки: что бы ни намерило обучение, параметр не превысит 0,6875, так что «подкрутить» его нельзя — проблема физическая. Действия: снизить взлётную массу, поставить более крупные винты или более мощные моторы.

2. Нет, прошивка исправна. Обучение работает только в режимах с автоматическим газом — ALT_HOLD, LOITER, POSHOLD и подобных, где прошивка сама управляет тягой и может сравнить её со своей оценкой. В STABILIZE и ACRO газ задаёт пилот напрямую, поэтому MOT_THST_HOVER остаётся заводским (0,35). Чтобы значение уточнилось, нужно повисеть в ALT_HOLD; либо задать его вручную по полю CTUN.ThO из лога. Отдельно проверьте, что MOT_HOVER_LEARN не выставлен в 0.

3. Clipping означает, что акселерометр упёрся в предел диапазона (около ±16 g) и реальное ускорение измерить не удалось — данные за этот момент потеряны безвозвратно, а в оценку положения ушло заниженное значение. Фильтр обрабатывает то, что измерено, и восстановить отсутствующее не может, поэтому фильтрация здесь бесполезна. Устраняется только механически: балансировка винтов, демпферы, затяжка рамы. Единичные срабатывания (менее сотни за полёт, особенно при жёсткой посадке) обычно не страшны — опасен непрерывный рост счётчика в течение полёта.

4. Высокие значения по обеим горизонтальным осям при спокойной вертикальной указывают на источник, вращающийся в горизонтальной плоскости: разбалансированные винты или изношенный подшипник мотора. Второй вариант — контроллеру в целом не хватает демпфирования. Начинать нужно с балансировки винтов, это самая частая причина и самая быстрая проверка. Если бы высокой была только одна из осей, дело было бы в креплении контроллера — например, натянутый провод. Высокая Z указывала бы на погнутую лопасть или вертикальный люфт вала. Уровень 25 м/с² не критичен (порог 30), но запаса нет, и заниматься этим нужно до тюнинга PID.

5. Проблема компаса проявляется медленно и по траектории: аппарат описывает круги увеличивающегося радиуса (toilet bowl), при этом углы отрабатываются точно и стики слушаются. Причина — рассогласование между тем, куда автопилот считает себя летящим, и реальным направлением. Проблема тюнинга проявляется быстро и по углам: аппарат мелко дрожит или раскачивается, а точку при этом держит, и расхождение ATT.DesRoll с ATT.Roll видно независимо от режима, в том числе в STABILIZE. Проверить компас по логу можно графиком mag_field вместе с газом: скачки поля выше 60 % при поднятии газа означают сильную помеху от силовой проводки.

6. В MANUAL автопилот не вмешивается вообще — положение стика идёт прямо на сервоприводы. Любая ошибка реверса, триммирования или ориентации платы проявится в первые секунды, когда самолёт ещё на высоте пары метров и времени на реакцию нет. В FBWA прошивка удерживает углы крена и тангажа в заданных пределах и сама выравнивает машину при отпущенных стиках, давая время осознать проблему и набрать высоту. Проверку поверхностей в MANUAL при этом делают обязательно, но на земле.

↑ К оглавлению

Урок 18. Вибрации и фильтр нижних частот

Вопросы к уроку: Вибрации и фильтр нижних частот

1. D-составляющая вычисляет производную ошибки. Дифференцирование усиливает высокочастотные составляющие пропорционально частоте, поэтому шум гироскопа на 100 Гц усиливается в разы сильнее полезного сигнала на 5 Гц.

2. Мягкий подвес даёт системе «масса — демпфер» низкую собственную частоту (5–15 Гц), попадающую в полосу полезного сигнала. Акселерометры регистрируют колебания платформы как реальные ускорения аппарата, и EKF получает искажённые данные.

3. Устойчиво ниже 30 м/с² — норма, 30–60 — пограничная зона, выше 60 — недопустимо. Отдельно смотрят счётчики VIBE.Clip0..2: любое их увеличение означает выход акселерометра за диапазон измерения, и такие данные восстановить фильтрацией невозможно.

↑ К оглавлению

Урок 19. Гармонический режекторный фильтр (notch)

Вопросы к уроку: Гармонический режекторный фильтр (notch)

1. Режекторный фильтр вырезает узкую полосу вокруг частоты помехи, почти не влияя на фазу в полосе полезного сигнала. Понижение частоты ФНЧ подавляет всё выше среза, внося значительную задержку и снижая устойчивость контура.

2. По газу (MODE = 1) — просто, без дополнительного оборудования, точность средняя. По ESC-телеметрии (MODE = 3) — самая высокая точность, требует регуляторов с телеметрией. По встроенному FFT (MODE = 4) — точно и без дополнительного железа, но нагружает процессор.

3. SMAX ограничивает скорость изменения выхода регулятора и автоматически снижает усиление при достижении предела. Это защита от высокочастотной раскачки, которая может возникнуть при агрессивных коэффициентах, подобранных AUTOTUNE.

4. Механическая проблема видна по уровню VIBE и наличию clipping — фильтрация на них не влияет. Проблема фильтрации проявляется как высокочастотное дрожание моторов и «звон» при нормальном уровне VIBE, и устраняется настройкой notch.

↑ К оглавлению

Урок 20. Каскад PID и физический смысл коэффициентов

Вопросы к уроку: Каскад PID и физический смысл коэффициентов

1. Внешний контур формирует целевое значение для внутреннего в предположении, что тот отрабатывает её быстро и точно. Если внутренний контур настроен плохо, внешний будет компенсировать его ошибки, и при последующей настройке внутреннего вся система разбалансируется.

2. Избыток P даёт быстрые колебания с частотой 5–15 Гц, воспринимаемые как дрожание и слышимые в звуке моторов. Избыток I даёт медленную раскачку с периодом 1–3 секунды, особенно заметную после манёвра или при ветре.

3. P создаёт момент, пропорциональный текущей ошибке, и определяет жёсткость отклика. I накапливает ошибку во времени и устраняет постоянное смещение, например от несбалансированной нагрузки или бокового ветра. D реагирует на скорость изменения ошибки и демпфирует колебания, но сильнее всех усиливает шум гироскопа.

↑ К оглавлению

Урок 21. AUTOTUNE: автоматическая настройка регуляторов

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

1. AUTOTUNE измеряет отклик аппарата на тестовые воздействия. При нефильтрованных вибрациях измеренный отклик содержит шум, и алгоритм интерпретирует его как склонность к колебаниям, занижая коэффициенты.

2. Новые коэффициенты не сохранятся, но аппарат будет летать с ними до дизарминга. Для сохранения нужно приземлиться и пройти дизарминг, находясь в режиме AUTOTUNE.

3. Определяет агрессивность настройки: чем выше значение, тем резче итоговый отклик. Типовое значение 0,1 подходит большинству аппаратов. Для тяжёлых и инертных платформ значение снижают, для лёгких и манёвренных допустимо поднять, но рост агрессивности увеличивает риск раскачки.

↑ К оглавлению

Урок 22. Ручной тюнинг и оценка качества по логу

Вопросы к уроку: Ручной тюнинг и оценка качества по логу

1. ATT.DesRoll против ATT.Roll — отставание не более 0,1 с, заброс не более 10 %. RATE.RDes против RATE.R — точность отработки угловой скорости. RCOU — отсутствие постоянного дрожания на пределах. VIBE — не должна вырасти.

2. Определяет «агрессивность» выхода на линию пути: чем больше значение, тем мягче навигация. При «рыскании» по маршруту значение увеличивают, при широких срезках поворотов — уменьшают.

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

4. NAVL1_PERIOD задаёт агрессивность выхода на линию пути: меньше значение — резче манёвр. NAVL1_DAMPING отвечает за демпфирование этого движения и предотвращает перерегулирование. При рыскании по маршруту период увеличивают, при широких срезках поворотов — уменьшают.

↑ К оглавлению

Урок 24. Съёмочные миссии: генератор Survey и настройка триггера

Вопросы к уроку: Съёмочные миссии: генератор Survey и настройка триггера

1. Обычная точка означает движение по прямой с торможением на углах. Spline-точка задаёт гладкую кривую без остановок. Обычные точки нужны для аэрофотосъёмки (постоянная скорость на галсе), spline — для видеосъёмки и плавного движения камеры.

2. Relative (относительно HOME), Absolute (над уровнем моря), Terrain (над рельефом). Terrain опасен тем, что требует данных рельефа на борту: при их отсутствии поведение непредсказуемо и зависит от TERRAIN_FOLLOW.

3. \( \mathrm{GSD} = \dfrac{H \cdot p}{f \times 100} \), где H — высота в метрах, размер пикселя в микрометрах, f — фокусное расстояние в миллиметрах. Зависит от размера матрицы, разрешения и фокусного расстояния.

4. Hot shoe даёт сигнал о фактическом срабатывании затвора. Без неё координаты записываются в момент отправки команды, тогда как реальный снимок происходит на 50–200 мс позже. На скорости 10 м/с это ошибка привязки 0,5–2 метра.

5. На нестабильном канале запись может пройти частично. Read — единственный способ убедиться, что в памяти автопилота лежит именно тот маршрут, который вы планировали.

6. При полётах над протяжёнными объектами — ЛЭП, трубопроводы, дороги — когда точка старта осталась далеко позади, и возврат к ней потребует больше энергии и времени, чем посадка на заранее подготовленную площадку по маршруту.

↑ К оглавлению

Урок 26. Failsafe: реакции на отказы и организация безопасности

Вопросы к уроку: Failsafe: реакции на отказы и организация безопасности

1. FENCE_ACTION = 1 инициирует RTL или LAND, прерывая текущую задачу. FENCE_ACTION = 4 (Brake or Land) не позволяет пересечь границу, останавливая аппарат у неё, но не прерывая режим. Второе удобнее для рабочих полётов у границы участка.

2. Напряжение сильно зависит от текущего тока, температуры и износа батареи, поэтому момент срабатывания «плавает». Остаток ёмкости, вычисляемый интегрированием тока, даёт гораздо более предсказуемое поведение при откалиброванном датчике.

3. Снять винты, активировать аппарат, поднять газ до 30 %, выключить передатчик. Автопилот должен зафиксировать failsafe и перейти в заданный режим. Проверяется вся цепочка «передатчик — приёмник — автопилот».

4. Аппарат останется в последней заданной точке GUIDED и будет висеть до полного разряда батареи, после чего сработает батарейный failsafe (если настроен) или аппарат упадёт.

5. Критический уровень батареи. Логика проста: без энергии не работает ничто, и попытки решать другие задачи бессмысленны.

6. При отказе одного мотора квадрокоптер теряет управляемость полностью. Гексакоптер сохраняет управление по крену и тангажу (с потерей контроля по рысканию), октокоптер — практически полное управление, что позволяет выполнить контролируемую аварийную посадку.

↑ К оглавлению

Урок 28. RTK, дальномеры и оптический поток

Вопросы к уроку: RTK, дальномеры и оптический поток

1. Предсказание по данным IMU (интегрирование ускорений и угловых скоростей) — точно на коротком интервале, но с накоплением ошибки. Коррекция по измерениям GPS, компаса, барометра — компенсирует накопленный дрейф, но приходит реже и с шумом.

2. Фильтр почти не доверяет компасу: расхождение между курсом по магнитометру и курсом, вычисленным по направлению движения. Причины: магнитные помехи в конструкции, неверная калибровка, влияние тока силовых проводов.

3. GSF (Gaussian Sum Filter) сопоставляет направление ускорения аппарата с направлением его движения по данным GPS и восстанавливает курс. Работает только при движении, требует манёвров для сходимости и непригоден для висения на месте с самого старта.

4. RTK Float — целочисленная неоднозначность фазы несущей не разрешена, точность 10–50 см. RTK Fixed — разрешена, точность 1–3 см. Float неустойчив, поскольку решение продолжает поиск и может как перейти в Fixed, так и деградировать.

5. RTK даёт точные координаты антенны в момент измерения. Для привязки снимка нужно также знать точный момент срабатывания затвора (hot shoe), смещение антенны относительно матрицы (GPS_POS1_X/Y/Z) и учесть задержки в системе.

6. Дальномер — без знания высоты угловое смещение картинки нельзя перевести в линейную скорость. Также требуется текстурированная поверхность (над однотонным полом или водой поток не работает) и достаточное освещение.

↑ К оглавлению

Урок 31. Методика разбора инцидента

Вопросы к уроку: Методика разбора инцидента

1. Когда аппарат утерян или разрушен и SD-карту невозможно извлечь. Телеметрийный лог остаётся на компьютере и позволяет восстановить хронологию событий до момента потери связи.

2. Сырые данные IMU занимают 100–300 МБ за десять минут полёта. Карта быстро заполняется, после чего логи перестают писаться вовсе, а при включённой проверке логирования блокируется арминг.

3. RCOU.C1–Cn во время ровного висения: в исправном аппарате линии идут рядом. Постоянное расхождение более 10–15 % указывает на смещённый центр масс, погнутый луч или ослабленный мотор.

4. При отказе мотора: резкое изменение в одном канале RCOU, компенсация остальными, немедленное расхождение DesRoll/Roll, вращение по yaw. При разряде: плавное падение BAT.Volt, постепенный рост всех каналов RCOU, срабатывание failsafe.

5. Акселерометр вышел за диапазон измерения, данные за эти моменты потеряны. EKF получает пробелы в оценке ускорений, что ведёт к ошибкам определения положения и высоты — вплоть до неконтролируемого набора высоты или ухода в сторону.

6. Хронология, сообщения, питание, навигация, механика, управляемость, гипотеза. Хронология идёт первой, потому что без точной временной привязки события невозможно понять, что было причиной, а что следствием.

↑ К оглавлению

Урок 33. SITL из командной строки и отработка сценариев

Вопросы к уроку: SITL из командной строки и отработка сценариев

1. Достоверно: логика прошивки, поведение режимов, реакция на отказы, работа миссий, тайминги failsafe. Недостоверно: реальные вибрации конкретной сборки, точная аэродинамика, электромагнитные помехи, качество сборки и износ компонентов.

2. Через параметры SIM_OPOS_LAT, SIM_OPOS_LNG, SIM_OPOS_ALT, SIM_OPOS_HDG, либо опцией --custom-location при запуске sim_vehicle.py.

3. SIM_ENGINE_FAIL задаёт номер мотора (нумерация с нуля), SIM_ENGINE_MUL — множитель его тяги: 0 означает полный отказ, промежуточные значения — частичную потерю мощности.

4. Ускоряет ход симуляции в заданное число раз. Полезна при проверке длинных съёмочных миссий и при отладке логики failsafe по батарее, где нужно дождаться реального расхода энергии.

5. Когда важна точность аэродинамики (самолёты, вертолёты), нужна фотореалистичная картинка для алгоритмов компьютерного зрения, или требуется моделирование взаимодействия с окружением (препятствия, посадочные площадки, ROS-интеграция).

↑ К оглавлению

Урок 35. Подвесы, обход препятствий, точная посадка и группы

Вопросы к уроку: Подвесы, обход препятствий, точная посадка и группы

1. Lua — простая бортовая логика, реагирующая на состояние автопилота: проверки, драйверы простой периферии, нестандартные последовательности. Компаньон-компьютер — всё, что требует вычислительных ресурсов: компьютерное зрение, планирование маршрутов, работа с видео, сложные алгоритмы.

2. Если управление ведётся из GUIDED, при потере связи с источником команд аппарат остаётся без управляющих воздействий и зависает в последней точке до разряда батареи. FS_GCS_ENABLE обеспечивает автоматический возврат.

3. DO_SET_ROI заставляет нос аппарата и подвес удерживать заданную точку в кадре. Отменяется командой DO_SET_ROI с нулевыми координатами.

4. Датчики не видят тонкие провода, сетку, стеклянные и зеркальные поверхности, тонкие ветки. Кроме того, обнаружение требует времени на реакцию, а на скорости дистанция обнаружения может оказаться меньше тормозного пути.

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

↑ К оглавлению

Урок 38. Диагностика: GPS, питание и быстрая матрица решений

Вопросы к уроку: Диагностика: GPS, питание и быстрая матрица решений

1. Прочитать полный текст сообщения во вкладке Messages. Найти его в справочнике или документации. Понять физическую причину. Устранить причину. Ни в коем случае не отключать соответствующую проверку.

2. Компас: аппарат описывает круги увеличивающегося радиуса, при этом углы отрабатываются нормально, растёт Compass Variance. Тюнинг: колебания или вялость видны уже в STABILIZE, есть расхождение DesRoll/Roll.

3. Передатчики 1,2–1,3 ГГц создают широкополосный шум и паразитные излучения, которые попадают в полосу GPS L1 (1575 МГц) и особенно в диапазоны L2/L5 (около 1,1–1,2 ГГц). Проявляется коварно: на земле с выключенным видео спутники ловятся нормально, а в полёте с включённым передатчиком приём деградирует или пропадает.

4. Напряжение питания автопилота ниже допустимого. Контроллер работает на границе и может перезагрузиться в полёте, что означает гарантированное падение. Причины: перегруженный BEC, тонкие провода, плохой разъём, избыток периферии на одной шине.

5. Обдув барометра потоком от винтов; попадание прямого света на датчик; негерметичность корпуса; высокие вибрации; неверная настройка PSC_ACCZ_P и PSC_ACCZ_I, в прошивках 4.7 и новее — PSC_D_ACC_P и PSC_D_ACC_I.

↑ К оглавлению

Ответы к расчётным заданиям

Задание 8.2. Частота винтов для мотора 4008 с винтом 15″ при 3600 об/мин: \( 3600 / 60 = 60\ \text{Гц} \). Соответственно INS_HNTCH_FREQ = 60, INS_HNTCH_BW = 30, INS_GYRO_FILTER = 15–20 Гц.

Для 18″ аппарата значение INS_GYRO_FILTER = 60 Гц бесполезно: частота винтов около 50–60 Гц окажется внутри полосы пропускания, и весь шум пройдёт в контур. Для 5″ гоночного INS_GYRO_FILTER = 10 Гц внесёт недопустимую задержку: аппарат с быстрой динамикой станет неуправляемым.

Задание 10.1. Камера 1″ (13,2 × 8,8 мм), 20 Мп (5472 × 3648), объектив 8,8 мм.

Размер пикселя: \( 13{,}2\ \text{мм} / 5472 = 2{,}41\ \text{мкм} \).

Для GSD 3 см/пиксель: \( H = \dfrac{\mathrm{GSD} \cdot f \cdot 100}{p} = \dfrac{3 \cdot 8{,}8 \cdot 100}{2{,}41} \approx 109\ \text{м} \). Округляем до 110 м.

Ширина захвата: \( 5472 \times 3\ \text{см} = 164\ \text{м} \). Высота захвата: \( 3648 \times 3\ \text{см} = 109\ \text{м} \).

При поперечном перекрытии 65 %: \( \text{расстояние между галсами} = 109 \times 0{,}35 \approx 38\ \text{м} \). Для участка шириной 400 м: \( 400 / 38 \approx 11 \) галсов.

При продольном перекрытии 75 %: \( \text{шаг съёмки} = 164 \times 0{,}25 = 41\ \text{м} \). На галсе длиной 500 м: \( 500 / 41 \approx 13 \) снимков. Всего примерно \( 11 \times 13 = 143 \) снимка плюс запас на развороты.

Длина маршрута: \( 11 \times 500 + 10 \times 38 \approx 5880\ \text{м} \). При скорости 8 м/с — около 12 минут чистого времени плюс развороты, взлёт и посадка. Итого 15–17 минут. Одной батареи на 20–25 минут полёта достаточно с запасом.

↑ К оглавлению

Что дальше

↑ К оглавлению
  • мод. : Вторник, 08 сентября 2026
Ответы на контрольные вопросы курса