Multiwii с airm.ru

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

  • стабилизатор подвеса камеры
  • бикоптер (GunShip из Аватар)
  • трикоптер
  • квадрокоптер
  • схемы Y4 и Y6
  • гексокоптер
  • октокоптер
  • летающее крыло

В данный момент поддерживает большое количество сенсоров, но изначально создавалось для гироскопов и акселерометров от 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: http://www.youtube.com/watch?v=pJJKG6uWqv4 от EOSBandi http://www.youtube.com/watch?v=YcLJfC4h90M от nhadrian

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

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

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

  • со стандартным приемником: 2 последний мотора на PIN A0 и A1 вместо D5 и D6 или использовать PPM SUM
  • с 2мя сервами для подвеса + 1 servo для нажатия на спуск камеры:
  • с PPM SUM приемников: последние 2 мотора на PIN D5 и D6 и сервы на PIN A0/A1/A2
  • со стандартным приемником: последние 2 мотора на PIN A0/A1 и сервы на PIN A2 и D12 (без сервы для кнопки камеры)

OCTO config (FLAT X, FLAT +, X8)

  • с любым приемников: на PINах 3, 9, 10, 11, A0, A1, A2 и12
  • без серк

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

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

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

LCD

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

  • LCD_SERIAL_3W: исправлен 3х проводной LCD со Sparkfun, используя rx-pin для передачи на скорости 9600
  • LCD_TEXTSTAR: LCD_TEXTSTAR модуль CW-LCD-02 (который имеет 4 кнопки для выбора меню)
  • LCD_VT100: vt100 совместимый эмулятор терминала (blueterm, putty и т.д), как альтернатива GUI для любой терминальной программы (опц. и по BT), работает с большинством планшетных ПК, смартфонов и т.д., подробнее
  • LCD_ETPP: Eagle Tree Power Panel LCD, который использует i2c шину
  • LCD_LCD03: LCD03, еще один экран с шиной i2c подробнее
  • середину сервы (по умолчанию 1500) можно менять через 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.

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

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

  • по осям, основанное на LPF: #define GYRO_SMOOTHING {20, 20, 3} // средние значения для roll, pitch, yaw
  • для всех осей (код Magnetron)

    define MMGYRO

    define MMGYROVECTORLENGHT 10

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

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 версии контроллера: http://www.goodluckbuy.com/images/detailed_images/sku_77994_2.jpg Crius MultiWii Lite Edition - гироскоп ITG3205 и акселерометр ADXL345 http://www.goodluckbuy.com/images/detailed_images/sku_77993_2.jpg Crius MultiWii Standart Edition - гироскоп ITG3205, акселерометр BMA180, барометр BMP085 и компас HMC5883L http://www.goodluckbuy.com/images/detailed_images/sku_77995_2.jpg Так же контроллер может комплектоваться FTDI переходником для подключения к компьютеру и загрузки новой прошивке.

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

http://radio-commande.com/wp-content/uploads/2010/06/tri.jpg пример соединения элементов трикоптера (3 мотора + 1 серва) http://radio-commande.com/wp-content/uploads/2010/06/quadX.jpg пример соединение элементов для квадрокоптера (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. Для изменения чиловых параметров - нажмите на поле мышкой и двигайте вверх/вниз или влево/вправо(не помню).

Стандартные значения могут быть сброшены если залить старую версию ПО, а затем новую. http://www.multiwii.com/wp-content/uploads/2011/01/GUI_1_7.jpg окно MultiWii Conf (GUI) версии 1.7 Описание параметров


