главная | темы | войти
Мультироторные системы

MultiWii

http://blog.sovgvd.info/2013/02/multiwii.html#more
http://forum.rcdesign.ru/f123/thread221574.html
http://www.multiwii.com/

Основная тема проекта MultiWii(хорошая вики на английском) по управлению многоторными системами.
MultiWii это програмное обеспечение общего назначения для управление мультироторными аппаратами (мультикоптерами).
Поддерживаемые системы:

В данный момент поддерживает большое количество сенсоров, но изначально создавалось для гироскопов и акселерометров от Nintendo Wii консоли (Wii Motion Plus и Wii Nunchuk)
Стабильность проекта хорошо подойдет для FPV полетов, а так же позволяет делать акробатические номера.

Новое в версии MultiWii 2.0

Теперь вам необходима как минимум версия 1.0 Arduino IDE чтобы открывать *.ino файлы

Новые сенсоры

Акселерометр MMA7544
Магнитометр (компас) MAG3110

Новые платы

CRIUS_SE
CRIUS_LIGHT
MONGOOSE
CHERRY6DOFv1_0
DROTEK_6DOF_MPU

Новый процессор

Код сделал ronco основанный на ATMega 32U4, который может рассматриваться как промежуточный вариант между 328 и 2560, с кучей плюшек по сравнению с 328, но почти таким же размером. http://www.multiwii.com/forum/viewtopic.php?f=8&t=1145

Портирование на STM32

Отличная инициатива от dongs портирование multiwii на 32bit процессор. Это код позволяет перепрошить некоторые дешевые контроллеры полета на MultiWii, например FreeFlight FC, которую можно найти на сайте goodluckbuy или специально сделанный для этой версии AfroFlight32. http://www.multiwii.com/forum/viewtopic.php?f=8&t=1193 http://code.google.com/p/afrodevices/

Режим стабильного полета (stable mode)

Настройки BMA180 и BMA020 изменены на 8G (было 2G). Мы заметили что вибрации приводят к переполнению акселерометров, вызывая неверное измерения и как следствие неверные углы PITCH/ROLL. Вероятно это было основной причиной "уплывания горизонта", т.е. стабильный режим с этими сенсорами теперь будет немного лучше. Одно из следствий: TRUSTED ACC теперь включено по умолчанию и наверное будет удалено в будущих версиях.

Значение D в PID LEVEL настройках теперь используется для ограничения эффекта коррекции угла (спс за предложения от Shikra). По умолчанию (D=100), поведение стаб режима не поменялось. С более мелким D, будет такой эффект: более плавное изменение уровня, должно убрать смертельные колебания.

Режим удержания высоты

Было много проб и ошибок этого функционала http://www.multiwii.com/forum/viewtopic.php?f=8&t=562 http://www.multiwii.com/forum/viewtopic.php?f=7&t=363
Режим всё еще не особо хорош, но благодаря Marcin мы увидели большой шаг вперед и вроде бы удержание высоты работает у большинства. Хотя еще остались косяки. Velocity PID пока не используется в этом коде.

GPS

основная тема
Теперь есть поддержка двух типов GPS:
Serial GPS может быть подключен к свободному Serial port контроллера (требуется MEGA платка)
Настройки в config.h:
#define GPS_SERIAL 2 // тут указываем номер порта
#define GPS_BAUD 115200 // скорость
Удержание позиции и возврат домой работают с Serial GPS.
I2C Serial. EOSBandi добавил код работы с I2C GPS. Можно включить в config.h:
#define I2C_GPS
Позиция старта запоминается, когда GPS приемник "видит" хотя бы 4 спутника.
Имеется 2 режима работы с GPS:
- ReturnToHome: при включении, коптер возвращается к координатам позиции старта (домой).
- PositionHold: при включении, коптер остается в текущем положении.
GPS режимы требуют очень хорошо откалиброванного компаса, которому не мешают включенные моторы и хорошо летающий в стабильном режиме коптер.
PID настройки добавленные в GUI:
P = угол наклона, пропорциональный дистанции до цели (дом или текущая позиция) с P=5.0 в GUI, 1 метр = 0.5 градусов наклона
I пока не используется
D = максимальный угол наклона в зависимости от коррекции GPS (15 для новичков)
Видео первых проб GPS:

