Канали керування, виходи Pixhawk і SITL

Ця сторінка описує наскрізний тракт керування CFMOTO CFORCE 520L:

пульт / QGroundControl / dashboard
        -> RC-канал у ArduRover
        -> перевірки безпеки CFMotoDBW
        -> SERVO або RELAY вихід Pixhawk
        -> привід чи електричне коло машини

Значення нижче взяті з canonical-гілки cforce520-dbw у /srv/maul/ardupilot. Параметри MAUL_* можуть змінити номер вхідного каналу, тому під час діагностики потрібно перевіряти їх свіжим readback, а не покладатися лише на таблицю.

Не переносити параметри SITL на реальний Pixhawk

Профіль maul-cfmoto.parm містить синтетичні PWM, GPIO та RPM для симулятора. Вони не є результатом калібрування реальних приводів.

Вхідні RC-канали

RC Параметр Призначення Тип команди та важливі умови
RC1 MAUL_START_CH=1 Стартер Моментна команда: вище 1700 мкс — запит запуску. Після відпускання стартер негайно вимикається.
RC2 MAUL_GAS_CH=2 Газ Пропорційна команда від trim до max. Гальмо завжди має пріоритет над газом.
RC3 MAUL_IGN_CH=3 Запалювання Вище 1700 мкс — увімкнути; нижче 1300 мкс — вимкнути.
RC4 RCMAP_ROLL=4 Кермо Пропорційна команда вліво/вправо. Центр — 1500 мкс.
RC5 MAUL_BRK_CH=5 Робоче гальмо Пропорційна команда від trim до max. Будь-яке гальмування пригнічує газ.
RC6 MAUL_GEAR_CH=6 Селектор коробки П'ять каліброваних PWM-кнопок P/R/N/H/L; значення наведені нижче.
RC7 MAUL_4WD_CH=7 Повний привід Вище 1700 мкс — запит 4WD. Перемикання дозволене лише за безпечної швидкості, RPM і нейтральних газу/гальма.
RC8 MAUL_THR_LIM_CH=8 Обмежувач газу Вище 1700 мкс обмежує команду газу до MAUL_THR_LIM, типово 50%. Це не регулятор швидкості.
RC10 MAUL_DIFF_CH=10 Блокування диференціала Вище 1700 мкс — запит блокування. Воно вмикається лише разом із 4WD і за безпечних умов.
RC15 MAUL_GCL_CH=15 PWM газу під час калібрування Службовий browser-local override. Не є звичайним водійським каналом.
RC16 MAUL_CAL_CH=16 Dead-man калібрування коробки Має безперервно залишатися вище 1700 мкс протягом sweep. Втрата heartbeat/USB відпускає канал і перериває калібрування.

Канали RC9, RC11–RC14, RC17 і RC18 не мають штатної ролі в поточній конфігурації CFMotoDBW.

Положення селектора коробки

RC6 декодується за каліброваними параметрами MAUL_GIN_*:

Положення Параметр Поточний PWM
Park MAUL_GIN_P 1755 мкс
Reverse MAUL_GIN_R 1535 мкс
Neutral MAUL_GIN_N 1412 мкс
High MAUL_GIN_H 1295 мкс
Low MAUL_GIN_L 1075 мкс

Типовий допуск MAUL_GIN_TOL=50 мкс. Діапазони не повинні перекриватися. Значення поза всіма діапазонами означає невідому передачу та блокує тягу.

Під час штатного перемикання оператор тримає газ і робоче гальмо в нейтральному положенні. Прошивка сама переводить газ у IDLE, прикладає BRK_HOLD, перевіряє швидкість/RPM, за потреби проходить через Neutral і лише тоді рухає привід коробки. Після перемикання газ потрібно один раз відпустити в нейтраль — це захист від автоматичного відновлення тяги.

Виходи Pixhawk

