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

mahowik

А пробовал ли кто нить проект BradWii? Я как то упоминал он нем тут
Из фишек (github.com/bradquick/bradwii):

- Extensive use of fixed point math means the code is faster and more accurate. Each value has 32 bit precision and the loop times are frequently under 2 milliseconds. All integration and filtering is time based, which means that constant loop times aren’t critical. The result is stable flight.

  • Level, Acro, and Semi-Acro flight modes.

  • Multi-Wii Config compatible (including bluetooth apps, etc). Works on any (and multiple) serial ports.

  • Simplified settings means there are fewer things (especially PID) that need to be adjusted.

- Auto PID tuning!

  • Position Hold

  • Mag Hold

  • Altitude Hold

  • Return to Home

  • Standard or DSM2 Satellite receivers

  • Throttle Helper - Automatically applies extra throttle when tilted in attempt to maintain attitude.

- Uncrashability Mode - Takes over when you get below critical attitude or get too far away. Practice those Acro maneuvers without being able to dumb-thumb it!

  • The project doesn’t rely on any Arduino libraries which means that it can be easily developed on other development systems. BradWii was originally developed on a Mac using Xcode. The Xcode project can be cloned from the links below. You will also need to clone the libraries. My avr tools are in a unique location, so some tweaking will be involved in getting the xcode version working (experienced programmers only).

Я еще не во всем разобрался и сходу из интересностей:

  • авто пид тюнинг
  • “неубиваемый” режим (Uncrashability Mode)
  • чувак просто монстр реализовал свою fixedpointnum математику на asm-е. т.е. это упрощенный “скоростной” вариант математики с дробной частью. Благодаря этому точность расчетов практически как c числами с плавающей точкой, НО основной цикл примерно 2мс всего, т.е. 500гц!

// a fixedpointnum is a real number that's stored in a long that's shifted left FIXEDPOINTSHIFT bits
// FIXEDPOINTSHIFT is currently 16, so 16 bits are used for the integer part of the number and
// the other 16 bits are used for the fractional part of the number.  I've tried using different
// values, but the compliler likes shifting things by 16 bits (words at a time) so things run
// faster with a FIXEDPOINTSHIFT of 16.

// Therefore, the range of a fixedpointnum is -32768.0 to 32786.0 with an accuracy of 0.000015
// There is no overflow or underflow protection, so it's up to the programmer to watch out.
  • прошива, даже с гпс частью, по идее влезет в 328-ю мегу.

Летает так:

Обсуждение на RCGroups:
www.rcgroups.com/forums/showthread.php?t=1922403
www.rcgroups.com/forums/showthread.php?t=1922423

п.с. Я даже умудрился залить его в свой AIOP на скорую руку и совсем чутка подлетнуть в комнате. Из наблюдений:

  • пиды по умолчанию маловаты (для квадры в районе 1кг), потому либо накрутить, либо изучить и опробовать авто тюнинг…
  • основной цикл и вправду 2мс, т.е. 500гц!
  • не смотря на то что проект совместим с вишным протоколоми и соот-но конфигурится вийным GUI, внутри там вийного ничего нет практически, т.е. окончание wii в название проекта можно было и не писать 😃

В атаче последние на данный момент сорсы master ветки из github с настроенным конфигом на AIOP + приемник CPPM + GPS: NMEA, SERIAL_PORT 2, 115200

Пользовать все на свой стах и риск конечноЖ! 😃

bradwii.zip

RTemka

А какие наборы датчиков поддерживает ?
Есть шансы на вторую жизнь старых мультивишек ?

omegapraim

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

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

mahowik
RTemka:

А какие наборы датчиков поддерживает ?
Есть шансы на вторую жизнь старых мультивишек ?

вторая жизнь - это не про мультивии проект… он всегда поддерживал и поддерживает весь набор датчиков начиная от wii motion plus + nunchak, заканчивая модерновыми mpu6050 и ms5611…
У bradwii немного скромнее набор, но вполне достаточно:
гиры: ITG3200, mpu6050
аксели: BMA180, MPU6050
маг: HMC5843, HMC5883, MAG3110

omegapraim:

если чувак мастер ASMa это круто, интересно опробовать именно авто пид тюнинг