от EOSBandi
от nhadrian
Больше моторов/больше серв/более точный вывод

Благодаря ronco, часть output.pde практически переписана с нуля. И теперь у нас есть больше возможностей и комбинаций. Улучшена эффективность pwm: функция arduino digitalWrite arduino выла удалена чтобы обращаться напрямую к портам. Но теперь не так просто настраивать порядок двигателей.
На MEGA платках: первые 6 моторов теперь руляться таймерами в 16 битном режиме. Разница заметна в полета на квадрике.
Расширен диапазон двигателей (для использования с wii-ESC; разрешение теперь 250 шагов против 125 шагов в стандарте) подробнее тут

На 328p платка (например promini): у нас теперь следующие конфигурации:
HEX (FLAT X, FLAT +, or Y6)

OCTO config (FLAT X, FLAT +, X8)

Схемы конфигурация пока что тут

Новая конфигурация

Летающее крыло вышло из беты и успешно оттестировано
VTAIL

LCD

На данным момент поддерживаемые LCD:

LED (светодиоды)

I2C LED Ring устройство с 12 RBG светодиодами включено как опция в multiwii чтобы давать больше информации о состоянии сенсоров. http://www.multiwii.com/forum/viewtopic.php?f=8&t=902 http://www.dailymotion.com/video/xmdqa9_ledringmultiwii_tech

HeadFree режим

Нечто похожее на режим MK Carefree. Впервые представлен mahowik как “simple mode. Специальный бокс добавлен в GUI чтобы включать этот режим с передатчикам. Вам нужны будут магнитометр и акселерометр. Принцип работы: "Перед" запоминается при запуске двигателей, т.е. вы можете включать/выключать этот режим во время полета.

Pass-through mode

Это чекбокс в GUI. The purpose is to bypass the IMU for some configs like flying wings.

Пищалка

Чекбокс в GUI. Активация пищалки (если она конечно есть), например когда вы потеряли коптер в высокой траве.

Новая комбинация стиков

Для калибровки магнитометра (газ вверх, yaw=right, pitch=down)

Улучшена калибровка магнитометра

Калибровка магнитометра стала более точной. Основано на коде, предложенном EOSBandi. И это должно улучшить работу GPS.

Сглаживание гироскопа

Две опции для сглаживания гироскопа: (в основном для летающего крыла)

Сглаживание работы подвеса/серв основано на тех же принципах:

#define MMSERVOGIMBAL
#define MMSERVOGIMBALVECTORLENGHT 32
Калибровка акселерометра в полете

Это способ калибровки уровня, во время полетных тестов. Должно быть включено в config.h

#define InflightAccCalibration

Предложил jevermeister подробнее

Некоторые другие улучшения кода

Используется меньше памяти.
Теперь без функций работы с последовательный портом Arduino, от этого передача данных стала более эффективна.
Ориентация платы и сенсоров: это то что было не очень хорошо сделано в начале. Эти изменения не должны влиять на платы сенсоров (смена осей уже была сделана). Про ориентацию раздельных датчиков: теперь всё немного не так и придется пересматривать расположение осей ваших датчиков в коде.
Изменения во времени цикла, для его стабильности.

GUI

Ошибки I2C шины отображаются в GUI
Новые чекбоксы для AUX3/AUX4 каналов. Теперь больше возможностей для включения/выкллючения разных функций (4 переключателя в 3 состояниях для 8 каналки)
Прошлые CAM1/CAM2 каналы (теперь они AUX3/AUX4) все еще можно использовать для управления PITCH/ROLL подвеса, если чекбоксы AUX3/AUX4 не используются.
Визуальный отклик на все состояния auxN каналов.
GUI показывает полную версию прошивки контроллера.
И конечно, няшная версия WinGUI от EOSBandi. Она более дружелюбна чем java версия и предоставляет больше возможностей вроде загрузки/сохранения конфигурации.

OSD

rushduino это почти arduino платка с возможностями OSD. Очень гибкое open source решение, и оно подключается к последовательному порту multiwii чтобы забирать данные с сенсоров.
MIS OSD так же обновлен: multiwii может брать GPS информацию с OSD и наоборот.

Список закупки

Список может меняться или быть не точным, но в основан на деталях собранных и проверенных конфигурациях

Мозги

