MultiWii

SovGVD
omegapraim:

если резко поднять квадр то цифири по моему меняются.

это ели двигать по оси, то должны меняться, а если на месте стоит или ровномерно двигается, то не должно меняться, а при наклоне начнет меняется по всем осям, там чего то с гравитацией связано (для каждой из осей меняется) (опять же ИМХО, но в даташитах про ±1g пишут на осях, в зависимости от положения датчика)

tda2030

не помню, наверняка здесь уже писали про это, но в тему:
www.starlino.com/imu_guide.html

SovGVD:

опять же ИМХО, но в даташитах про ±1g пишут на осях, в зависимости от положения датчика

ну, все верно. Аксели вроде фиксируют ускорение свободного падения и если он будет, к примеру, просто валяться в плоскости, перпендикулярной одной из осей, на этой оси как раз и должно быть +1g или -1g (если перевернут на 180 градусов). Если же его расположение будет произвольным, то тут на осях будут иные значения, исходя из углов

SovGVD

в общем на самом деле вот тут habrahabr.ru/blogs/augmented_reality/118192/ - очень доходчиво и просто расписано про гиру и аксель
калибровка акселя задает нам отклонения всяких g по осям - чтобы вне зависимости от положения датчика (может криво приляпан), знать начальные значение, при наклонах ускорение по осям будет меняться, а еще будет меняеться это же самое ускорение при движении - т.е. по идее можно определить сдвиги по всем осям

Sir_Alex

По акселю вполне можно сделать стабилизацию высоты. И даже в пирате это есть, но пока в тестировании/отладке. Не забывайте, что когда коптер висит в одной точке, у него ось Z показывает ускорение 9.8 (1g) и если он начнет перемещаться в вертикальной оси, то аксель это дело заметит (в смысле, пока он перемещается, аксель это видит, а нам это и надо).

tda2030
Sir_Alex:

пока он перемещается

точнее будет “пока он движется ускоренно”

SovGVD:

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

ну да, у bma180, к примеру, есть такая опция - выдавать внешнее прерывание при достижении ускорением одного из порогов
коряво написал, но надеюсь, что понятно )

mahowik
omegapraim:

у меня такой вопрос ведь 3х осевые аксели, почему же 3я ось не используется для поддержания высоты?

ну вы блин даете! начиная как мин с1.8 версии Z ось исползуется для алт-холд

