Перейти к содержимому
Часть 5: Полная Настройка Автономной Навигации В ArduPilot (ArduCopter 4.6.3)

Часть 5: Полная Настройка Автономной Навигации В ArduPilot (ArduCopter 4.6.3)

05 мая 2026
Технику БПЛА | Хобби Description

В этом уроке рассматривается настройка контуров автономной навигации в ArduPilot: контроллер Loiter (контроллер удержания позиции), вертикальные и горизонтальные контроллеры позиции (vertical and horizontal position controllers), а также контур автономной навигации по точкам (waypoint navigation controller).

В этом уроке рассматривается настройка контуров автономной навигации (autonomous navigation control loops — контуры управления автономной навигацией) в ArduPilot: контроллер Loiter (контроллер удержания позиции), вертикальные и горизонтальные контроллеры позиции (vertical and horizontal position controllers), а также контур автономной навигации по точкам (waypoint navigation controller). Помимо PID‑параметров (PID parameters — параметры ПИД‑регуляторов), определяющих реакцию контуров на входные сигналы, рассматриваются высокоуровневые параметры (higher level parameters), которые управляют «ощущением полёта» (flight feel) и общей производительностью дрона (overall performance) во всех автономных режимах навигации.

Материал объёмный, поэтому изложение ведётся последовательно и без пропусков. Требуется внимательное чтение, однако результат оправдан: после настройки дрон будет точнее удерживать позицию, плавнее перемещаться и предсказуемее выполнять миссии.

Место в серии. База → фильтры/гироскоп → rate‑PID → attitude → удержание высоты → Loiter и навигация (этот урок) → миссии. Каждый шаг опирается на предыдущий.

Для кого. Материал ориентирован на хоббийные сборки до ~8″ (prop diameter — диаметр пропеллера). Для тяжёлых, коммерческих или промышленных аппаратов требуются дополнительные методы анализа, резервирования и валидации — «хоббийные» допуски не следует переносить на ответственную технику.
Важно: единицы измерения параметров (units). В ArduCopter часть параметров задана в cm/s и cm/s², часть — в m/s и m/s², а углы могут задаваться в degrees (градусах) или centidegrees (сотых долях градуса). Ошибка в единицах может дать отличие на ×100. В местах, где формулировки могут привести к путанице, ниже добавлены короткие технические примечания.

Содержание

0. Loiter: параметры поведения и «ощущение полёта»

Мини‑словарь терминов (определения)

  • Контур управления (control loop). Алгоритм, который сравнивает целевое значение и измеренное/оценённое значение, вычисляет ошибку и формирует управляющее воздействие.
  • ПИД‑регулятор (PID controller). Регулятор, в котором управляющее воздействие зависит от пропорционального (P), интегрального (I) и дифференциального (D) коэффициентов (terms).
  • Целевое значение (target). Значение, которое контур управления должен обеспечить (например, целевая скорость).
  • Фактическое значение (actual). Значение, измеренное/оценённое системой (например, скорость, оценённая EKF).
  • Перерегулирование (overshoot). Ситуация, когда фактическая величина заметно превышает целевую в переходном процессе.
  • Запаздывание (lag) / вялый отклик (sluggish response). Ситуация, когда фактическая величина существенно отстаёт от целевой.
  • Статическая ошибка (steady‑state error). Устойчивое смещение между целевым и фактическим значением в установившемся режиме.
  • Прямая связь (feedforward, FF). Компонент управления, формируемый по заданию (reference), чтобы уменьшить задержку реакции.
  • Кинематический путь (kinematic path). Профиль движения, ограниченный по скорости, ускорению и рывку; определяет, как быстро система может разгоняться, тормозить и изменять ускорение.
  • Рывок (jerk). Производная ускорения по времени: $$ j = \frac{da}{dt} = \frac{d^3x}{dt^3}. $$
  • Лог DataFlash (DataFlash log). Запись телеметрии и внутренних сообщений контроллера, используемая для анализа и настройки (tuning).