Есть вариант купить любую Arduino платку (328p,1280 или 2560 чипом, на 168 может очень мало влезть) + датчики
А есть вариант купить готовые платы с датчиками, например:
MultiWii с goodluckbuy тема на форуме
MultiWii с multiwiicopter.com
предположительно это тоже подойдет
Следует учесть что для подключения к компьютеру часто требуется переходник с UART на USB, на основе FTDI чипа, если он уже не встроен на плату или не входит в комплект, купить можно например тут FTDI для MultiWii

Датчики (если не входят в мозги)

Всё в одном
AllInOne
AllInOne с новым барометром
AllInOne с GPS
ITG3200 + BMA180
9DOF IMU с goodluckbuy
Гироскопы
ITG3200 ITG3205 можно выпилить из Wii Motion Plus ebay seeed studio
L3G4200D ebay
Акселерометры
ADXL345 goodluckbuy ebay
BMA020
BMA180 ebay
LIS3LV02
LSM303DLx_ACC
Аналоговые (#define ADCACC) adxl335 adxl335 и нонейм
Барометры
BMP085 ebay
MS561101BA ebay
Магнитометры
HMC5843
HMC5883 ebay seeed studio
AK8975
GPS

Моторы
Регуляторы скорости
Сервы (для камеры и трикоптера)
Рамы
Беспроводная связь (для телеметрии)

Crius MultiWii

Наиболее популярная на данный момент плата-контроллер для MultiWii, сочетает в себе 328p процессор и набор датчиков.
Существует 2 версии контроллера:

Crius MultiWii Lite Edition - гироскоп ITG3205 и акселерометр ADXL345
Crius MultiWii Standart Edition - гироскоп ITG3205, акселерометр BMA180, барометр BMP085 и компас HMC5883L
Так же контроллер может комплектоваться FTDI переходником для подключения к компьютеру и загрузки новой прошивке.

Сборка (соединение элементов)

пример соединения элементов трикоптера (3 мотора + 1 серва)
пример соединение элементов для квадрокоптера (4 мотора)

любые датчики подключаются через I2C интерфейс - для arduino с 328 чипом это 4 провода GND (земля/общий провод) VCC (5 или 3.3в в зависимости от вашего типа датчиков) SDA (A4) SCL (A5)

Подключение серв и моторов

Схема подключения двигателей для Arduino и Arduino Mega для версии 1.9 и ниже
ВНИМАНИЕ в версии 2.0 нумерация подключения двигателей помялась

тип arduino arduino mega
трикоптер трикоптер трикоптер
квадрокоптер X
квадрокоптер +
Y4
Y6
Герсокоптер X
Герсокоптер +
Октокоптер X не доступно
Октоокоптер + не доступно
Октоокоптер соосная схема не доступно
Бикоптер (как в фильме Аватар)
Система стабилизации подвеса (обязательно требует наличие акселерометра)

схемы подключения

Сборка (прошивка)

Рекомендуется использовать [Arduino IDE версии 0023] и выше (http://arduino.cc/en/Main/Software) - в зависимости от версии вашей прошивки (ВНИМАНИЕ 2.0 версия требует Arduino IDE 1.0, версии ниже работает с Arduino IDE 0023)
Скачайте последнюю стабильную прошивку (в названии не используется dev) и откройте через Arduino IDE.

Настройка прошивки

Сверху вы увидите несколько вкладок, нас будет интересовать только config.h
В зависимости от используемого вами оборудования (датчики, контроллеры скорости, количество моторов) требует настроить прошивку.
Раскоментируйте одну из (удалив // перед строкой) строк #define MINTHROTTLE с указанием минимального значения газа, при котором вращаются пропеллеры - это очень важно! Значения могут варьироваться в зависимости от марки ваших регуляторов скорости.

Аналогичным образом выберите тип вашего летательного аппарата, раскоментировав одну из строк после The type of multicopter

Укажите направление разворота (очень важно задать для трикоптера, иначе будет крутиться как бешеный) - #define YAW_DIRECTION

Скорость I2C шины (в ней подключены датчики) - #define I2C_SPEED, обычно достаточно оставить стандартное значение.

Если вы используете 3.3 сенсоры - закоментируйте (добавив/оставив // перед строкой) строку #define INTERNAL_I2C_PULLUPS, если 5в, то раскоментируйте.

Ниже, в разделах I2C gyroscope, I2C accelerometer, I2C barometer, I2C magnetometer, ADC accelerometer расскоментируйте используемые вами датчики. Если вы испольуете готовую плату с датчиками, например AllInOne или FFIMU, то выберите соответствующую плату из списка выше (при этом обязательно оставить закоментированными строки про отдельные датчики).

Расширенные параметры прошивки

Ориентация датчиков
Если ваши отдельные датчики ориентированы не верно или вам так удобнее, то порядок и направление осей можно поменять в конце файла, раскоментировав нужные строки

#define ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = X; accADC[PITCH] = Y; accADC[YAW] = Z;}
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = Y; gyroADC[PITCH] = -X; gyroADC[YAW] = Z;}
//#define MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}

Настройки MultiWii для трикоптера
Для трикоптера следует настроить параметры отклонения сервы (поворотный механизм), для этого с помощью стика YAW отклоняется поворотный узел и запишите максимальное и минимальное (пока не упрется во что-то) отклонение сервы в GUI

#define TRI_YAW_CONSTRAINT_MIN 1340
#define TRI_YAW_CONSTRAINT_MAX 1855

Попробуйте взлететь, если коптер немного крутит, оттриммируйте YAW на пульте, посмотрите на значение сервы во время симуляции полета (реально моторы не крутятся, но в GUI заведите коптер и газ на серединку) и запишите в параметр TRI_YAW_MIDDLE

#define TRI_YAW_MIDDLE 1630

Настройка кривой газа
Включение кривой газа

#define THROTTLE_EXPO

Значение газа в момент отрыва от земли, следует смотреть в GUI при полной нагрузке коптера

#define THROTTLE_HOVER 1490

Сдвиг кривой газа, если оставить 1500, то взлет и зависание будет примерно по середине стика газа

#define SHIFT_HOVER 1500

Настройка FAILSAFE
Раскоментируйте эту строку, если хотите чтобы FAILSAFE работал (внимание! проверьте всё перед реальным полетом, failsafe не всегда срабатывает при потере сигнала)

#define FAILSAFE

Время ожидания активации. 1 шаг = 0.1 сек, т.е. 10 - означает, что при потере сигнала через 1 секунду включиться faisafe

#define FAILSAVE_DELAY 10

Время до полного отключения моторов после посадки. 1 шаг = 0.1 сек, т.е. 200 - означает что через 20 секуд после включения faisafe моторы будут отключены

#define FAILSAVE_OFF_DELAY 200

Уровень газа, при котором коптер медленно снижается, можно задавать относительно значения MINTHROTTLE (как тут)

#define FAILSAVE_THR0TTLE (MINTHROTTLE + 100)

Настройка повеса камеры
Раскоментируйте эту строку, чтобы активировать выходы на сервы подвеса камеры

#define SERVO_TILT

Настройки серв (аналогично для ROLL и будьте готовы что 1500 не центр сервы)

#define TILT_PITCH_MIN 1020 // минимальное значение сервы, не ставьте меньше 1020
#define TILT_PITCH_MAX 2000 // максимальное значение сервы, не ставьте выше 2000
#define TILT_PITCH_MIDDLE 1500 // центральная позиция сервы (параллельно плоскости горизонта)

Скорость и направление вращения сервы

#define TILT_PITCH_PROP 10 // чем выше значение, тем сильнее отклоняется серва пропорционально углу наклона коптера, если изменить знак, например -10, серва будет вращаться в другую сторону

Для активация стабилизации подвеса в GUI (для 2.0) надо установить 3 кубика рядом с CAMSTAB (или какой то один, для активации по тумблеру). Каналы AUX3 и AUX4 отвечают за дополнительное отклонение серв.

Загрузка прошивки

Подключите вашу плату Arduino к компьютеру и выберите порт в меню Tools->Serial port и тип платы в меню Tools->Board.
Затем выберите File->Upload to I/O Board, чтобы загрузить прошивку на вашу Arduino. Загрузка занимате около 30-50 секунд, если увидели надпись Done Uploading (в черном блоке внизу Arduino IDE), то можно приступать к следующему шагу.

Настройка через GUI (ПО)

После загрузки в Arduino, программное обеспечение устанавливает стандартные настройки во время первого старта.
Эти настройки могут не подойти для вашего коптера, так как автор проекта настроих их под себя (моторы / ESC / пропеллеры / вес).
Как и у большинства мультироторных контроллеров, в MultiWii используется ПИД регулятор.
PID регулятор включает в себя 3 отдельные параметра: пропорциональная, Интегральная и Дифференциальная составляющая. Изменения в этих параметрах влияют на стабилизацию (более подробно читайте в теории настройки ПИД).

Графический интерфейс (GUI) это java программа которая может быть запущена на любом ПК с windows, linux или mac
особая версия MultiWiiConf 1.9 без opengl под 32 и 64 битные версии ОС, так же работает на arm архитектуре.
особая версия MultiWiiConf 1.9 без opengl под 57600 кбит/с.
особая версия MultiWiiConf 1.9 без opengl под 9600кбит/с.
Arduino следует подключить к компьютеру через USB кабель (или Bluetooth, или любой другой доступный вариант).

Процедура настройки
  1. Подключите Arduino к ПК
  2. Запустить GUI и выберите COM-порт соотвествующий вашей плате Arduino (тот же что выбирался при загрузке ПО в контроллер).
  3. Подождите несколько секунд, пока ПО будет запущено. (мигание светодиода)
  4. Когда светодиод погаснет, нажмите кнопку START и посмотрите на график (должны появится значения).
  5. Перед редактированием параметров, нажмите READ.
  6. Для сохранения параметров нажмите WRITE.
  7. Для изменения чиловых параметров - нажмите на поле мышкой и двигайте вверх/вниз или влево/вправо(не помню).

Стандартные значения могут быть сброшены если залить старую версию ПО, а затем новую.

окно MultiWii Conf (GUI) версии 1.7
Описание параметров
RC rate и RC expo

RC rate: задает чувствительность мультикоптера на PITCH и ROLL стики. Если вы чувствуете что ваш коптер слишком резвый, уменьшите это значение. А если хотите увеличить реакцию на стики, увеличьте этот параметр.
RC expo: задает плавность зоны возле центра стиков PITCH и ROLL. Значение меняется от 0 (без экспоненты) до 1.
Если вы не понимаете эти значения, то рекомендую прочитать документацию к вашей аппе (аппаратуре управления), часто эти функции уже встроены.
Лучше использовать multiwii вариант так как точность будет выше.

P и I Level

Указывает влияние акселерометра в режиме стабилизации. Если коптер не стабилен после активации - уменьшите значение P.

PITCH/ROLL/YAW ПИД и rate

Для очень стабильного коптера, PID значения должны быть высокими. Но если вы захотите делать что-то акробатическое с этими значениями, мультикоптера начнет сильно дрожать/раскачиваться. решение - уменьшить PID, в ущерб стабильности системы.
Поэтому чтобы переключаться между двумя настройками PID, теперь есть 2 опции в GUI чтобы определить способ уменьшения PID, в зависимости от ROLL/PITCH/YAW отклонений стиков.
Два поля для ввода справа устанавливают скорость уменьшения нормальных значений PID (который используется на нейтральных позициях ROLL/PITCH/YAW) в отношении отклонений стиков ROLL/STICK/YAW. На самом деле только P и D параметры подвержены этому преобразованию. Цель этого параметры не увеличить стабильность, а сделать коптер более маневренным. 0 = минимальное значение (для FPV или новичков); 0.4 = простенький акро; 0.7 = быстрый акро; 1 = мгновенный акро. Если вам не понятно, то оставьте это значение стандартным (0).

THROTTLE rate

Значение скорости уменьшения номинальных значений PID (которые используются при нейтральных положениях ROLL/PITCH) в отношении стика Throttle (газ). Цель этого значения - получить больше стабильности в ситуации использования больших значений газа, чем нужно во время подъемов. Как правило дело в быстром смещении (стиков?). Если вам не понятно, то оставьте это значение стандартным (0).

Как активировать функции MultiWii

В зависимости от вашей конфигурации, вы можете легко менять функции MultiWii, используя 2 переключателя на вашей аппе на каналах 5 (AUX1) и (AUX2).

Чтобы активировать эти функции, вы должны нажать на серый блок, чтобы он стал белым в нужном положении переключателей на требуемом канале.
Если вы хотите чтобы опции были включены всегда - нужно отметить все квадратики белыми (так же полезно если у вас нет или заняты AUX1 AUX2 каналы)

Определение подключенных сенсоров и их использование

Левая колонка показывает подключенные сенсоры. Правай колонка - активированные в данный момент опции.

Калибровка датчиков

Для калибровки акселерометра, выставите коптер параллельно горизонту и нажмите кнопку CALIB_ACC, GUI ненадолго подвиснет или странно поведут себя графики, после этого убедитесь что оси ROLL и PITCH параллельны.
Для калибровки магнитометра (компаса), нажмите на кнопку CALIB_MAG и вращайте коптер по всем осям или поочередно ставьте коптер на ребра в течении 30 секунд

Теория настройки ПИД

взято тут, а оригинал тут
Пропорционально-Интегрально-Дифференциальный метод

Когда ориентация мультикоптера меняется по любой из осей pitch/roll/yaw (тангаж-крен-рыскание), гироскопы показывают угловое отклонение мультикоптера от начальной позиции.

Контроллер мультикоптера сохраняет информацию об исходном положении и при помощи программного ПИД-регулятора управляет моторами для того, чтобы вернуть мультикоптер в это исходное положение. Этого добиваются, используя информацию об измеренном угловом отклонении, фиксируя изменение параметров с течением времени и предсказывая следующую позицию. Эта информация используется контроллером, чтобы, управляя моторами, вернуть мультикоптер в положение равновесия.

Р – это основополагающая часть ПИД-регулятора которая является залогом хороших летных характеристик.

Базовая настройка ПИД – на земле
  1. установите рекомендованные по умолчанию значения коэффициентов ПИД-регулятора;
  2. крепко и осторожно удерживайте мультикоптер в воздухе (ухватитесь за раму руками так, чтобы предотвратить возможные свободные вращения вокруг любой из осей коптера, берегите руки и лицо – прим. перев.);
  3. постепенно прибавляйте газ, стараясь найти точку висения. Вы почувствуете уменьшение веса коптера;
  4. попробуйте наклонить вниз коптер вдоль направления каждой из осей моторов. Вы должны почувствовать реакцию, направленную на компенсирование вашего давления вдоль оси (вы давите вниз, ПИД регулятор увеличивает обороты двигателя, пытаясь поднять этот край, тем самым противодействуя вашему усилию – прим. перев.);
  5. увеличивайте значение коэффициента Р до тех пор, пока не ощутите, что довольно сложно противостоять реакции коптера. Без стабилизации вы почувствуете, что ПИД позволяет вам двигаться через некоторое время. Так и должно быть;
  6. дальше начинайте раскачивать мультикоптер, увеличивайте Р до тех пор, когда начнутся осцилляции и затем немного уменьшите. Повторите для yaw оси;

Теперь ваши установки должны годиться для дальнейшей настройки в воздухе

Знакомство с воздействием P, I и D на характеристики.

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

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

Увеличение значения Р:
приводит к большей устойчивости /стабильности до тех пор, пока слишком большое значение Р не приведет к осцилляциям и потере контроля над коптером (потере управления). Вы заметите очень большую силу воздействия, противодействующую любому изменению положения коптера.

Уменьшение значения Р:
приведет к дрейфу в управлении. Если Р слишком мал, коптер становится очень нестабильным. Коптер будет меньше сопротивляться любым попыткам изменить его положение.

Акро (полеты на пилотаж) полеты требуют чуть более высоких Р, аккуратные и плавные полеты – чуть более низкого Р

I – это период времени, в течение которого записываются и усредняются угловые отклонения.

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

Увеличение значения I:
улучшит способность удерживать начальное положение и уменьшит дрейф, но так же увеличит задержку возврата в начальное положение. Также уменьшает влияние Р.

Уменьшение значения I:
Улучшит реакцию на изменения, но увеличит дрейф и уменьшит способность удерживать положение. Так же увеличивает влияние Р.

Акро режим: требует немного меньших значений I
Аккуратное плавное руление: требуются немного большие значения I

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

Увеличение значения D: (помните, это значит МЕНЬШЕЕ число, т.к. значение отрицательное)
увеличивает скорость, с которой все отклонения будут скомпенсированы. Это означает так же увеличение вероятности появления перерегулирования и осцилляций. Так же увеличивается эффект от изменения Р (влияние Р-компоненты)

Уменьшение D: (помните, это значит БОЛЬШОЕ число, т.к. это отрицательно значение, т.е. дальше от нуля)
уменьшает колебания при возврате в начальное положение. Возврат в начальное положение происходит медленнее. И так же уменьшает эффект от изменения Р.

Акро режим: увеличьте D (помните – меньшее число, т.е. ближе к нулю)
Аккуратные плавные полеты: уменьшите D (это означает большее число, т.е. дальше от нуля)

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

Продвинутая настройка – практическая реализация

Для акро полетов:

  1. увеличивайте значение Р до появления осцилляций, затем немного уменьшите;
  2. изменяйте значение I до тех пор, пока дрейф по время зависания не станет недопустимым, затем слегка увеличьте;
  3. увеличьте значение D (помните, меньшее значение – ближе к нулю) до тех пор, пока стабилизация после резких движений органами управления не будет приводить к недопустимой раскачке.

После этого можно немного уменьшить Р.

Стабильные полеты (RC, AP, FPV):

  1. увеличивайте значение Р до появления осцилляций, затем немного уменьшите;
  2. измените I пока коррекция после отклонения не станет недопустимо слабой, затем увеличьте немного;
  3. уменьшите D (дальше от нуля) до тех пор, до тех пор, пока стабилизация после резких движений органами управления не станет слишком медленной. Затем увеличьте D немного (помните – меньшее значение);

После этого можно немного уменьшить Р.

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

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

Запуск

Подразумевается что вы уже установили JAVA, Arudino IDE работает (рекомендуется использовать версию 0022), прошивка залита, запущен конфигуратор и он работает (после выбора порта и нажатии кнопки START график ожил и отобразился тип вашего коптера). Так же, если указано что требуется расскомментировать (убрать // перед строкой) или закомментировать (добавит // перед строкой), то эти действия выполняются в файле config.h (если не указан другой файл).

Калибровка аппаратуры управления

После успешного соединения программы конфигуратора с вашим коптером, справа сверху вы увидите голубые полоски, показывающие каналы вашего пульта, подвигайте стиками, чтобы убедится что все работает верно (ручка газа меняет значение throttle и т.д.).
Установите стики вашего пульта в центральное положение (включая газ и крутилки, если они используются для переключения режимов), значения во всех полосках должно быть близкое к 1500 (допускается небольшое подрагивание, которое следует убрать, раскоментировав в коде строку #define DEADBAND 5 и увеличив значение с 5, например до 10), если это не так - оттримируйте ваш пульт.
Теперь отклоняйте стики до максимума и минимума, значения должны находится в пределах 1000...2000, если это не так - настройте ваш пульт согласно инструкции к нему.
На всякий случай проверьте что по центру у вас 1500.
Помните что полоски должны двигаться в соответствии с движениями стиков, т.е. если вы поднимаете ручку газа вверх, то и полоска должна идти вверх (аналогично для других каналов), если это не так - сделайте реверс каналов вашего пульта.

Немного о безопасности

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

Использование стиков для управления коптером

Перед подключением батареи убедитесь что ручка газа в минимальном положении.

Запуск моторов
Запуск моторов для трикоптера
Остановка моторов
Остановка моторов для трикоптера
калибровка гироскопа (сперва отключите двигатели)
калибровка акселерометра (сперва отключите двигатели)
калибровка магнитометра(компаса) (сперва отключите двигатели)
триммирование акселерометра (сперва отключите двигатели)

Хаки

Проблема на медленных дешевых регулях

Если на дешевых регулях не получается летать, то стоит попробовать понизить частоту датчиков, для этого внутри кода самих датчиков закоментировать (добавить //) строку

TWBR = ((16000000L / 400000L) - 16) / 2; // change the I2C clock rate to 400kHz*

а в config.h выставить

#define I2C_SPEED 100000L //100kHz normal mode, this value must be used for a genuine WMP

проверено 2мя людьми, стабильность полета возрастает в разы на дешевых 8kHz регулях

поведение коптера при смене частоты i2c шины
2013-02-05 10:17:16
| подписаться на рассылку