О полетном контроллере MultiWii (коптеры, самолеты и вертолеты)

    ВНИМАНИЕ, статья устарела, но её всё еще можно использовать в ознакомительных целях
    Захотелось внезапно рассказать подробнее об открытом и свободном проекте для управления различными летательными аппаратами (ЛА). Вообще до недавнего времени он был рассчитан только на мультиротороные системы (коптеры), стабилизацию подвеса камеры и в бета версии была стабилизация для летающего крыла, но судя по dev прошивкам в скором времени будут официально добавлены самолеты и вертолеты, а стабилизация полета летающего крыла уже вышла из стадии бета тестирования.

    Небольшая предыстория


    В самом начале развития проекта была большая проблема с датчиками — их просто не было или были, но по невероятно высоким ценам, поэтому первым датчиком для этого полетного контроллера стал Wii Motion Plus (WMP) от приставки Nintendo Wii, а от сюда в общем то и пошла приставка Wii в названии. Но время шло, датчики дешевели и сейчас мало кто использует контроллеры от приставки для создания своего MultiWii контроллера.

    Составные части


    Основным мозгом контроллера является AVR процессор, а если точнее — простая платка Arduino, к которой через I2C порт цепляются различные датчики. На данный момент, чтобы полететь вам понадобится любая Arduino совместимая плата и гироскоп, например ITG3205 выпиленный (это не сленг, а я прямом смысле слова выпиленный) из китайского клона контроллера WMP, но в такой конфигурации коптером будет довольно сложно управлять, так как выравнивать его параллельно земле (а значит и устранять дрейф) придется руками. И тут на помощь приходит акселерометр, которой всегда знает где «низ», т.е. земля, и поможет держать летательный аппарат параллельно земле. Таким образом для спокойного и стабильного полета нужны Arduino и два трехосевых датчика: гироскоп и акселерометр.



    Дополнительно можно добавить такие датчики как магнитометр, барометр и GPS приемник.
    Магнитометр (он же компас) знает как повернут ЛА относительно направления магнитного поля земли и может помочь при удержании курса, GPS навигации или в режиме carefree для новичков, когда, вне зависимости от направления реального носа аппарата, коптер будет лететь от пилота на команду «вперед» и к пилоту на команду «назад». На магнитометр очень негативно влияют магнитные поля от источников питания, проводов, моторов и всего что может давать электромагнитные волны, поэтому при проектировании рамы ЛА стоит располагать этот датчик как можно дальше от всего металлического и намагниченного.
    Барометр (он же датчик атмосферного давления) может пригодиться для удержания высоты, но стоит учесть, что удержания высоты напрямую зависит от точности датчика, например BMP085 (установленный во многих полетных контроллерах) даст точность не более +-1 метра, т.е. при самых хороших условиях ваш ЛА будет плавать по высоте в пределах 1 метра или больше. Более современный датчик MS5611 может давать точность до 10см. На барометр может влиять любое изменения давления вокруг, ветер или потоки воздуха от пропеллеров, поэтому рекомендуется ставить этот датчик «под колпак» или приклеивать к нему кусочек поролона (как на микрофонах), но при этом очень важно не закрыть отверстие в датчике (например налив туда клея).
    GPS приемник, полезная и одновременно бесполезная вещь. С одной стороны помогает включать такие хорошие штуки как удержание позиции и возврат на точку старта (возврат домой), а с другой эта самая точка очень приблизительная и зависит от точности приемника, количества видимых спутников или погодных условий, поэтому зависнуть около окна женской раздевалки может получиться в круге диаметром около 3-10 метров (а при добавлении хорошего барометра в сплюснутом шаре).
    На момент написания статьи есть попытки добавить сонар (ультразвуковой дальномер) и оптический сенсор перемещения (какие устанавливаются в мышках). Сонар позволит добиться очень точного удержания высоты (около 1см) на малой высоте (примерно до 3 метров), но очень сильно зависит от поверхности, например высокая трава или бугры будут давать помехи и резкую смену высоты, т.е. коптер будет подпрыгивать или резко снижаться. А вот оптический сенсор может помочь GPS приемнику для более точного удержания позиции.
    Проект может похвастаться большим количеством поддерживаемых датчиков различного назначения и с каждым релизом их число возрастает, а учитывая открытость проекта можно приделать и свои датчики.
    Вот их список, официально поддерживаемых в прошивке MultiWii 2.0 (а в скобочках в последней develop прошивке):
    Гироскопы Акселерометры Барометры Магнитометры
    WMP
    ITG3200
    L3G4200D
    (MPU6050)
    MMA745
    ADXL345
    BMA020
    BMA180
    NUNCHACK
    LIS3LV02
    LSM303DLx_ACC
    BMP085
    MS561101BA
    HMC5843
    HMC5883
    AK8975
    MAG3110


    Готовые платы контроллера


    Как я уже писал выше — можно сделать свой контроллер из набора доступных датчиков и Arduino, но проще (а часто еще и выгоднее) купить готовую платку, на которой уже есть AVR чип и набор необходимых датчиков.
    Самая популярная плата — Crius MultiWii, выпускается в двух вариантах Lite и Standart Edition, а так же недавно появилась новая версия, отличающаяся только наличием удобного I2C входа и более мелким размером.
    Crius MultiWii Lite Edition имеет на борту только 2 датчика: гироскоп и акселерометр. Standart Edition, кроме имеющихся в Lite датчиках, может похвастаться барометром BMP085 и компасом. Новая версия платы имеет I2C разъем для подключения GPS модуля, который представляет из себя UART GPS приемник и AVR чип (Arduino), который выступает посредником между GPS и MultiWii контроллером (а в обозримом будущем полностью возьмет на себя GPS функционал, для разгрузки основного мозга).
    В некоторых интернет-магазинах можно найти другие аналогичные контроллеры, поэтому если вы встретили нечто с 2мя или 4мя датчиками и 328p чипом (или 1280/2560), то с 99% вероятностью — это MultiWii контроллер.

    Описание выводов для Crius и нюансы подключения

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

    На картинке выделены разъемы для подключения вышеописанных устройств. Как видите каждый разъем объединяет 3 контакта: S — сигнал, + — питание (+5в) и G — земля. Так же у разъемов есть надписи вида Aцифра и Dцифра — к ним подключаются регуляторы скорости, сервоприводы и иногда дополнительные каналы приемника радио управления (соответствуют выводам на Arduino). Входы отмеченные как THR, ROLL, PITCH, YAW, MODE предназначены для подключения соответствующих выводов приемника.
    От каждого регулятора скорости (ESC) идет 3 провода, один из которых +5v (красный или оранжевый по середине), но подавать питание на плату Crius нужно только с одного из ESC, а от других можно (и даже нужно) запитать оставшихся потребителей: приемник и сервы подвеса. Для этого потребуется вытащить из разъема центральный провод у всех (кроме одного, который и будет питать плату) регуляторов скорости и подключить их к потребителям или изолировать.
    Для подключения к другим потребителям можно отломить 2 контакта от гребенки и запаять их вместе:


    А затем соединить провод питания от регулятора скорости с проводом питания потребителя и затянуть их в термоусадку:


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


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

    Нюансы настройки MultiWii


    В первую очередь стоит обновить прошивку полученного контроллера, для этого достаточно скачать с официального репозитория MultiWii прошивку (пожалуйста, не качайте DEV версии, если вы не знаете что это и для чего), загрузить её в Arduino IDE, настроить параметры своего летального аппарата и выбрать набор датчиков в файле config.h, после чего загрузить полученный скетч в контроллер, выбрав в настройках одну из плат с чипом 328p (но только не arduinо UNO).
    С версии MultiWii 2.0 в списке наборов датчиков появились Crius контроллеры:
    //#define CRIUS_LITE // Crius MultiWii Lite
    //#define CRIUS_SE // Crius MultiWii SE
    Расскоментируйте один из них, соответствующий вашему типу контроллера.
    Есть несколько, очень часто возникающих проблем у новичков (актуально для версии 2.0):
    • Для гексокоптера не работает приемник — в config.h требует раскоментировать строку #define A0_A1_PIN_HEX, а для задействования дополнительного канала РУ можно раскоментировать одну из строк #define RCAUXPIN8 или #define RCAUXPIN12 и подключить канал приемника к D8 или D12
    • Не все моторы работают или работают не синхронного — нужно откалибровать регуляторы скорости, для этого нужно соединить все сигнальные и все общие (земля) контакты и подключить их к каналу Throttle (CH3) приемника, а так же подключить один из проводов питания, после чего откалибровать регулятор скорости согласно инструкции к нему, но обычно требуется установить ручку газа в максимальное положение, подать питание на регуляторы скорости (надеюсь винты не забыли снять? а то будет очень больно), после чего опустить ручку газа в нижнее (минимальное) положение
    • Моторы вращаются не в ту сторону — нужно поменять любые 2 контакта, идущие от регулятора скорости к мотору
    • Моторы не активируются — проверить настройки РУ, для этого в MultiWii конфигураторе проверить что крайним положениям ручки соответствуют значения 1000 и 2000, а центральному положению — 1500, если это не так — исправьте, после чего заново перекалибруйте регуляторы скорости


    Графический конфигуратор


    Графический конфигуратор написан на processing и является кросплатформенным Java приложением, на данный момент скомпилирован для Linux, Windows и MacOS операционных систем 32 и 64 битных архитектур.


    Внешний вид немного пугает, но часто сюда лазить не приходится. Запустите конфигуратор после вставки полетного контроллера в компьютер. В левом верхнем углу выберите порт контроллера и нажмите кнопку START — должны побежать кривые на графике и цифры рядом с ним (в идеале всё должно быть ровно).


    Справа от графика расположена объемная модель вашего коптера, а так же указатели компаса и наклона аппарата. Если аппарат расположен параллельно горизонту, а на картинке PITCH и ROLL наклонены — нажмите кнопку CALIB_ACC, чтобы контроллер запомнил это положение и всегда стремился к нему.


    Сверху над графиком расположены настройки PID регулятора, активации режимов и некоторые статусные данные. Чтобы увидеть значения нужно нажать кнопку READ, для их изменения нажать на окошко с цифрой и подвигать мышкой, а чтобы сохранить — нажать WRITE. Никогда не меняйте за 1 раз несколько значений PID реглятора — иначе не поймете от чего стало лучше или хуже. А что и как крутить можно прочитать тут.

    Более детальное описание можно узнать на официальном сайте проекта MultiWii или на моем сайте airm.ru, где стараюсь держать ту же информацию на русском языке, а так же многие дополнения и новости о проекте.

    Что, где, почем?


    Все описанные контроллеры можно легко найти на ebay, aliexpress, goodluckbuy или rctimer
    Цена может варьироваться от 25 до 100 долларов, в зависимости от магазина и наглости.

    Полет с GPS


    Более года назад я пообещал полет по GPS, по маршруту и прочие плюшки навигации. Пока на MultiWii контроллере удалось испытать удержание позиции.

    В целом неплохо, коптер плавал в круге радиусом около 7 метров (ничего не настраивал предварительно), но потом внезапно рванул куда-то в даль от меня и тесты были отложены.
    Но зато начал понемногу осваивать фото и видео съемку с воздуха.

    Получается так себе, но еще 2/3 лета впереди и куча планов, в том числе отдельный пульт для оператора.


    Задавайте вопросы, если таковые имеются, постараюсь ответить и дополнить эту статью.
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 46

      0
      Спасибо за статью, я сейчас как раз интересуюсь темой — неделю назад собрал себе quad-x на контроллере HK Multicopter V3. Нe очень просто одновременно настраивать свой первый коптер и учиться на нем жe летать — до этого опыта с авиамоделизмом у меня нe было… но летает. Наверное в будущем прикуплю себе платку Multiwii — множество сенсоров очень интересно, на контроллере HK распаяны толькo гироскопы и нет возможности расширения.
        0
        Почему все до сих пор берут эту устаревшую платку кука? Я понимаю что дешево, но мучиться с ручным выравниванием в горизонт ради экономии 300-400 рублей — это какой то изврат.
          0
          Просто заказывал почти все сразу в Hobbyking, взял и их плату. Но в общем я согласен, что автогоризонт и дополнительные возможности — это круто, поэтому через какое-то время буду заказывать Crius MultiWii.
        0
        Что используете для фотосьемки?
        Отдельный пульт — для фотографа?
        По поводу аэросъемок — те проф. решения, что я видел (в москве есть несколько «контор», занимающихся этим), фотографируют как я понял на автомате. Т.е. включают фотоаппарат, ставят постоянную сьемку и запускают коптер.
        Возникла мысль, если многие фотоаппараты имеют ИК, почему бы с того же ардуино посредством подключенного к ней ИК не управлять сьемкой фотоаппарата?
        Проблему фокусировки, конечно, трудно решить.
        Может я чего-то не знаю, есть какие то решения — расскажите.
          0
          Я профессионально этим заниматься не собираюсь — или слишком большие вложения или слишком не качественный результат, особенно для видео съемки.
          Большинство фотоаппаратов (не на мыльницы же снимают) имеют вход для управления (в крайнем случае пальцы фотографа легко заменяются моторчиками и серваки), а так же видео выход для live view. Т.е. достаточно оператору дать отдельный пульт для управления подвесом камеры и самой камерой, а так же монитор с выводом картинки с фотоаппарата. С видео съемкой еще проще — там 1 раз нажал и оно снимает. Самый просто и распространенный вариант — это Sony NEX5 (дешево) и Panasonic GH2 (качественная картинка, особенно с кастомной прошивкой).
          При схемки с воздуха фокусировка почти всегда в бесконечность.
            0
            серваки=сервами, которые нажимают кнопки или крутят кольца объектива.
            Пока что заказал себе Sony TX55 (легкая камера и FullHD 60i), для проб, потом налеплю Panasonic G3, если буду уверен что не разобью.
            0
            Пошарь в сторону CHDK — пашет для Кэнонов, правда, но на безрыбье…
            0
            Спасибо за статью.

            Чем стабилизировалось второе видео?
              0
              VirtualDub с плагином DeShaker.
                0
                А в ютубе хуже или уже отключили?
                  0
                  Ютубный стаб ужасен — страшный образом искажает видео, поэтому не использую его.
              0
              Извиняюсь за наивный вопрос (сам я никогда коптерами не занимался), но в чем основная проблема удержания аппарата на месте? Неточные показания датчиков или погрешности/медлительность при управлении двигателями?
                0
                Ветер, не точность датчиков, кривая рама и пропеллеры, не идеальные моторы, вибрация, неверно откалиброванные регуляторы скорости, не точность расчетов внутри самого контроллера, т.е. очень много факторов, но в реальности это незначительный дрейф, а в безветренную погоду можно даже на дешевых датчиках зависнуть в точке на некоторое время.
                  0
                  Проблема ровно одна: нет возможности получить свои точные координаты.
                  0
                  вот какой вопрос. уже неделю борюсь по вечерам с мультивием, коптер взлетает максимум сантиметров на 10-50 и висит так даже на полном газу. Батарея почти полная, регуляторы калибровл напрямую от передатчика. При этом на куке коптер резво рвался вверх с приличным ускорением, тоестт запас тяги тоже очень приличный. Не подскажите куда смотреть? Плата crius se full
                    0
                    А в GUI как себя газ ведет? И как ведут сигналы на моторы?
                      0
                      Да в целом как-то странно. Кстати при взлете коптер ощутимо заваливается на бок. Вот скрин гуя. Коптер на полном газу стоит без пропеллеров на полу.

                      http://habrastorage.org/storage2/cdf/16c/d5b/cdf16cd5b8e2fe3a1b4cf64827d740e9.png
                        0
                        Заваливается при взлете у многих, а у вас еще и ROLL не в центре. Судя по гую должен нормально был взлетать, попробуйте на аппе увеличить расходы (если это возможно) и откалироваботь регули заново, а еще лучше перепрошить их кастомной прошивкой, я свои HK blueseries перешил — летать стал в разы лучше.
                          0
                          увеличил MAXTHROTTLE до максимального который выдает гуй по каналу Throlete. Думаю дело в этом.
                            0
                            Лучше выше 2000 и ниже 1000 не ставить подобные значения.
                    –4
                    Без котов уже не интересно.
                      –2
                      реквестирую ликбез по изготовлению чучел
                      0
                      Гироскоп — для определения низа. Акселерометр — для определения ускорений!
                      Аксель нужен для стабилизации полёта не потому, что «знает где низ», а потому, что им можно оперативно определять «рывки» аппарата из-за ветра и т.п. и вводить корректировку!
                        0
                        Эх… если бы было всё так как вы описываете, почитайте про MEMS датчики и про то, что они измеряют на самом деле.
                          0
                          Лично возился ещё до Мультивия с ВииМотом: там именно акселерометр стоит.
                          И фигня в том, что определить направление «на землю» им можно только в состоянии ПОЛНОГО покоя, т.к. любая шевелюшка даёт ускорение по одной из осей!
                          Причём если в состоянии покоя этот вектор смотрит «в пол» с модулем в 9.8 (реально Виевский контроллер выдаёт то-ли 1, то-ли 2 — не помню точно), то при движении начинаются «фокусы»:
                          Скажем ты РЕЗКО дёргаешь контроллер вверх — значение доходит до пары g.
                          А теперь — резко ВНИЗ: значение чудесным образом падает до нуля…
                          И т.д. и т.п.

                          Когда разрабатывали ВииМот — поставили акселерометр и думали, что типа круто, взял как меч и перс на экране тебя копирует!
                          Щаззз! В лучшем случае — определяет момент резкого удара или наклоны, если это какой-нить МариоКарт!
                          WMP, собственно, добавлением гироскопа добавил именно определение относительного положения пульта! Фиговое, но…

                          Летать без акселерометра — можно.
                          А вот без гироскопа — это полный Пэ!
                          Матёрые моделисты считают аксель «понтами», которые в лучшем случае для стабилизации камеры и нужны-то…
                            0
                            И?
                            Не совсем понял что этим сообщением вы хотели сказать. Я нигде и не писал что можно летать на одном акселе без гиры и даже написал что можно летать только с одной гирой. Матерые моделисты обычно маньяки, зачем летать и мучиться, постоянно корректируя ЛА, если можно просто летать?
                              0
                              То, что вы называете гироскопом, на самом деле ДУС — датчик угловых ускорений. То есть получить с него абсолютную цифру никак нельзя. Меньше, чем через минуту, обычный MEMS гироскоп на работающем коптере будет показывать низ в любом направлении, кроме истинного. И с лазерных или волоконно-оптических гироскопов тоже нельзя считать угол. Поэтому ставят акселерометры.

                              Проблему с показаниями акселерометра при эволюциях решили пол столетия назад — с помощью фильтра Калмана.
                            0
                            Гироскоп (MEMS, который на кристалле) никогда не скажет где «низ», он отдает угловую скорость, которую можно преобразовать в угол, который во-первых надо откуда то отсчитывать, а во-вторых датчик очень шумный и если начальное состояние взять на «параллельно земли», то через некоторое время угол будет сильно уплывать, в то время как акселерометр «чувствует гравитацию» (и поэтому знает где «низ») и помогает скорректировать постоянно уплывающих угол гироскопа.
                            Для механического гироскопа это конечно не актуально (или актуально, но в меньшей степени).
                            Акселерометр при всем при этом неверотяно шумный — уже пытались его использовать для корректировки по ускорению X и Y и даже удержание высоты по Z, но вроде бы так ничего не вышло толкового и хорошо работающего.
                              0
                              Ну и в дополнении — если ветер будет примерно с одинаковой скоростью дуть, то на датчике будут всегда нули, т.к. ускорения по сути нет или оно очень маленькое, а многомоторную мясорубку в этот момент может нести с довольно большой скоростью куда нибудь на человека.
                              0
                              А какой от этого прок для вертолетов с одним несущим винтом? Тут гироскопом и регулировкой оборотов не обойтись — надо автоматом перекоса и рулевым винтом управлять.
                                0
                                Такой же как для самолетов, т.к. подключать можно не только регуляторы скорости с мотором, но и сервы, которые будут рулить нужными частями вертолета. Пример работы стабилизации на вертолете и на летающем крыле.
                                0
                                Хотелось бы добавить
                                Для гексокоптера не работает приемник — в config.h требует раскоментировать строку #define A0_A1_PIN_HEX, а для задействования дополнительного канала РУ можно раскоментировать одну из строк #define RCAUXPIN8 или #define RCAUXPIN12 и подключить канал приемника к D8 или D12

                                Приемник не неработает, а двигаются только два каналса, yaw и pitch допустим — не двигаются. тогда после раскомментирования строки #define A0_A1_PIN_HEX нужно 5 и 6 двигатель подключать уже на контакты A0 и A1

                                Еще момент — на той плате что на фото в топике так же можно распаять самостоятельно порт i2c — и подключить GPS туда. либо же GPS так же можно подключить в порт UART, но там свои тонкости.

                                Еще к плате можно подключить Bluetooth модуль для управления настройками с Android — что весьма удобно, нежели брать с собой ноут и цепляться кабелем. сам еще не пробовал — идет модуль еще.
                                  0
                                  сначала ответил и толкьо потом посмотрел кто топик писал =)
                                    0
                                    =) а еще про гексу я написал в статье
                                      0
                                      я цитировал — не видно просто. ты не указал что моторы надо в другое место втыкать =)
                                        0
                                        Я оставил ссылку на airm.ru
                                        Если описывать все нюансы и возможности, то тут выйдет цикл статей, которые еще и устареют быстро. Целью было заинтересовать контроллером, тем более что новый криус всего 25$ стоит и есть готовые удобные модули для подключения GPS.
                                        А сам я хочу на ARM переходить, на гудлаке заказал платку, посмотрю что за зверь, но чую мозговыноса будет больше чем полетов, AVR уже обсосан со всех сторон.
                                          0
                                          Ты имеешь ввиду KK контроллеры? кинь ссылку
                                  0
                                  Можно ли управлять с ноутбука? Bluetooth, wi-fi, 3g?
                                    0
                                    Через то угодно, добавив соответствующие модули и код, но вроде бы через bluetooth можно с андроида.
                                    0
                                    На одном из китайских магазинов появилась сегодня плата:
                                      0
                                      Парсер чего то скушал.
                                        0
                                        извините, сорвалось)
                                        www.goodluckbuy.com/gy80-bmp085-nine-axis-imu-magnetic-acceleration-gyro-atmospheric-module-.html
                                        Price: $34.59 SKU: 84324
                                        «GY80 BMP085 Nine-axis IMU Magnetic Acceleration Gyro Atmospheric Module»
                                        — Nine-axis module (Three-axis gyroscope + triaxial accelerometer + 3-axis magnetic field + pressure)
                                        — Immersion Gold PCB process
                                        — The use of chip: L3G4200D + the ADXL345 + HMC5883L + BMP085
                                        — Power supply :3-5v

                                        Что скажете про такой комплект и не является ли это тем самым оптимальным вариантом который купил и поставил махом все датчики? Если так, то может в пост добавить даже. Я бы с удовольствием ставил 1 платку чем кучу разрозненных датчиков.
                                      0
                                      Летать среди ЛЭП — это нормально?
                                        0
                                        Это крайне не безопасно, а еще рядом были дети и порывистый ветер =) Но повезло, хотя промехи от ЛЭП или экранирование, пару раз FAILSAFE включался.

                                      Only users with full accounts can post comments. Log in, please.