Первый контур управления (control loop), который рассматривается, — это контроллер Loiter. Контроллер Loiter расположен выше контроллеров угла (angle controllers) по тангажу (pitch) и крену (roll), и он преобразует целевые горизонтальные ускорения (target horizontal accelerations), которые приходят сверху от контроллера горизонтальной скорости (horizontal velocity controller), в целевые углы (target angles), которые затем отрабатывают угловые контроллеры.

technobee_0002_ru_Loiter_controller_Zzz_5dd84.png

Контроллер Loiter также содержит несколько параметров, которые управляют тем, как дрон движется, разгоняется и тормозит в режиме Loiter, и здесь важно понимать следующее: у контроллера Loiter нет PID‑усилений (PID gains — коэффициенты P/I/D), потому что связь между углом наклона дрона и его горизонтальным ускорением является простой геометрической связью. Она не зависит ни от P‑усиления (proportional gain), ни от I‑усиления (integral gain), ни от D‑усиления (derivative gain).

Примечание (техническое уточнение формулы при сохранении смысла). Геометрический смысл можно записать так: $$ a_h \approx g \tan(\theta) \approx g \theta \quad (\text{при малых } \theta) $$ где \(a_h\) — горизонтальное ускорение, \(g\) — ускорение свободного падения, \(\theta\) — угол наклона.

Поэтому PID‑коэффициенты для контроллера Loiter настраивать не требуется, но требуется рассмотреть вторичные параметры (secondary parameters), которые определяют поведение контроллера Loiter, чтобы получить правильное «ощущение полёта» (flight feel). Все параметры находятся в Mission Planner во вкладке Config, в разделе Full Parameter List, и строка поиска используется для быстрого перехода к нужным параметрам. Далее перечислены параметры, которые необходимо учитывать.

Параметры Loiter: ускорение, угол, торможение, задержка, скорость, рывок

technobee_0051_3c276.png

  • LOIT_ACC_MAX (loit acc max). Максимальное ускорение (maximum acceleration), которое контроллер Loiter использует для коррекции ошибок позиции. Чем выше это ускорение, тем быстрее дрон будет перемещаться, чтобы исправлять ошибки позиции, и тем более «агрессивным» будет поведение.
  • LOIT_ANG_MAX (loit ang max). Максимальный угол наклона (maximum lean angle) в режиме удержания позиции (position hold mode), и обычно его устанавливают равным ANGLE_MAX, чтобы «ощущение полёта» в режимах Stabilize, Altitude Hold и Loiter было одинаковым, потому что во всех режимах будет одинаковый максимальный наклон.
Примечание (исправление потенциальной ошибки единиц, без изменения смысла утверждения). Фраза «равен ANGLE_MAX» выражает идею «одинакового максимального наклона». При этом LOIT_ANG_MAX задаётся в degrees, а ANGLE_MAX — в centidegrees. Поэтому приблизительное соответствие для согласования лимитов: $$ LOIT\_ANG\_MAX \approx \frac{ANGLE\_MAX}{100}. $$
  • LOIT_BRK_ACCEL (loit brake accel). Максимальное тормозное ускорение (maximum braking acceleration), которое контроллер Loiter использует, когда стик центрирован (stick centered). Если дрон летит с некоторой скоростью и стик центрируется, дрон начинает торможение, и этот параметр определяет, насколько агрессивным оно будет.
  • LOIT_BRK_DELAY (loit brake delay). Задержка (delay), определяющая, будет ли дрон реагировать на центрирование стика не сразу. В большинстве случаев рекомендуется установить значение в ноль, потому что запрос на замедление без немедленного отклика является опасной ситуацией для пилота.
  • LOIT_SPEED (loit speed). Максимальная скорость (maximum speed), с которой дрон будет лететь в режиме Loiter. При полном отклонении стика именно с этой скоростью дрон будет перемещаться.
  • LOIT_BRK_JERK (loit brake jerk). Максимальный тормозной рывок (maximum braking jerk). Рывок (jerk) — производная ускорения (derivative of acceleration). По сути, он определяет, насколько быстро дрон достигает максимального тормозного ускорения. Чем выше значение рывка, тем быстрее достигается максимальное тормозное ускорение и начинается активное замедление.