на асме только функция умножения его “псевдо” float типа, но вся математика проекта этот тип и использует… как мин проект будет интересен акро-летунам, т.к. 500гц цикл это вам почти stm32 😉

omegapraim
mahowik:

вторая жизнь - это не про мультивии проект… он всегда поддерживал и поддерживает весь набор датчиков начиная от wii motion plus + nunchak, заканчивая модерновыми mpu6050 и ms5611…
У bradwii немного скромнее набор, но вполне достаточно:
гиры: ITG3200, mpu6050
аксели: BMA180, MPU6050
маг: HMC5843, HMC5883, MAG3110

на асме только функция умножения его “псевдо” float типа, но вся математика проекта этот тип и использует… как мин проект будет интересен акро-летунам, т.к. 500гц цикл это вам почти stm32 😉

даешь автотюниг пид в RC 4)))))

mahowik
omegapraim:

даешь автотюниг пид в RC 4)))))

я ушел в спячку зимнюю! 😃 да и зачем? на стоке все летит в 90% 😃

если по делу, то не до того пока… на разработку и тестирование все сводобное время уходило раньше… вот теперь дела разгребаю до пор сих…

vatanuki

клевенько, караз тренеруюсь в акро, учюсь:) тоже папробую в выходные:) спасибо:)

SergDoc
mahowik:

это вам почти stm32

У ARM есть одна особенность, которой также, к сожалению, никто не пользуется - есть возможность ускорения работы раза в 4 по отношению к x86, но надо правильно поставить задачу 😦
и 32 и большая частота ещё далеко ничего не значит, FPU (при наличии) им тоже ещё надо научиться правильно пользоваться (вкл-выкл тут не панацея), а уменьшение цыкла за счёт правильных алгоритмов (естественно к железу на котором они работают) это огромный плюс, я когда-то запускал на 168 меге одноосевой фильтр Калмана и она справлялась впараллель с альфа-бета(ну или комплиментарным) фильтром, так что ничего удивительного - хороший программер респект!!!

soliada
SergDoc:

так что ничего удивительного - хороший программер

Вот вот, а то все датчики да супер процы))) Главное мозги и знание машинного языка))) АСМ есть всё)))

mahowik
omegapraim:

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

ты о чем?! если бы в названии не было упоминания “wii” самим автором и соот-но поддержки вии-протокола для периферии, то мало кто подумал бы откуда ноги растут…
и вот что сам автор пишет: BradWii is open source multi-copter software. The name BradWii comes from the fact that many concepts and some code were borrowed from Multi-Wii. It’s also a play on the original developer’s name, Bradley (Call me Brad). Though based on Multi-Wii, BradWii is pretty much a complete re-write. BradWii is intended to be a platform on which other projects can be built.

omegapraim

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

Sir_Alex

ИМХО, чувак конечно молодец и все такое. Но в век мощных процессоров, глупо пытаться писать на ASMe и пытаться все сделать на FixedPoint. Гораздо проще, быстрее, продуктивнее, тупо поменять проц на более производительный.

Covax

Буран летал и садился в авторежиме на синклере zx)
А нынешнему поколению программистов всё тупо процессор побыстрее подавай)))

Sir_Alex
Covax:

А нынешнему поколению программистов всё тупо процессор побыстрее подавай)))

А что тут такого? У меня то же проги на синклере работали, но никто же не пишет на нем сейчас ))) Потому что это идиотизм писать на нем, когда рядом стоит Intel Core i5 (подставить нужный)

То что делает Bradley - круто, но не оправдано.

Я понимаю, когда делают оптимизацию, если уперлись в производильность процессоров текущих. Например при обработки террабайтных объемов данных. Там и современный процы “ползают”. Вот тут действительно, одну функцию соптимизируешь - сразу результат виден.

mahowik

Ну причин может быть несколько “почему AVR”: большой опыт, любовь к привычному семейству микроконтроллеров, либо любофЬ к оптимайзингу. Всегда были и будут любители старого железа так сказать. Я вот питаю теплые чувства при упоминании словей Z80, ZX спектрум и т.д. 😃

Sir_Alex:

То что делает Bradley - круто, но не оправдано.

