mahowik
Запускаем inav 4.1.0 на STM32F4DISCOVERY + GY-86 (MPU6050/HMC5883/MS5611) + PPM

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

На базе таргета MATEKF405 собрал прошивку для STM32F4DISCOVERY + GY-86. UARTs происал на свободные пины, поддержку PPM SUM приемника вернул (которую зачем то убрали пару релизов назад), LEDs прописал для STM32F4DISCOVERY. На столе проверил IMU, GPS, frsky телеметрию, PWM outputs

  • to build hex use MATEKF405 target (in command line: ./build.sh MATEKF405)
  • you can also find pre-builded hex file at “build/” folder: inav_4.1.0_STM32F4Discovery_GY-86_PPM_by_MATEKF405_target.hex
  • if there is an issue with MPU6050 i2c init on 400KHz please make full erase -> upload inav_4.1.0_STM32F4Discovery-upload_if_mpu6050_i2c_400KHz_issue.hex first -> change i2c speed to 800 KHz at INAV Configurator -> upload inav_4.1.0_STM32F4Discovery_GY-86_PPM_by_MATEKF405_target.hex again
  • see src/main/target/MATEKF405/target.h for pinout or type “resource” command at inav CLI

github.com/mahowik/inav/tree/release_4.1.0

MahoWii 2.4

Всем привет!

Выкладываю проект в открытый доступ github.com/mahowik/mahowii

Работа проведена большая. Налетаны десятки часов. Спасибо всем и отдельно Артему за помощь в тестировании!

Продолжимс! BalancingWii 1.0 - Segway на базе MultiWii

Под осень дошли руки наконец доделать игрушку 😃

Выложил новую версию на гит github.com/mahowik/BalancingWii

BalancingWii - Segway на базе MultiWii

В продолжение темы о балансирующих роботах собрал себе новую игрушку на базе MultiWii 2.3. Конечный пид-регуль и дривер моторов пришлось поменять конечноЖ…

Пока на соплях на макетке, но оч. даже ездитЬ 😃

Выложил порт Baseflight под STM32F4DISCOVERY + GY-86 (mpu6050 + hmc5883 + ms5611)

Так как проект уже почти забросил и что бы не пропали наработки, выложил на github в исходниках с проектом под CooCox CoIDE. Может кто подхватит. Удобно к примеру алгоритмы отрабатывать на мощном stm32F4 проце…

Это порт стабильного BaseFlight-20131126 релиза, который с фишками MultiWii 2.3. По крайней мере так писал товарисЧ Таймкоп
code.google.com/p/afrodevices/downloads/detail?nam…

Подробности тут github.com/mahowik/MahoRotorF4-Discovery

Самобалансирующий робот из подвеса на бесколлекторниках на коленке :)

Да простят меня мечтатели данного подвеса, из чего собственно и был сделан самобалансирующий робот за один присест в воскресный вечер 😃
Давно хотелось попробовать, но планировал делать его на шаговых движках и уже было решил их заказать, как вспомнил что лежит мертвым грузом не опробованный по сути подвес + стало интересно, а получится ли “плавная” установка, в отличии от шаговиков…
Слегка модифицировал brushless-gimbal прошивку, что бы roll ось рулила обоими движками, но оставил раздельную настройку реверсов, силы и т.д. Далее чутка покумекав, что к чему прикрутить, связал пару болтиков, а на моторы надел мотки изоленты в качестве увеличения диаметра колес… Подергал пиды и опля, стоит как вкопанный! На полу правда разгоняется быстро и начинает падать 😃 Мощи двигов, явно маловато…

BradWii - очередной multiwii fork или новая жизнь AVR контроллеров :)

темка тут rcopen.com/forum/f123/topic343484

MahoWii RC3

На данный момент крайняя версия Mahowii 2.4

========================================================================

Добрался вот до описания… За последний месяц было добавлено пару полезных вещей, а также сделано множество тестов. Обзавелся неплохой лого-смотрелкой (3DR modem + EZ-GUI + LiveGraph.2.0.beta01). Многие моменты стало проще понять. К примеру как ведет себя баро при вхождении в воздушную подушку. Все как на ладони теперь 😃