Определение термина «рывок» (jerk) в форме формулы. $$ j = \frac{da}{dt} = \frac{d^3x}{dt^3}. $$

Эти параметры удобнее всего понимать через график зависимости скорости от времени (speed versus time). Рассматривается ситуация, когда дрон движется с максимальной скоростью, то есть со скоростью Loiter Speed, а затем в некоторый момент пилот центрирует стик.

График скорость–время: как понимать LOIT_BRK_* на практике

technobee_0052_3_208c7.png
; Концептуальная временная шкала торможения (stick centered at t₀)

t₀: стик центрирован
t₀ + LOIT_BRK_DELAY: начало реакции контроллера
t₀ + LOIT_BRK_DELAY + Δt₁: выход на максимальное тормозное ускорение LOIT_BRK_ACCEL
                           (скорость выхода ограничена LOIT_BRK_JERK)
t₁…t₂: торможение с постоянным тормозным ускорением почти до остановки
t₂…t₃: LOIT_BRK_JERK также определяет, как завершается торможение до полной остановки
t₃: полная остановка

Параметр LOIT_BRK_DELAY определяет, как долго дрон ждёт, прежде чем начать реагировать на центрирование стика. Как правило, устанавливается значение 0, чтобы реакция начиналась немедленно. Параметр LOIT_BRK_JERK определяет, насколько быстро начинается замедление и насколько быстро достигается максимальное значение замедления.

Максимальное значение замедления задаётся параметром LOIT_BRK_ACCEL, после чего дрон замедляется с этим постоянным значением почти до полной остановки. Параметр LOIT_BRK_JERK также определяет, как дрон завершает замедление и приходит к полной остановке. Чем больше значение LOIT_BRK_JERK, тем быстрее дрон приходит к полной остановке и тем меньше дрейфа (drift) наблюдается в конце движения.

Подбор значений под задачу (нет «идеального числа»)

Эти параметры не являются параметрами, которые «настраиваются» в традиционном смысле, потому что для конкретного дрона не существует единственного идеального значения. Значения определяются задачей (application) и тем, какое «ощущение полёта» (pilot feel) требуется в режиме Loiter.

В общем случае более высокие значения заставляют дрон реагировать быстрее и агрессивнее: дрон будет ощущаться более отзывчивым, но при чрезмерном увеличении может стать слишком «дёрганым» (twitchy). Если значения слишком низкие, дрон будет очень вялым (sluggish) и медленным в отклике, и будет наблюдаться заметный дрейф при попытке замедлиться до полной остановки.

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

1. Полёты для настройки (tuning flights): сценарии

Полёты для настройки выполняются в режиме Loiter (loiter mode) или Position Hold (position hold mode). Необходимо взлететь, затем выровнять движение по направлениям север–юг и восток–запад, и выполнить проходы север–юг: дрон перемещается на север, затем немедленно перемещается обратно на юг настолько быстро, насколько возможно, и выполняется несколько циклов «север → юг → север → юг» с резкими сменами направления в конце каждого отрезка.

Затем выполняется то же самое в направлении восток–запад: перемещение на восток, затем резкая смена направления и перемещение на запад, повторяется несколько раз. Эти проходы выполняются без изменения рыскания (without yawing the drone): дрон должен оставаться направленным в одну сторону на протяжении «челночных» проходов.

Также выполняются движения по вертикали: набор высоты настолько быстро, насколько возможно, затем снижение настолько быстро, насколько возможно, и выполняется несколько циклов «вверх–вниз», при этом смена направления в верхней и нижней точках выполняется максимально резко. Во всех случаях достаточно нескольких метров движения вперёд‑назад или вверх‑вниз. Важно записать лог (capture the log), чтобы затем просмотреть его и оценить поведение дрона.

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