Вихід Функція / параметр Навантаження Safe-стан
MAIN1 / SERVO1 Script1 (94) Привід газу MAUL_GAS_IDLE; SERVO1_TRIM має збігатися з IDLE.
MAIN2 / SERVO2 Script2 (95) Привід робочого гальма MAUL_BRK_HOLD; SERVO2_TRIM має збігатися з HOLD.
MAIN3 / SERVO3 Steering (26) Arduino-контролер керма MAUL_STR_FS, типово 1500 мкс.
MAIN4 / SERVO4 Script3 (96) Привід коробки Neutral / безпечне утримання за логікою стану.
MAIN5 RELAY2_PIN=105 Стартер Завжди OFF після відпускання, timeout, появи робочих RPM або failsafe.
MAIN6 RELAY1_PIN=106 Запалювання OFF при відсутності запиту; у штатному режимі запуску контролюється state machine двигуна.
AUX3 RELAY3_PIN=52 4WD Стан не змінюється, якщо швидкість/RPM/органи керування небезпечні.
AUX4 RELAY4_PIN=53 Блокування диференціала Може бути ON лише разом із 4WD.
AUX5 RPM1_PIN=54 Частотний вхід RPM1 Ідентичність фізичного датчика ще потрібно підтвердити на машині.
AUX6 RPM2_PIN=55 Частотний вхід RPM2 MAUL_ENG_RPM_I=2 типово використовує RPM2 як RPM двигуна; перевірити на живому обладнанні.

SERVO_RATE=50. Для керма використовуються SERVO3_MIN=1000, SERVO3_TRIM=1500, SERVO3_MAX=2000. Деталі локального контуру Nano/AS5600 див. у документації контролера керма.

Умови запуску двигуна

Звичайний запуск стартера дозволяється лише коли одночасно виконано:

  1. Rover ARMED.
  2. Запалювання запитане через RC3.
  3. Стартер утримується через RC1.
  4. Вибрано P або N.
  5. Машина стоїть.
  6. Газ і робоче гальмо в нейтральному положенні.
  7. Немає failsafe.
  8. Налаштований MAUL_ENG_RPM_I, а relay 1/2 присутні.

Після MAUL_ENG_DLY прошивка вмикає стартер максимум на MAUL_ENG_CRANK. Щойно RPM перевищує MAUL_ENG_RUN_RPM, стартер відпускається. Окремий guarded-режим калібрування газу може запускати двигун у DISARMED, але вимагає свіжої телеметрії коробки, підтвердженої P/N та dead-man; це не обхід штатних interlock'ів.

Поведінка при failsafe і DISARMED

  • газ повертається в MAUL_GAS_IDLE;
  • гальмо переходить у MAUL_BRK_HOLD;
  • тяга не відновлюється, доки органи керування не повернулися в neutral;
  • стартер вимикається негайно;
  • 4WD і diff-lock не перемикаються за небезпечної швидкості або RPM;
  • невідома, прострочена чи суперечлива телеметрія коробки блокує тягу, якщо MAUL_TLM_EN=1.

Повна симуляція на server_maul_hard

Для SITL використовується окремий профіль:

/srv/maul/ardupilot/Tools/autotest/default_params/maul-cfmoto.parm

і модель:

--model rover-cfmoto

Модель читає ті самі виходи, що й машина:

  • SERVO1 — газ;
  • SERVO2 — гальмо;
  • SERVO3 — кермо;
  • SERVO4 — напрямок/положення коробки;
  • SITL GPIO 0/1 — запалювання/стартер;
  • SITL GPIO 2/3 — 4WD/diff-lock;
  • RPM1_TYPE=10 — модельовані RPM двигуна.

У SITL задані синтетичні actuator PWM 1100…1900, а Nano коробки відсутня, тому MAUL_TLM_EN=0 і фізична модель використовує командовану передачу. Це дозволяє перевірити pre-arm, ARM, запуск двигуна, RPM cutoff стартера, перемикання P/R/N/H/L, газ, гальмо, руль, 4WD і diff-lock без підключеного Pixhawk. Реальна телеметрія Nano та фізичні межі приводів перевіряються окремо на стенді.

QGroundControl підключається прямим TCP link до 136.243.89.142:5760. Користувацькі канали потрібно передавати як RC/joystick channels згідно з таблицею вище; звичайний virtual joystick із двома осями сам по собі не формує команди коробки, стартера, 4WD і diff-lock.

Пов'язані сторінки