MahoWii RC2

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

  1. Потратил много времени на получение мгновенной высоты по акселю. Сейчас модно называть это “предсказанием высоты”, где по сути по акселю выполняется очень быстрое и относительно точное измерение высоты при быстрых перемещениях, а инертный баро корректирует ошибку двойного интегрирования. Пипец, чеб удержать двойной интеграл, пришлось ввести динамические коэффициенты в комплиментарный фильтр…
  • качество удержания высоты (альт холд - АХ) субъективно выросло в 1.5-2 раза
  • дает более точную регулировку высоты, как на мелких корректировках (10-ки сантиметров), так и при изменении в несколько метров. Т.е. мгновенное определение высоты и активация висения в момент, где стик принял центр после резких подъемов/спусков. В RC1 есть лаги/задержка, т.к. высота берется по баро, где сам баро-сенсор довольно инертный…
  • меньше проблем с воздушной подушкой на взлете/посадке, а также с висением в помещении где полно вихревых и отраженных потоков воздуха, т.к. баро только для корректировки акселя.
MahoWii RC1 ;)

Фишки RC1:

  1. Дабы не путаться с основным проектом, моя ветка по прошивкам будет MahoWii, а не MultiWii 😃

  2. Новый алгоритм регулировки высоты, для режима удержания высоты (альтхолд - АХ).
    Поведение управления высотой пытался скопировать с “наза”, по мотивам комментов в rcopen.com/blogs/83206/15583

По настройке: Единственное что надо сделать, это настроить значение MID для expo throttle в ГУИ. Это середина экспоненты газа, которая задает газ висения. Если расходы на аппе на газ примерно 1000…2000, то к примеру MID=0.40 в ГУИ - это 40% газа что соот-т 1400, где по умолчанию MID=0.50 и это 1500… В принципе этот шаг не обязателен, т.к. алгоритм должен учесть и скомпенсирвать этот момент (уже в полете) при первом переходе из висения к регулировке высоты. Но все же желательно для более “плавной” работы алгоритма, пока он не внес корректировку на газ висения…

Работает так:
а) центр стика газа - это АХ с деадбендом 50 (ALT_HOLD_THROTTLE_NEUTRAL_ZONE в конфиге)
б) вверх/вниз (за деадбенд) стиком задается вертикальная скорость в диапазоне примерно +/-4…5м/с

VARIO (velocity) controlled altitude ascend/descend for Alt-Hold mode (function).

Звучит страшно наверное, но в общем то получилась довольно крутая штука! Это то, как на самом деле должна работать регулировка высоты, для режима удержания высоты.
По простому: отклонение стика задает вертикальную скорость подъема/снижения (отдельный ПД контроллер). И именно скорость, а не высоту. Это позволяет не зависеть от платформы, т.е. веса коптера, открывает путь к управляемым авто-режимам и конечно же к “правильной” автопосадке, где даже сонар уже не нужен, т.к. режим на 99% держится на акселерометре и лишь 1% - это барометр (для коррекции ошибок акселя), соот-но эффект “воздучной подушки”, чего так боялся барометр (и начинал врать на низких высотах), уже почти не ощутим. По слухам, именно по такому принципу работают крутые контроллеры, типа немцы и наза 😉
Есть нюансы пока, типа что считать центром, 50% газа или точку активации режима удержания высоты, но для начала у меня получилось отлично думаю! То что алгоритм работает правильно, говорят ПИДы подобранные с первого тычка и то в GUI 😃

Сам не облетал, т.к. до сих пор не добрался до ремонта, но народ на оф. форуме уже и видео заснял 😉

MultiWii_2_1_b3: багфиксы...

Собственно таже b2 но пофикшено несколько багов…

Ну и демонстрация возврата домой с автонабором заданной высоты (=10м сейчас прописано в конфиге) и автоснижением по прилету на точку “дом” (=3м в конфиге)…

MultiWii_2_1_b2: продолжимс :)