http://www.multiwii.com/wp-content/uploads/2011/01/rc_rate.jpg RC rate и RC expo RC rate: задает чувствительность мультикоптера на PITCH и ROLL стики. Если вы чувствуете что ваш коптер слишком резвый, уменьшите это значение. А если хотите увеличить реакцию на стики, увеличьте этот параметр. RC expo: задает плавность зоны возле центра стиков PITCH и ROLL. Значение меняется от 0 (без экспоненты) до 1. Если вы не понимаете эти значения, то рекомендую прочитать документацию к вашей аппе (аппаратуре управления), часто эти функции уже встроены. Лучше использовать multiwii вариант так как точность будет выше. http://www.multiwii.com/wp-content/uploads/2011/01/level.jpg P и I Level Указывает влияние акселерометра в режиме стабилизации. Если коптер не стабилен после активации - уменьшите значение P. http://www.multiwii.com/wp-content/uploads/2011/01/PID_rate.jpg 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). http://www.multiwii.com/wp-content/uploads/2011/01/throttle_PID.jpg THROTTLE rate Значение скорости уменьшения номинальных значений PID (которые используются при нейтральных положениях ROLL/PITCH) в отношении стика Throttle (газ). Цель этого значения - получить больше стабильности в ситуации использования больших значений газа, чем нужно во время подъемов. Как правило дело в быстром смещении (стиков?). Если вам не понятно, то оставьте это значение стандартным (0). http://www.multiwii.com/wp-content/uploads/2011/01/white_boxes.jpg Как активировать функции MultiWii В зависимости от вашей конфигурации, вы можете легко менять функции MultiWii, используя 2 переключателя на вашей аппе на каналах 5 (AUX1) и (AUX2).

  • LEVEL - выравнивание в горизонт (требует наличия акселерометра)
  • BARO - дает возможность удерживать высоту (требуется барометр)
  • MAG - позволяет удерживать курс (требует магнитометр(компас))
  • CAMSTAB: если включено, PITCH и ROLL сервы следуют за отклонением коптера, позволяя держать подвес камеры в требуемом положении.
  • CAMSTRIG: если активировано, серва переходит между минимальным и максимальным значением с нужность скоростью (например для нажатия кнопки фотографирования).

Чтобы активировать эти функции, вы должны нажать на серый блок, чтобы он стал белым в нужном положении переключателей на требуемом канале. Если вы хотите чтобы опции были включены всегда - нужно отметить все квадратики белыми (так же полезно если у вас нет или заняты AUX1 AUX2 каналы) http://www.multiwii.com/wp-content/uploads/2011/01/sensors.jpg Определение подключенных сенсоров и их использование Левая колонка показывает подключенные сенсоры. Правай колонка - активированные в данный момент опции.

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

Для калибровки акселерометра, выставите коптер параллельно горизонту и нажмите кнопку 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 кабель от компьютера. Использование стиков для управления коптером


Перед подключением батареи убедитесь что ручка газа в минимальном положении. http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_motor_arm.gif Запуск моторов http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_motor_arm_tri.gif Запуск моторов для трикоптера http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_motor_disarm.gif Остановка моторов http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_motor_disarm_tri.gif Остановка моторов для трикоптера http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_calibrate_gyro.gif калибровка гироскопа (сперва отключите двигатели) http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_calibrate_acc.gif калибровка акселерометра (сперва отключите двигатели) http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_calibrate_mag.gif калибровка магнитометра(компаса) (сперва отключите двигатели) http://dl.dropbox.com/u/1638929/blogowiki/multiwii/stik_conf_trim_acc.gif триммирование акселерометра (сперва отключите двигатели)

Часто задаваемые вопросы по MultiWii

вольный перевод с официального сайта Основное


Статусы светодиода при инициализации:

  • быстрое мигание - не подключен акселерометр
  • долгое мигание - акселерометр подключен

после инициализации:

  • светодиод горит - моторы активированы
  • светодиод не горит - моторые деактивированы (не вращаются)

основные проблемы:

  • мигание при инициализации очень долгое (более 5 сек) бывает при использование WiiMotionPlus совместно с Nunchuck - увеличить значение INTERLEAVING DELAY в коде (с 3000 до 3500 или до 4000)
  • светодиод постоянно мигает - неправильное соединение между Arduino и I2C датчиками (может перепутали SDA SCK или коротит их)
  • при попытке активировать моторы, светодиод не загорается - проверить в GUI что уровни с аппы в диапазоне примерно от 1000 до 2000