2. Горизонтальный контроллер скорости (horizontal velocity controller — PSC_VELXY)

technobee_0002_ru_Hor_vel_controller_zzz_ead4d.png

Над контроллером Loiter находится контроллер горизонтальной скорости. Он берёт показатель горизонтальной скорости (horizontal velocity) и преобразует его в целевое ускорение (target acceleration), которое передаётся в контроллер Loiter. Это, по сути PID‑контроллер (PID controller), поэтому здесь имеются несколько настраиваемых коэффициентов.

technobee_0067_c9bd7.png

Параметры контроллера находятся в Full Parameter List под именами PSC_VELXY_P, PSC_VELXY_I, PSC_VELXY_D и PSC_VELXY_FF.
Здесь также здесь присутствуют параметры фильтра ошибки PSC_VELXY_FLTE (error filter) и фильтра производной PSC_VELXY_FLTD (derivative filter).
В горизонтальном контроллере скорости отсутствуют derivative feed forward (дифференциальная прямая связь) и фильтрация целевого значения (target filtering), поэтому эти аспекты не рассматриваются, однако настройка PID‑параметров важна для того, чтобы дрон вёл себя максимально «собранно» (snappy) и отслеживал заданную скорость (velocity set point) как можно точнее.

После выполнения полётов для настройки в Loiter и выполнения перемещений север–юг и восток–запад как указывалось ранее, в логах будет достаточно данных для настройки контроллера горизонтальной скорости. Временные ряды (time series data) находятся в секциях PIDE (E — east–west, восток–запад) и PIDN (N — north–south, север–юг).

Следует включить отображение target (целевая скорость, target velocity) и actual (фактическая скорость, actual velocity), чтобы увидеть работу контроллера.

technobee_0055_2_z_33078.png

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

На данном этапе серии предполагается, что методика настройки PID‑контроллеров по временным рядам (time series data) уже знакома, поэтому процесс заново не повторяется. Контур PSC_VELXY настраивается так же, как и предыдущие PID‑контуры, на основе временных рядов.

Выполняется корректировка баланса P и D (P:D balance), чтобы устранить перерегулирование (overshoot):

  • при большом перерегулировании, когда actual существенно превышает target, уменьшается P‑усиление и, при необходимости, увеличивается D‑усиление.
  • при вялом отклике, когда actual не достигает target при резких сменах направления, увеличивается P‑усиление и уменьшается D‑усиление.

После того как PD‑баланс становится корректным (пики actual и target совпадают по величине), увеличиваются P, I и D вместе, умножением на 1.1 или 1.2, то есть пропорционально друг другу. Увеличение выполняется до появления признаков колебаний (oscillation) или до состояния, когда контур становится слишком «перетянутым», после чего выполняется небольшое уменьшение значений. I‑терм настраивается после этого при необходимости, хотя во многих случаях настройка I‑терма не требуется. Feedforward (прямую связь) для горизонтального контроллера скорости, как правило, изменять не требуется.

Примечание (уточнение полей лога, без изменения смысла). В PID‑сообщениях DataFlash обычно используются поля Tar (target) и Act (actual), что соответствует формулировке «target velocity» и «actual velocity».
[Место под скрин из оригинальной статьи: PIDE/PIDN (target vs actual) для PSC_VELXY]
↑ К оглавлению

3. контроллер горизонтальной позиции (horizontal position controller — PSC_POSXY) и горизонтальный кинематический путь

technobee_0002_ru_Hor_pos_controller_z_0d10b.png

Над контроллером горизонтальной скорости находится контроллер горизонтальной позиции. Если контроллер скорости настроен хорошо, настройка контроллера позиции не должна быть сложной, потому что это простой пропорциональный контроллер (simple proportional controller): у него есть только P‑терм (P-term), и он задаётся только параметром PSC_POSXY_P

