/
Arkud
/
BPLA_Controller
Обзор
Документация
Войти
/
Arkud
/
BPLA_Controller
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master-split
drone_config.py
169 строк
7 KB
Arkud
refactor(hold): настройка параметров удержания и упрощение PID-логики
15 июл 2026, 10:00
Верифицирован
15 июл 2026, 10:00
975543c
Код
Авторство
О чём код?
# drone_config.py # Настройки конкретного дрона/сборки. Под новый дрон — правится только этот файл. # ── Боковое слежение (Roll + Yaw) ──────────────────────────────────────────── PID_KP = 447 PID_KI = 9.9 PID_KD = 0.5 PID_KP_BOUNDS = (80, 950) PID_KD_BOUNDS = (0.05, 4) PID_ADAPT_RATE = 0.07 MAX_INTEGRAL = 1.2 # ── Рыскание в CHASE ───────────────────────────────────────────────────────── YAW_CHASE_KP = 150 YAW_CHASE_KD = 1 ERR_X_YAW_ALPHA = 0.30 YAW_OUT_MAX_DELTA = 45 YAW_VEL_ERR_X_MAX = 3.0 # ── Высота (GPS/баро, опционально) ─────────────────────────────────────────── USE_GPS_ALT_HOLD = False KP_ALT = 40 KI_ALT = 8.0 ALT_DEADBAND = 0.10 # ── Компенсация наклона камеры на err_y ────────────────────────────────────── PITCH_ERRY_COMP_ENABLED = True PITCH_ERRY_COMP_GAIN = -0.35 # ── Газ ─────────────────────────────────────────────────────────────────────── HOVER_THROTTLE = 1560 HOVER_FF_MIN = 1400 HOVER_FF_MAX = 1700 HOVER_CLIMB_DEAD = 0.08 HOVER_CLIMB_RATE = 15.0 KP_THROTTLE = 65 KD_THROTTLE = 0 # было 3 поменять если не работает KD_BARO_THROTTLE = 15 # ── Контроллер высоты в HOLD/CHASE ─────────────────────────────────────────── # "baro" — барометр держит высоту, err_y медленно тянет target_alt # "camera" — err_y напрямую правит throttle ALT_HOLD_MODE = "camera" ALT_TAU = 0.35 ALT_V_MAX = 0.55 KD_ALT_HOLD_V = 35.0 CLIMB_DEADBAND = 0.05 CLIMB_LEAD_TIME = 0.35 CLIMB_ACCEL_ALPHA = 0.30 HOLD_PITCH_FF_GAIN = 0.30 HOLD_PITCH_FF_CAP = 20 ERRY_TO_ALT_RATE = 0.08 ERRY_ALT_DEADBAND = 0.20 HOLD_ALT_CLAMP = 2.0 ALT_ERR_DEADBAND = 0.05 ERR_Y_DEADBAND = 0.13 ERR_Y_OFFSET = 0.00 THROTTLE_PITCH_LOCK_RAD = 0.14 THROTTLE_SLEW_MAX = 12 # ── Питч ───────────────────────────────────────────────────────────────────── HOVER_PITCH = 1500 SEEK_PITCH = 1580 CHASE_PITCH = 1600 CHASE_DESCENT_RATE = 2.5 ERR_Y_PITCH_CAP_THRESH = 0.75 ERR_Y_PITCH_CAP_MIN = 1450 PITCH_SPEED_KP = 220.0 PITCH_SPEED_KD = 4.0 PITCH_RATE_LIMIT_HOLD = 250 PITCH_RATE_LIMIT_HOLD_BRAKE = 300 HOLD_PITCH_MIN = 1430 # ── Торможение после потери цели ────────────────────────────────────────────── BRAKE_KP = 120 BRAKE_PITCH_MIN = 1200 BRAKE_SPEED_MIN = 0.3 # ── Сглаживание RC-выходов ──────────────────────────────────────────────────── # [roll, pitch, thr, yaw] ALPHA_SEEK = [0.50, 0.50, 0.45, 0.50] ALPHA_CENTER = [0.65, 0.60, 0.55, 0.65] ALPHA_CHASE = [0.75, 0.60, 0.55, 0.75] ALPHA_HOLD = [0.60, 0.30, 0.55, 0.60] ALPHA_HOLD_PITCH_BRAKE = 0.85 ALPHA_THROTTLE_DETECT_EASE = 0.25 # ── CENTER ──────────────────────────────────────────────────────────────────── YAW_FACTOR_CENTER = 1.0 ROLL_FACTOR_CENTER = 0.25 YAW_DEADZONE_CENTER = 0.20 YAW_DEADZONE_CHASE = 0.20 # ── HOLD: roll-контроллер бокового сноса ───────────────────────────────────── ROLL_TAU = 1.1 ROLL_RATE_MAX = 1.0 KROLL_V = 55.0 KP_ROLL_HOLD = 100.0 KD_ROLL_HOLD = 90.0 HOLD_ROLL_KI = 60.0 HOLD_ROLL_MAX = 150 ROLL_OUT_MAX_DELTA = 60 HOLD_ROLL_I_MAX = 45 # ── HOLD: yaw только по скорости цели ──────────────────────────────────────── YAW_HOLD_KD = 80.0 YAW_HOLD_MAX = 45 # ── Пороги переходов state machine ──────────────────────────────────────────── CENTER_THRESH = 0.1 MIN_DETECT_FRAMES = 2 MAX_LOST_FRAMES = 2 PRED_VEL_ALPHA = 0.35 TURN_LEAD_OFFSET = 0.0 SEEK_YAW_RATE = 70 SEEK_YAW_MAX_DELTA = 30 # ── HOLD: удержание дистанции ───────────────────────────────────────────────── AREA_HOLD = 0.035 # меньше = дальше, больше = ближе (диапазон ~0.02-0.08) HOLD_ENTRY_AREA = 0.020 HOLD_EXIT_AREA = 0.020 AREA_SCALE_DIVISOR = 50 # масштаб kp/kd/ki по площади, не трогать при подборе дистанции ERR_MAG_CAP = 0.4 HOLD_CH6_ERR_THRESH = 0.30 HOLD_AREA_KP = 20.0 HOLD_AREA_KI = 0.0 HOLD_AREA_KD = 1.5 AREA_RATE_FF = 0.3 HOLD_V_FWD_MAX = 1.0 HOLD_V_REV_MAX = 0.8 HOLD_AREA_DECEL_ZONE = 0.030 HOLD_V_FWD_MIN_RATIO = 0.15 # ── RC-триггер vision-режима ────────────────────────────────────────────────── RC_TRIGGER_CHANNEL = 8 RC_TRIGGER_THRESHOLD = 1700 # ── Камера / модель ─────────────────────────────────────────────────────────── # FRAME_W/FRAME_H подбираются автоматически из MODEL_INPUT и FRAME_ASPECT. KMODEL_PATH = "/sdcard/yolov8n_480.kmodel" MODEL_INPUT = [480, 480] FRAME_ASPECT = 4.0 / 3.0 FRAME_W = MODEL_INPUT[0] FRAME_H = int(FRAME_W / FRAME_ASPECT) FRAME_H -= FRAME_H % 2 CONF_THRESH = 0.4 NMS_THRESH = 0.45 NUM_CLASSES = 1 TARGET_CLASS = 0 # ── MAVLink ─────────────────────────────────────────────────────────────────── MAV_BAUD = 115200 MAV_GCS_SYS = 255 # должен совпадать с SYSID_MYGCS на полётнике MAV_GCS_COMP = 190 MAV_TARGET_SYS = 1 MAV_TARGET_COMP = 0 # ── Отладка ─────────────────────────────────────────────────────────────────── DISPLAY = False STREAM_IDE = False