Это вопрос цели. Т.е. для фана или “с перспективой”. У чувака уверен, что первое 😃

Sir_Alex:

Вот тут действительно, одну функцию соптимизируешь - сразу результат виден.

Так в том и дело. Как писал выше, он просто ввел свой fixedpointnum тип и написал одну фунцию умножения на ASM, на которую и завязал всю математику…

О ток посмотрел и мультивисты туда же 😃
строка 166
code.google.com/p/multiwii/source/…/IMU.cpp
т.е. это уже будет в 2.4 релизе если не уберут… но если не ошибаюсь, то это умножение целых чисел без дробной части… т.е. точность не та…

GrafSher
Sir_Alex:

А что тут такого? У меня то же проги на синклере работали, но никто же не пишет на нем сейчас ))) Потому что это идиотизм писать на нем, когда рядом стоит Intel Core i5 (подставить нужный)

То что делает Bradley - круто, но не оправдано.

очень даже оправданно. Тупое увеличение производительности процов уже подошло к пределу. Закон Мура с каждым разом все труднее и труднее подтверждать. Размеры транзисторов с процессорах уже приблизились к тому пределу, когда начинают сказываться квантовые эффекты. Еще немного и все… упремся. И вот тут придется искать уже другие решения.

Сейчас из-за всяких дот-нетов и горе программистов, которые кроме бэйсика ничего не знают, эти Core i5 99% своей мощности тратят на исполнение неоптимизированного кода. Да вон, в соседней ветке человек написал прогу, которая делает 3 арифметичесикх действия и весить при этом 500кб. Куда это годится?

Так что Брэду - честь и хвала. Значит остались еще настоящие программисты.

RTemka

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

Sir_Alex
GrafSher:

очень даже оправданно. Тупое увеличение производительности процов уже подошло к пределу. Закон Мура с каждым разом все труднее и труднее подтверждать. Размеры транзисторов с процессорах уже приблизились к тому пределу, когда начинают сказываться квантовые эффекты. Еще немного и все… упремся. И вот тут придется искать уже другие решения.

В чем именно, в данном случае, заключается оправданность?

mahowik:

Это вопрос цели. Т.е. для фана или “с перспективой”. У чувака уверен, что первое

Я то же уверен что первое )))

penkerton

Так кто-нибудь из нашего форума уже опробовал эту прошивку? Где отзывы?

vatanuki

я пока только залил в платку, разбираюсь там в режимах, и вообще как пользоваться ими и настраивать
небольшой офтоп по автору брадвия:)
а он малодец, не только леталки пишет:)

This is my other project. Patent Pending

www.youtube.com/watch?v=FpdUV-EAJRA

soliada

Тоже попробовал.Залил в ардуину+плата с датчиками.Вроде все работает(датчики и КОМ порт,но не могу разобраться с распиновкой.
Пробовал по варианту мультиви подключить приемник и моторы,что-то не работает.Пробовал и обычный приемник и с ППМСУМ,раскоментировав соотв дефайн в прошивки.
В прошивке не смог разобраться где есть инфа по распиновке…
Может кто подсказать к какому выводу (вариант ардуина про мини) чего подключается?

mahowik
penkerton:

Так кто-нибудь из нашего форума уже опробовал эту прошивку? Где отзывы?

Shuricus:

Особенно по удержанию высоты.

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

Надо понимать, что проект молодой и не лишен многих детских болезней… к примеру в моей версии прошивки, удержание высоты было написано в один присест, а потом нюансы, детали, тонкости обсасывались еще пол года, а то и больше…

от автора: Developers should find this code a good starting point for various projects. The curious will find it easier to understand what makes their multi-rotors tick.

soliada:

Пробовал по варианту мультиви подключить приемник и моторы,что-то не работает.

должно работать… вы в конфиге тип платы меняли на 328-ю?
например:

CONTROL_BOARD_HK_MULTIWII_328P

а далее в defs.h можно глянуть что висит на этом дефайне…

soliada
soliada:

приемник и моторы,что-то не работает

Сам спросил-сам ответил. С моторами,вернее на какой порт-пин подключать разобрался.Остается открытым вопрос какой мотор какому выводу соответствует? С приемником пока непонятно,то ли он не работает,то ли что-то не так подключаю.