Однако существует множество других параметров, которые ограничивают так называемый горизонтальный кинематический путь (horizontal kinematic path) следования дрона. Поэтому, хотя PID‑часть горизонтального позиционного контроллера настраивается просто, важно разобраться с другими параметрами, которые определяют поведение дрона при следовании по горизонтальной траектории.

Параметры, которые сильнее всего влияют на горизонтальное движение дрона, — это LOIT_SPEED, LOIT_ACC_MAX и PSC_JERK_XY. Их удобнее объяснять с помощью схемы (chart).

technobee_0057_1_daaab.png

Параметр LOIT_SPEED управляет максимальной скоростью в Loiter. Настройка концептуально проста: заставьте дрон двигаться на максимальной скорости, и затем оцените, достаточно ли этой скорости для ваших задач, либо требуется изменение значения.

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

Параметр PSC_JERK_XY (рывок) является более тонким параметром: он управляет тем, как быстро дрон достигает максимального ускорения. Это определяет, насколько быстро начинается движение из состояния остановки, а также насколько быстро завершается разгон при приближении к максимальной скорости.

При увеличении PSC_JERK_XY отклик становится более «собранным»: это особенно заметно при старте из зависания, когда отклоняется стик — при большем значении дрон быстрее начинает ускоряться и быстрее начинает движение.

Если задать значение слишком высоким, дрон может ощущаться слишком «дёрганым» и агрессивным: возможно резкое и внезапное увеличение наклона при начале отклонения стика, то есть при запросе ускорения. Это значение подбирается по ощущению управления (pilot feel), под задачу и под требуемое поведение. Это параметр, относящийся к «ощущению пилота» (pilot feel parameter).

После того как параметры горизонтального кинематического пути выставлены корректно, обычно дрон должен хорошо вести себя в Loiter. Тем не менее, рекомендуется проверить горизонтальный позиционный контроллер, чтобы убедиться в отсутствии колебаний (oscillation) и перерегулирования (overshoot). Как правило, значения по умолчанию приемлемы, но проверка оправдана.

Для проверки контроллера горизонтальной позиции используются данные PSCE (position east–west) и PSCN (position north–south). В ходе полётов для настройки выполнялись движения и север–юг, и восток–запад, поэтому возможно проверить оба направления.

technobee_0058_1_14df2.png

Следует включить «target position east» и «position east» (или «target position north» и «position north»), и затем проверить, что фактическая позиция следует за целевой достаточно близко.

Примечание (уточнение полей PSCE/PSCN). В DataFlash‑сообщениях для PSCE/PSCN обычно используются поля TPE и PE, TPN и PN. Это соответствует формулировке «target position» и «position».

При наличии значимого перерегулирования или колебаний допускается небольшое уменьшение PSC_POSXY_P. Если наблюдается слабая реакция на изменения целевой позиции, допускается небольшое увеличение параметра с последующей проверкой, помогает ли это.

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

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

4. контроллер вертикальной позиции (PSCD, PSC_POSZ_P)

Над вертикальным контроллером скорости (vertical velocity controller) находится вертикальный контроллер позиции (vertical position controller).

technobee_0002_ru_Ver_pos_controller_28ec8.png

Настройка этого контроллера для вертикальной траектории рассматривалась ранее, но на практике существует много дополнительных параметров, которые ограничивают целевые значения скорости и ускорения для вертикальных контроллеров, и в целом влияют на кинематический путь (kinematic pach).

Kinematic path в ArduPilot — это путь, который генерируется системой для перемещения летательного аппарата (например, квадрокоптера) к заданной точке или цели. Он определяет траекторию движения аппарата в трёхмерном пространстве с учётом его физических характеристик и ограничений.

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

technobee_0060_1_a4f49.png

Параметры, которые сильнее всего влияют на вертикальное движение под управлением пилота, — PILOT_SPEED_UP и PILOT_SPEED_DN, PILOT_ACCEL_Z и PSC_JERK_Z.

Pilot Speed Up и Pilot Speed Down определяют максимальную вертикальную скорость дрона под управлением пилота (отдельно максимальная скорость при наборе и отдельно максимальная скорость при снижении).