Выбор других регуляторов скорости/моторов/пропеллеров Пропеллеры должны быть максимально легкими. Значение пропорции шаг/диаметр винта должна быть маленькой, т.е. 10x3.8 лучше чем 10x4.7 и 10x4.7 лучше чем 8x6 Значение оборотов на вольт (kv) у моторов должно быть низким. В блоге warthox можно найти много интересного. Arduino работает хорошо (светодиод моргает при включении), но невозможно подключиться в Windows требуется переконфигурировать COM-порт, чтобы он работать со скоростью 115200. Я не программист и не электротехник, будет сложно? Достаточны минимальных знаний об Arduino Сложно летать на мультикоптере? Не рекомендуется начинать с коптеров, может лучше сперва попробовать соосный вертолет. Мултикоптеры очень стабильны, но они не держаться в воздухе самостоятельно. Стабмод не очень то и стабильный В стабмоде коптер старается выровнится в горизонт, когда отпущены стики пульта управления (по центру). Это не означает что коптер встанет как вкопанный, ничего не удерживает коптер от уплывания в этом режиме. У вас есть другие вопросы? давайте обсудим их в комментариях или например на форуме Начнем, запустим и остановим MultiWii


Моторы не запускаются Моторы всё еще не запускаются или запустились, но теперь не останавливаются Моторы всё еще не запускаются, что на счет минимального сигнала газа, отправляемого в ESC Моторы стартанули и остановились, но после триммирования YAW больше не получатся сделать этого Убедитесь что ваши регуляторы скорости поддерживают сигнал PPM с частотой 490Hz Почему так важно установить минимальное стартовое значение для ESC Один мотор внезапно остановился в полете Как триммировать ваш коптер (версия прошивки 1.7 или выше) триммирование акро триммирование стаб

Про WiiMotion plus

Сервы

Соединение элементов

Графический интерфейс программы конфигурации

Как должны быть ориентированы оси датчиков Чтобы определить корректность расположения осей датчиков проделайте следующее: Наклоните коптер вправо (левая сторона вверх): - MAG_ROLL, ACC_ROLL и GYRO_ROLL растут - MAG_Z и ACC_Z уменьшаются

Наклоните коптер вперед (хвост вверх): - MAG_PITCH, ACC_PITCH и GYRO_PITCH растут - MAG_Z и ACC_Z уменьшаются

Вращайте коптер по часовой стрелке (YAW): - GYRO_YAW растет

Коптер стоит на месте (горизонтально): - MAG_Z положительное ; ACC_Z положительное

Про Arduino

ошибка слишком большой скетч (sketch too large error) Программное обеспечение написано для ATmega328 или ATMega 1280. Это проблема могла быть вызван неверным выбором платы Arduino. ошибка: MINTHROTTLE was not declared in this scope в параметрах конфигурации вам нужно расскоментировать (убрать 2 косые линии в начале строки), так же возможно придется подобрать своё значение MINTHROTTLE в зависимости от настроек вашего регулятора скорости

//#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A //#define MINTHROTTLE 1120 // for Super Simple ESCs 10A

программное устранение вибраций особая сборка от mahowik - сюда уже включено то что выше подключение Bluetooth модуля к MultiWii еще про bluetooth

Хаки

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

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

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 регулях http://www.youtube.com/watch?v=WWo9HA5YZoU поведение коптера при смене частоты i2c шины

MultiWii на вертолете

прошивка тестируется, основная ветка обсуждения вертолетной версии тут

http://www.youtube.com/watch?v=qfaKYuFnwLY тестирование прошивки на вертолете с платой Crius

MultiWii допиливание кода

Удержание высоты

основная ветка обсуждения http://www.youtube.com/watch?v=O8elQs1MZzQ видео работы тестового алгоритма =)

а вот и еще видео работы http://www.youtube.com/watch?v=-0X74oV8T0Q удержание высоты с сонаром (на малой высоте)

I2C GPS NAV

основная ветка обсуждения код Примерный вид самодельной платки с GPS и атмегой

http://www.youtube.com/watch?v=45pUfcLB3SA удержание позиции

http://www.youtube.com/watch?v=_hNgIQN_k2c возврат на точку старта

Полезные ссылки

всякое разное для MultiWii, в том числе эксперементальные сборки и конфигураторы без opengl и под разные архитектуры, у кого не запускаются или глючат стандартные сборки

1 комментарий:

  1. Очень хорошая статья! Спасибо автору!

    ОтветитьУдалить