void getEstimatedAltitude(){
........................
  // Gravity vector correction and projection to the local Z
  InstAcc = (accADC[YAW] * (1 - acc_1G * InvSqrt(isq(accADC[ROLL]) + isq(accADC[PITCH]) + isq(accADC[YAW])))) * AccScale + (Ki) * AltErrorI;
  • из описания алтернативной прошивки
    - т.к. на диапазоне +/-8g для акселя проблема с вибро решаема, TRUSTED_ACCZ включен по умолчанию для правильной калькуляции в ИМУ и использования асс Z для увеличения точности ALT HOLD.

www.multiwii.com/forum/viewtopic.php?f=7&t=1079

Sir_Alex:

По акселю вполне можно сделать стабилизацию высоты. И даже в пирате это есть, но пока в тестировании/отладке. Не забывайте, что когда коптер висит в одной точке, у него ось Z показывает ускорение 9.8 (1g) и если он начнет перемещаться в вертикальной оси, то аксель это дело заметит (в смысле, пока он перемещается, аксель это видит, а нам это и надо).

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

mahowik
Sir_Alex:

можно сделать стабилизацию высоты.

кстать в пирате для сонара используется отедльный ПИД регулятор?
я пробовал в вие юзать существующий ПИД-регуль и данные с сонара вместо данных баро подсовывать… если высота менее метра вроде работатет-держит, если больше улетает нафиг вверх 😃
такое ощущение что на высоте более метра сонар уже не отдает дистанцию… дома все ок, но это при выключенных движках… надо профайлитъ видимо…
что для сонара критично вообще? шум мтотров? вибрации? а мот низкая темперетура (-10) или снег?

tda2030

насколько знаю, для сонара критична ровная поверхность без посторонних предметов, чтобы ловил только одно отражение.
статейка на тему распространенного сонара:
we.easyelectronics.ru/…/ultrazvukovoy-dalnomer.htm…

насколько помню, бывают двух типов:

  1. излучательн и приемник. Инженегр сам обрабатывает эхо
  2. с контроллером на плате. Выдает готовый результат. Ммм, по-моему меняет ширину импульса как функцию расстояния.
    В одной из статей были недовольны тем, что с МК. Самостоятельно больше простора для интерпретации. И второе - почему-то у чувака получилось, что дальность образца с контроллером оказалась меньше, чем указана на модуль только приемника и передатчика.
    еще немножко справочки: elagin-pavel.livejournal.com/146901.html

сам даташит
www.marsohod.org/index.php/…/77---hc-sr04

и еще одна статья марсоходовцев (известный проект для тех, кто начинает заниматься ПЛИС)
www.marsohod.org/index.php/projects/159-sonar

надеюсь, чем-то помогло

Upd: на рабочем компе еще немножко материалов на эту тему было. Завтра как раз гляну 😃

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

drozd79

Всем привет! Мужики читаю тему, но не нашел пока ответа. Приехала мне плата Arduino Mini Pro. Так же есть USB адаптер вот такой arduino.cc/en/Main/MiniUSB . Подпаял 4 выхода USB адаптера (TX,RX, GND, VCC) к 4-м соответствующим входам ардуино, пытаюсь залить программу, выскакивает ошибка:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

На ардуинке горит зеленый и моргает красный постоянно. Вопрос, как узнать есть загрузчик в моей ардуинке?
Правильно ли я подключил USB-адаптер к Ардуино!

ДО этого была плата Arduino Duemilanove заливалось все без проблем!

SovGVD
mahowik:

ощущение что на высоте более метра сонар уже не отдает дистанцию

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

tda2030

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

Александр Дроздов, что до ардуинки, то не хватает еще и сигнала reset. Обрати внимание на то, что это 2я нога ft232, подключенная к ресету AVRки через последовательно включенный конденсатор. На старых версиях плат можно было ресетить вручную. У них интервал ожидания после ресета был довольно большой. У promini такого не выйдет. Сам пробовал. + еще Rx и Tx могут быть попутаны местами.

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

mahowik
tda2030:

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

сперва так и сделал… но потом как нихрена не вышло, оставил толко сонар… т.е. надо понять причну сперва… буду профайлить через bluetooth… благо что второй етаж всего… жена упирается НО будет оператором дома, а то смотреть на комп и пытаться не вписаться в провода или балкон чей нить сложновато 😃

SovGVD:

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

tda2030:

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

с етим тож понятно… пока пробую в зависании, потому угол можно считать 90гр к горизонту… кроче надо сперва понять что происходит на высоте более метра… пират ведь летает 😉
кстать на сколько точно висит на сонаре? +/-??см?

omegapraim
drozd79:

Всем привет! Мужики читаю тему, но не нашел пока ответа. Приехала мне плата Arduino Mini Pro. Так же есть USB адаптер вот такой arduino.cc/en/Main/MiniUSB . Подпаял 4 выхода USB адаптера (TX,RX, GND, VCC) к 4-м соответствующим входам ардуино, пытаюсь залить программу, выскакивает ошибка:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

На ардуинке горит зеленый и моргает красный постоянно. Вопрос, как узнать есть загрузчик в моей ардуинке?
Правильно ли я подключил USB-адаптер к Ардуино!

ДО этого была плата Arduino Duemilanove заливалось все без проблем!

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

tda2030

по даташиту точность самого сонара 0.3 см (!!!). По ходу дела все остальное упирается в математику, правильность настройки ПИДа, и уровень разброса в показаниях сонара

не помню в каком проекте, но я только начинал разбирать тему коптеров, смотрел видео полетов с сонаром. Высота от пола была небольшая, не более 1.5 метров. С виду держался очень ровно. Не знаю, если в +/- 10 сантиметрах от исходного положения болтался… не больше…

tusik
mahowik:

кстать на сколько точно висит на сонаре? +/-??см?

В сырую погодду 5 см, а так 10

mahowik
tda2030:

по даташиту точность самого сонара 0.3 см (!!!). По ходу дела все остальное упирается в математику, правильность настройки ПИДа, и уровень разброса в показаниях сонара не помню в каком проекте, но я только начинал разбирать тему коптеров, смотрел видео полетов с сонаром. Высота от пола была небольшая, не более 1.5 метров. С виду держался очень ровно. Не знаю, если в +/- 10 сантиметрах от исходного положения болтался… не больше…

tusik:

В сырую погодду 5 см, а так 10

даташит смотрел тоже… довольно точно отдает… дома высоту потолков перемерял везде с точностью в полсантиметра 😃
с математикой и ПИД тож по идее все ок, т.к. в настроенний алт-холд сунул дистанс от санара и на высотах менее метра держит +/-30…50см
вот интересно, а пробовал кто на сонаре висеть так скажем на 3-4 метрах?
у меня навязчивая идея, что вибрации от движков уменьшают чувствителность сонара, т.е. зашумляют принятый пулс-сигнал… отсюда и дальность действия падает…

tusik
mahowik:

висеть так скажем на 3-4 метрах

У меня не висит:) Сонар работает у меня до двух метров. Замечено как: до двух метров колебаний нет после двух ±метр-полтора, снижается до двух - останавливается. В алт-холде пиды не настраивал

Sir_Alex
tusik:

Замечено как: до двух метров колебаний нет после двух ±метр-полтора, снижается до двух - останавливается. В алт-холде пиды не настраивал

Дело в том, что код сонара я поправил в Пирате 2.1.1R8, до этого там могли скакать показания на высоте больше метра… Т.к. переполнялся счетчик длительности импульса от сонара. Кроме того, сонар сам по себе не правильно использовался, между измерениями надо держать паузу в несколько миллисекунд.

Так что если в MultiWii похожий код был, то проблема в нем.

nemo61
drozd79:

пытаюсь залить программу, выскакивает ошибка: avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

omegapraim:

надо еще и ресет от программатора на аурдину подрубать и будет вам счастье.

Можно и не подрубать. Я делаю так:
нажимаю кнопку загрузки.
Когда появляется надпись об окончании компиляции - выжидаю примерно секунду и жму ресет на ардуине.

mahowik
Sir_Alex:

Так что если в MultiWii похожий код был, то проблема в нем.

я дравер для сонара тогда с фиксом взял, т.е. тот который ты на форум выкладывал… Или ты нашел эту багу с переполнением позже?