Обычно максимальная скорость набора задаётся выше максимальной скорости снижения, потому что слишком быстрое снижение увеличивает риск аварии (crash).

PILOT_ACCEL_Z определяет максимальное вертикальное ускорение, которое дрон может достигнуть под управлением пилота. Если рассматривать график «скорость–время» (velocity against time), то PILOT_ACCEL_Z соответствует максимальной скорости изменения вертикальной скорости.

PSC_JERK_Z — более тонкий параметр: он определяет, как быстро дрон достигает максимального вертикального ускорения. Увеличение этого значения делает отклик более «собранным» (snappy): дрон быстрее начинает движение при команде набора или снижения.

При слишком высоком PSC_JERK_Z возможна чрезмерная агрессивность: может возникать ощущение «подпрыгивания» при команде набора высоты или резкого «проваливания» при команде снижения. Значение подбирается как баланс отзывчивости и предсказуемости, чтобы управление не вызывало у пилота напряжения.

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

technobee_0061_1_a5f8b.png

Для проверки используется сообщение PSCD (position down), и включаются «target position down» и «position down», чтобы видеть целевое и фактическое поведение.

Примечание (уточнение полей PSCD). В PSCD обычно используются поля TPD (target position down) и PD (position down).

В этом контроллере есть только P‑терм, поэтому проверяется наличие перерегулирования или колебаний. При наличии колебаний допускается небольшое уменьшение PSC_POSZ_P. При чрезмерно вялом отклике, когда целевое значение существенно опережает фактическое, допускается небольшое увеличение P-терма с последующей проверкой результата.

Для типичного 8‑дюймового дрона при дефолтных значениях обычно наблюдается хорошее отслеживание (good tracking) и перерегулирование близко к нулю, то есть дефолтный P‑терм подходит. Для существенно более крупных или более мелких аппаратов может потребоваться иное значение.

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

technobee_0002_ru_WP_naw_controller_49f55.png

Контроллер навигации по точкам находится выше всех остальных контроллеров, рассмотренных ранее, и определяет поведение дрона при автономной навигации. Все параметры навигации по точкам находятся в Mission Planner в Full Parameter List и начинаются с WPNAV_. Поиск по этой строке позволяет найти весь набор параметров WPNAV.

technobee_0074_4068d.png

В навигации по точкам нет PID‑контроллеров (no PID controllers in waypoint navigation): рассматриваются параметры, которые определяют, как дрон ведёт себя при перемещении между путевыми точками.

Сначала рассматриваются параметры, которые управляют генерацией горизонтального кинематического пути (horizontal kinematic path generation) в режиме навигации по точкам. Это те же типы параметров, что и для горизонтального движения под управлением пилота, но они называются иначе, потому что речь идёт об автономном режиме.

technobee_0064_2_81586.png

WPNAV_JERK определяет, как быстро дрон достигает максимального ускорения и как быстро начинается движение из состояния «нулевой скорости». Этот параметр важен для скорости навигации между близко расположенными точками, потому что дрону требуется разгон и торможение, а WPNAV_JERK влияет на скорость достижения этих режимов.

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

WPNAV_JERK также влияет на то, как ускорение «затухает» при приближении к WPNAV_SPEED, которая является крейсерской скоростью (cruise speed) между точками. Если точки расположены далеко, WPNAV_JERK и WPNAV_ACCEL могут быть менее значимы для общего времени, и более значимым параметром становится WPNAV_SPEED.

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


WPNAV_RADIUS и WPNAV_ACCEL_C

technobee_0065_3_8fc4e.png

WPNAV_RADIUS определяет, насколько близко дрон должен подлететь к точке, чтобы она считалась достигнутой (hit). После достижения точки дрон переходит к следующей точке. При очень большом радиусе точка может считаться достигнутой до того, как дрон подлетит к ней близко.

WPNAV_ACCEL_C определяет максимальное центростремительное ускорение (maximum centripetal cornering acceleration), что влияет на радиус поворота и допустимую скорость прохождения поворота. При резком повороте дрон снижает скорость, чтобы оставаться в пределах допустимого центростремительного ускорения.