Фишки:

  1. контролируемое снижение/набор высоты на новом althold’е.
    Медленно увеличивает/уменьшает высоту заданную при активации аlthold-а, пропорционально отклонению стика газа от точки, в которой althold был включен. (+100 единиц газа (учтывая настройки экспоненты) дает примерно +50см в секунду. при цикле 3-4 мс… в ГУИ 3000-4000)
    позаимствовал у alexmos 😃

2)предустановленное начальное значение газа для altholda будет вычислено из средней точки (MID) экспоненты газа, заданной в GUI. (т.е. значение газа не берется в момент активации холда, а высчитывается).
примечание: есть компенсация на просадку аккумулятора, т.е. к высчитанному значению газа по MID, будет добавлено значение из дефайна ниже
//#define INITIAL_THROTTLE_HOLD_FROM_MID_EXPO_POINT 40

MultiWii_2_1_b1: ПА-ЛИ-ТЕ-ЛИ!!! :)

Решил наконеЦ выложить прошивку.
По умолчанию выбраны: QUADX и CRIUS_AIO_PRO_V1

Изменения в сравнении со стоковой 2.1:

  1. новый Alt Hold! Детали тут.

  2. Новая фишка удержание заданной высоты при возврате домой (RTH). Наконец заработала адекватно… с адекватным алт холдом 😃 Раньше при наборе высоты с 2-х до установленных 10-ти метров, просто пролетал на 7-10 метров выше и потом уже в течении 20-30 сек возвращался на заданные 10 метров… а иногда выше на воздушных потоках вообще не хотел снижаться…
    Чтобы включить ищите дефайн в конфиге:

// set altitude to RTH. If Alt-hold activated during the RTH it will keep specified altitude.
#define ALT_TO_RTH 700 // in cm... = 7m

Активируется включением альт холда при RTH, либо включением RTH при альт холде, без разницы…

Aльт-холд с использованием акселерометра!

У меня опять зачесались руки и накопив уже небольшой багажик знаний переписал таки алть-холд с использованием акселерометра! 😃
Результат хорош, держит ветер неплохо и компенсирует сильные пинки руками вниз-вверх, также держит высоту при пролетах (на длительных скоростных пролетах могут быть провалы до 2-3м). В среднем скачет +/-20…40см в покое (в соот-ии с точностью барометра) и до метра в пролетах.

Факи по вию.

Т.к. приходится часто писать одно и тоже, попробую начать писать факи на популярные вопросы:

- Коптер крутит по YAW. Что делать?

Что нужно проверить/настроить?

  1. регули откалиброванны на одинаковый диапазон газа!

  2. Аппа по yaw ~1500. Проверять в GUI вия! Находим макс. погрешность. Отводим стик в мин. положение и потом медленно возвращаемего в центр, под действием пружины в аппе, т.е. просто замедляя действие пружины. Запоминаем мин. значение (к примеру 1492). Потом проделываем тоже самое для макс. значения. Далее отводим стик на мин/макс позицию и отпускаем/отстреливаем под действием пружины аппы и также находим мин/макс значения, но они как правило меньше чем с “плавным” возвратом стика… Желательно проделать тоже самое для ролл/питч сразу, чтобы найти оптимальное значение для DEADBAND (мертвая зона стиков для полетного контроллера)…
    Теперь берем макс-е отклонение от центра, добавляем 3-4 единицы и вписываем в DEADBAND в config.h
    например 1500-1492+4 = 12

MultiWii - ПИДы ПИДы ПИДы !!!

читать отсюда + мин 1 страницу вперед!!!

MultiWii_2_0_a0 порт a2 в 2.0 прошивку.

Как и писал тут, пока ничего нового. Улучшения из а2 добавлены в 2.0 прошивку.
Сделал только чутка резче ПИДы и немного изменил настройки НЧ фильтра акселя + поднял вес гиры в КФ.

з.ы. в 2.0 поменяли оси itg3200 гиры, потому проверьте все основательно в ГУИ.

MultiWii_1_9_a2: Обновление.

Всем привет!

Так как тема судя по всему набрала достаточный интерес, попробую продолжить…

MultiWii_1_9_a1: Лечу на стоке :)

Имея уже не малый опыт в MultiWii рискну выложить модифицированную 1.9 прошивку, которая по идее поднимет вашу птЫчку на стоке.