Определение (формула центростремительного ускорения). $$ a_c = \frac{v^2}{R}. $$ В контексте ограничения: $$ \frac{v^2}{R} \le WPNAV\_ACCEL\_C. $$

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

Эти параметры подбираются по поведению в автономной миссии и под требования задачи; идеального значения «вообще» не существует — существует только значение, оптимальное для конкретной задачи.

Вертикальный кинематический путь

technobee_0066_1_30617.png

Рассматрим параметры вертикального кинематического пути (vertical kinematic path generation) в автономном режиме. Часть параметров является общей с вертикальным управлением пилотом, часть — отдельная для автоматической навигации по точкам. PSC_JERK_Z является общим параметром и определяет, как быстро достигаются максимальные режимы по вертикали; предполагается, что он уже настроен на этапе управления пилотом.

WPNAV_ACCEL_Z определяет максимальное вертикальное ускорение в автономной навигации, и может быть установлено примерно таким же, как и при управлении пилотом, если это соответствует задаче. WPNAV_SPEED_UP и WPNAV_SPEED_DN являются прямыми аналогами PILOT_SPEED_UP и PILOT_SPEED_DN и определяют максимальные вертикальные скорости в автономном режиме.

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

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

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

6. Чек‑лист перед миссией (обязательно)

Чек‑лист предназначен для того, чтобы перед запуском миссии подтвердить выполнение всех шагов, которые были последовательно рассмотрены в уроке.

ПунктКритерий выполнения
Выбран корректный режим для тестов Тесты выполнялись в Loiter или Position Hold (PosHold).
Параметры Loiter проверены LOIT_ACC_MAX, LOIT_ANG_MAX, LOIT_BRK_ACCEL, LOIT_BRK_DELAY, LOIT_SPEED, LOIT_BRK_JERK установлены осмысленно под задачу.
Проверено согласование лимитов угла Учтено, что LOIT_ANG_MAX задаётся в degrees, а ANGLE_MAX — в centidegrees; при необходимости применено соотношение LOIT_ANG_MAX ≈ ANGLE_MAX/100.
Выполнены челночные проходы N–S и E–W Выполнены движения north–south и east–west с резкими сменами направления; курс (yaw) во время проходов не изменялся.
Выполнены вертикальные проходы up–down Выполнены несколько циклов «вверх–вниз» с резкими сменами направления; амплитуда — несколько метров.
PSC_VELXY настроен по логам В PIDE/PIDN проверено target vs actual (обычно Tar vs Act); выполнены PD‑баланс и масштабирование P/I/D ×1.1–×1.2 до порога колебаний с последующим откатом.
PSC_POSXY проверен по логам В PSCE/PSCN проверено target position vs position (обычно TPE vs PE, TPN vs PN); при необходимости выполнена небольшая корректировка PSC_POSXY_P.
Вертикальный кинематический путь согласован Проверены PILOT_SPEED_UP, PILOT_SPEED_DN, PILOT_ACCEL_Z, PSC_JERK_Z; скорость набора задана выше скорости снижения.
Вертикальный позиционный контроллер проверен В PSCD проверено target position down vs position down (обычно TPD vs PD); при необходимости выполнена небольшая корректировка PSC_POSZ_P.
Параметры WPNAV установлены под миссию Проверены/выставлены WPNAV_SPEED, WPNAV_ACCEL, WPNAV_JERK, WPNAV_RADIUS, WPNAV_ACCEL_C, WPNAV_ACCEL_Z, WPNAV_SPEED_UP, WPNAV_SPEED_DN.
Согласование пилотных и автономных параметров выполнено при необходимости Если требуется одинаковое поведение, автономные параметры приведены к «пилотным» аналогам там, где это уместно.
↑ К оглавлению
Часть 5: Полная Настройка Автономной Навигации В ArduPilot (ArduCopter 4.6.3)
6