Специальные цены   новые товары
Закрытая тема
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 40 из 78

Optical Flow + MultiWii

Тема раздела Коптеры. Комплектующие, сборка, настройка. в категории Квадрокоптеры и мультироторы; Пока погода нелетная, решил побаловаться с датчиком Optical Flow. Запаял на куске макетки вот такой чип: ADNS-5050 ( http://www.avagotech.com/pages/en/na...ors/adns-5050/ ). ...

  1. #1

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2

    Optical Flow + MultiWii

    Пока погода нелетная, решил побаловаться с датчиком Optical Flow. Запаял на куске макетки вот такой чип: ADNS-5050 (http://www.avagotech.com/pages/en/na...ors/adns-5050/). В общем-то можно было взять любой из оптической мышки, но все что я разобрал, были 3-х вольтовые (надо LLC паять и стабилизатор, а с этим у меня сложности). У этого же 5В питание и 5В логика, и из обвязки нужно только пара конденсаторов. Линзу вытащил из китайской лазерной указки. Если поставить глазок от видеокамеры (5-8мм) будет по идее лучше.

    Завел в multiwii, самое интересное что показания идут и довольно точно отслеживает перемещение.

    Осталось написать пару формул конвертации с учетом высоты и PID-регулятор

    Вопрос: как работать с SPI на ардуине? Я сделал софтовый, там по идее всего два байта на запись и два на чтение на каждый цикл. Есть ли смысл тут что то оптимизировать?

    Нажмите на изображение для увеличения
Название: IMAG0138.jpg
Просмотров: 173
Размер:	23.9 Кб
ID:	622422Нажмите на изображение для увеличения
Название: IMAG0137.jpg
Просмотров: 168
Размер:	25.0 Кб
ID:	622423

  2.  
  3. #2

    Регистрация
    06.10.2011
    Адрес
    Самарская обл.
    Возраст
    44
    Сообщений
    172
    А какое максимальное расстояние на котором работает оптический датчик ?

  4. #3

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Понятия не имею.. Пока до тестов дело не дошло. Все зависит от контраста и размера деталей рисунка поверхности, на снегу думаю вообще не будет работать, а на разноцветной плитке хоть с 20 метров.

  5. #4

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    40
    Сообщений
    1,941
    alexmos, В ArduCopter'e смотрели код OptFlow?

  6.  
  7. #5

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Да, глянул пока только считывание с датчика. В остальном что делать понятно, но буду смотреть и там если какие то траблы возникнут.
    Так и не понял как там SPI реализован, вроде встроенная библиотека?

  8. #6

    Регистрация
    17.06.2011
    Адрес
    Минск
    Возраст
    40
    Сообщений
    1,941
    Цитата Сообщение от alexmos Посмотреть сообщение
    Так и не понял как там SPI реализован, вроде встроенная библиотека?
    Да, Arduino'вская либа SPI.

  9. #7

    Регистрация
    16.12.2005
    Адрес
    Москва
    Возраст
    35
    Сообщений
    4,452
    Записей в дневнике
    13
    Алексей, еще бы предусмотреть вариант выдачи некорректных данных стоило.
    А то начнет на неконтрастной поверхности выдавать белиберду - и все, туши свет
    Как минимум надо ввести понятие "максимальной скорости", наверное

  10.  
  11. #8

    Регистрация
    24.01.2010
    Адрес
    Москва
    Возраст
    30
    Сообщений
    3,618
    Записей в дневнике
    34
    Цитата Сообщение от leprud Посмотреть сообщение
    Алексей, еще бы предусмотреть вариант выдачи некорректных данных стоило.
    А то начнет на неконтрастной поверхности выдавать белиберду - и все, туши свет
    Как минимум надо ввести понятие "максимальной скорости", наверное
    А какая польза от этого оптического датчика, на флайменторе например, ну будет он висеть у вас в 3х метрах над землей. 20 метров вряд ли, нужна хорошая разрешающая спасобность датчика и хорошая оптика.

  12. #9

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Цитата Сообщение от leprud Посмотреть сообщение
    Алексей, еще бы предусмотреть вариант выдачи некорректных данных стоило.
    А то начнет на неконтрастной поверхности выдавать белиберду - и все, туши свет
    Как минимум надо ввести понятие "максимальной скорости", наверное
    Да, данные могут идти самые разные. Например собственную тень "увидит", или при вращении он непонятно что выдаст. Я планирую исполовать его только в очень мягком режиме для стабилизации скорости в 0, когда все стики в центре. Т.е. летишь, зарулился - бросил стики, и он постепенно остановился и завис, назависимо от ветра и скорости. Другие применения пока не придумал.

    Цитата Сообщение от omegapraim Посмотреть сообщение
    А какая польза от этого оптического датчика, на флайменторе например, ну будет он висеть у вас в 3х метрах над землей. 20 метров вряд ли, нужна хорошая разрешающая спасобность датчика и хорошая оптика.
    Согласен польза не ахти какая. Мне просто интересно с ним повозиться. И для новичков (типа меня) думаю полезно будет.
    Подскажите применения, может от этого и буду плясать. И неясно пока как он будет работать в реалных условиях.

  13. #10

    Регистрация
    29.01.2011
    Адрес
    Окленд, Новая Зеландия
    Возраст
    30
    Сообщений
    4,911
    Записей в дневнике
    78
    Цитата Сообщение от alexmos Посмотреть сообщение
    И неясно пока как он будет работать в реалных условиях.
    ардукоптер с ним на асфальте неплохо висел около 30см над землей, в массы врядли пойдет, но just4fun я бы налепил тоже
    http://code.google.com/p/arducopter/wiki/AC2_OptFlow

  14. #11

    Регистрация
    09.03.2010
    Адрес
    Киев - Мальта
    Возраст
    38
    Сообщений
    7,620
    Записей в дневнике
    5
    хм... как то видео совсем не впечатлило. Я весь ролик ждал когда включат стабилизацию. Я левой ногой на КУКе лучше рулю

  15. #12

    Регистрация
    24.01.2010
    Адрес
    Москва
    Возраст
    30
    Сообщений
    3,618
    Записей в дневнике
    34
    Цитата Сообщение от cylllka Посмотреть сообщение
    хм... как то видео совсем не впечатлило. Я весь ролик ждал когда включат стабилизацию. Я левой ногой на КУКе лучше рулю
    Честно сказать флайментор в точке 450 рулит лучше)))) в общем вещь чисто побаловаться не больше лучше уж сделать чтобы он от стенак отталкивался с помощью сонара, а тупо стоять и смотреть как квадрик сам 8 минут висит и водить вокруг него хороводы, это даже не весело. Свое мнение я вам говорю как владелец флайментора, как говорится штука классная но летать не учит совсем.

    Кстати чтобы эта штука работала лучше поверхность под квадриком лучше подсвечивать красным спектром или мощным ИК диодом. ТОгда она будет рельеф хотя бы видеть.

  16. #13

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Цитата Сообщение от cylllka Посмотреть сообщение
    хм... как то видео совсем не впечатлило. Я весь ролик ждал когда включат стабилизацию. Я левой ногой на КУКе лучше рулю
    НУ да, на видео непонятно что там вообще удерживать. Где порывы ветра, где остановка на большой скорости. Если просто покружить на месте то нафиг не нужно.

    Цитата Сообщение от omegapraim Посмотреть сообщение
    Кстати чтобы эта штука работала лучше поверхность под квадриком лучше подсвечивать красным спектром или мощным ИК диодом. ТОгда она будет рельеф хотя бы видеть.

    Не поможет, если углы прожектора и линзы совпадают, не будет выделяться рельеф. В мышке подсветка под сильным углом и это помогает на однотонной поверхности

  17. #14

    Регистрация
    24.01.2010
    Адрес
    Москва
    Возраст
    30
    Сообщений
    3,618
    Записей в дневнике
    34
    В чем проблема сделать так что бы было под углом?, я уже ранее писал что эта штука выше 3х метров работать всеравно откажется т,к, у линзы фокус фиксированный, для такого сенсора еще и автофокус от фотика нужен.

  18. #15

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Проблема в том что чем выше высота, тем меньший угол мы можем обеспечить. Угол в 10 градусов ничего не даст.
    Линзу можно настроить как угодно, можно и на 3 метра. Для такой матрицы глубина резкости будет от 30см и до бесконечности (вспомните камеры сотовых)

  19. #16

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    В общем, заимплементил и потестил. Arducopter так и не расковырял - очень там все сложно сделано, у меня попроще - не более 100 строк кода в сумме.
    Работает вроде нормально - тестил в сумерках уже, но тем не менее на высоте от 20см до 10 м работа алгоритма заметна и позиция держится. Сопротивляется небольшому ветру (большого пока не случилось



    Исходники на SVN http://code.google.com/p/multiwii-al...unc%2FMultiWii

  20. #17

    Регистрация
    24.01.2010
    Адрес
    Москва
    Возраст
    30
    Сообщений
    3,618
    Записей в дневнике
    34
    Эхххх хорошо вам есть место где нет людей и открытая площадка((((

  21. #18

    Регистрация
    31.12.2011
    Адрес
    Днепропетровск, украина
    Возраст
    33
    Сообщений
    804
    Цитата Сообщение от alexmos Посмотреть сообщение
    В общем, заимплементил и потестил. Arducopter так и не расковырял - очень там все сложно сделано, у меня попроще - не более 100 строк кода в сумме.
    Работает вроде нормально - тестил в сумерках уже, но тем не менее на высоте от 20см до 10 м работа алгоритма заметна и позиция держится. Сопротивляется небольшому ветру (большого пока не случилось



    Исходники на SVN http://code.google.com/p/multiwii-al...unc%2FMultiWii
    по мне так для удержания позиции это лучше гпс даже в текущем состоянии) тогда gps разве что как failsafe нужен и на больших высотах
    , че-то я уже ломанулся заказывать себе такой сенсор)

  22. #19

    Регистрация
    09.03.2010
    Адрес
    Киев - Мальта
    Возраст
    38
    Сообщений
    7,620
    Записей в дневнике
    5
    Цитата Сообщение от alexmos Посмотреть сообщение
    В общем, заимплементил и потестил.
    Вот это я понимаю, можно чайку попить и булку слопать пока он висит. А информация для повторения будет доступна? код и распиновка

  23. #20

    Регистрация
    01.04.2008
    Адрес
    Иркутск
    Возраст
    41
    Сообщений
    35
    Снимаю шляпу очень интересно ,а на какой меге виий?

  24. #21

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Алексей, снимаю шляпу!

    Когда теория срастается с практикой с первых попыток, особенно в таких вещах, то это уже что то сродни гениальности

    з.ы. простите за глупый вопрос... а что датчик отдает? скорость перемещения в относительных точках в единицу времени? т.е. чем больше высота, тем больше размер точки и меньше точность?
    и как правильно настроить линзу?
    Последний раз редактировалось mahowik; 26.03.2012 в 02:05.

  25. #22

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Спасибо, не ожидал такой реакции Мод написан just fo fun, пользы не очень много. Локалные данные о положении точнее GPS, но нужно быть реалистом - работать он будет не везде и очень зависит от освещения и качества поверхности.

    Распиновка согласно датащиту (http://www.avagotech.com/docs/AV02-1045EN) Нужны выходы SCLK, SDIO, NCS - можно вешать на любые ноги и прописать в config.h. На NRESET я кинул на +5в, чтобы не заводить его на ардуину.

    Кстати можно взять и готовый модуль http://store.diydrones.com/ProductDe...ode=BR-0016-01 по показателям должен работать лучше и оптика получше стоит.. Но под него надо код считывания допилить, т.к. возможно и регистры другие и SPI у него по четырем проводам а не по трем.

    Код крутится на стандартной ATMEGA 328P (Crius Hobby MWC).

    Для настройки линзы я написал тестовый скетч - он делает дамп сенсора и выводит в программку mousecam (не помню где скачал), которую слегка модифицировал для ADNS-5050. Оба во вложении.

    Цитата Сообщение от mahowik Посмотреть сообщение
    з.ы. простите за глупый вопрос... а что датчик отдает? скорость перемещения в относительных точках в единицу времени? т.е. чем больше высота, тем больше размер точки и меньше точность?
    и как правильно настроить линзу?
    Датчик отслеживает перемещение картинки по его сенсору и увеличивает счетчик в 8-ми битовом регистре. Реальное перемещение определеяется, зная текущее разрешение (750CPI - отсчетов на дюйм), оптическую силу линзы и расстояние до поверхности. Собственно, вот тут все наглядно: http://code.google.com/p/arducopter/wiki/AC2_OptFlow.

    Как настроить - по картинке с камеры.. я выложил выше прогу. Можно попробовать и другие фокусные, чем шире - тем большие детали рельефа будут прниматься в рассчет. Потом в кончиге можно подкрутить, я вынес параметр.
    Вложения
    Последний раз редактировалось alexmos; 26.03.2012 в 02:30.

  26. #23

    Регистрация
    31.12.2011
    Адрес
    Днепропетровск, украина
    Возраст
    33
    Сообщений
    804
    Цитата Сообщение от alexmos Посмотреть сообщение
    работать он будет не везде и очень зависит от освещения и качества поверхности.
    ну с засветами бороться понятно некак, а вот с недосветом думаю банально взять и сделать как в мышах втолкать туда несколько светодиодов с хорошей фокусировкой в точку, на высоте до пары метров думаю будет достаточно, лазером наверно было бы лучше, но слабее значительно и скорее всего из-за того что там эффект кристализации что-ли ( как мелкие точки при рассеивании) будет думать что стоит на месте , если конечно сенсор способен реагировать на такие детали.
    смотрю тут http://store.diydrones.com/ProductDe...ode=BR-0016-01
    А модуль объектива от обычной cctv камеры подойдет? там же сток 3,6 мм , чего вполне достаточно должно быть, но есть и шире, по ссылке вроде как оно и есть

    upd ))) прочитал
    -Includes an 8mm lens which can be replaced, depending on the use requirements
    -Standard M12 x 0.5 lens mount

  27. #24

    Регистрация
    09.03.2010
    Адрес
    Киев - Мальта
    Возраст
    38
    Сообщений
    7,620
    Записей в дневнике
    5
    Цитата Сообщение от Dimm168pin Посмотреть сообщение
    если конечно сенсор способен реагировать на такие детали.
    Вот с таким разрешением видит сенсор мышки

  28. #25

    Регистрация
    29.01.2011
    Адрес
    Окленд, Новая Зеландия
    Возраст
    30
    Сообщений
    4,911
    Записей в дневнике
    78
    Цитата Сообщение от cylllka Посмотреть сообщение
    Вот с таким разрешением видит сенсор мышки
    а как сенсор "видит" траву/асфальта и прочие вещи? просто интересно =) мышей дохлых много (механика полетела, а сенсор то живой), прилепить что ли тоже

  29. #26

    Регистрация
    31.12.2011
    Адрес
    Днепропетровск, украина
    Возраст
    33
    Сообщений
    804
    Цитата Сообщение от cylllka Посмотреть сообщение
    Вот с таким разрешением видит сенсор мышки
    тогда пофиг) можно городить десяток лэдов с хорошей фокусировкой на пузо для вечерних полетов и все)

  30. #27

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    В мышках подсветка под сильным углом, и там даже на белой бумаге хорошо работает - выделяется тенями струкутра. В нашем случае подсветка поможет не так сильно, теней не будет от нее.. И надо учитывать, что сенсор очень слепой: например поверхность освещенную лампой 60Вт с расстояния 1 м он почти не видит. Есть светодиодные прожекторы мощные, вот типа такого надо ставить и фокусировать линзой в то же пятно что видит сенсор (это примерно 5 на 5 см на расстоянии в 1 метр)

    С лазером интересная идея, его можно очень точно сфокусировать. Можно ИК поставить из DVD, он очень мощный. Но, блин, опасно будет с таким коптером рядом находиться

    Цитата Сообщение от SovGVD Посмотреть сообщение
    а как сенсор "видит" траву/асфальта и прочие вещи? просто интересно =) мышей дохлых много (механика полетела, а сенсор то живой), прилепить что ли тоже
    На траве думаю будет лучше всего - там много неоднородностей разного размера, так что на любой высоте есть на что "посмореть" Асфальт с большой высоты уже сольется.

  31. #28

    Регистрация
    29.01.2011
    Адрес
    Окленд, Новая Зеландия
    Возраст
    30
    Сообщений
    4,911
    Записей в дневнике
    78
    Цитата Сообщение от alexmos Посмотреть сообщение
    Асфальт с большой высоты уже сольется.
    смотря какой =)) много где технологические отверстия в виде ям, так что и с высоты будет неоднородно )

  32. #29

    Регистрация
    09.03.2010
    Адрес
    Киев - Мальта
    Возраст
    38
    Сообщений
    7,620
    Записей в дневнике
    5
    Цитата Сообщение от alexmos Посмотреть сообщение
    И надо учитывать, что сенсор очень слепой
    Нужно оптику более светлую. Мелкие линзочки очень мало света пропускают.

  33. #30

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Цитата Сообщение от SovGVD Посмотреть сообщение
    прилепить что ли тоже
    блин... ну прям хоть ты работу кидай... столко всего хочется покрутить попробовать, а времени зеро...

    в ADNS-5050 разрешение выше чем в опт. мышах нижней-средней ценовой категории? И сколько там доставка если брать по ссылке из первого поста?
    Последний раз редактировалось mahowik; 26.03.2012 в 19:46.

  34. #31

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Цитата Сообщение от mahowik Посмотреть сообщение
    в ADNS-5050 разрешение выше чем в опт. мышах нижней-средней ценовой категории? И сколько там доставка если брать по ссылке из первого поста?
    Этих сенсоров навыпускали очень много, ключевые параметры - размер матрицы, поддерживаемые скорости и ускорения. Но большинство на 3.3В работают, 5-ти вольтовых я всего несколько нашел. Вероятность что в мыше будет стоять именно такой как надо очень мала - поэтому заказал в инете у компании Элитан. Что то около 500 р за пару штук с доставкой. Есть и за бугром но там доставка безумная.

  35. #32

    Регистрация
    26.09.2007
    Адрес
    Санкт-Петербург
    Возраст
    40
    Сообщений
    5,788
    Записей в дневнике
    18
    А как он у вас высоту классно держит, завидую белой завистью! Кролик так не могЁт.

  36. #33

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Ну так то по сонару, чтож не держать если погрешность измерений 0.3см Ставлю сильный PID и висит как на веревочке.

  37. #34

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Цитата Сообщение от alexmos Посмотреть сообщение
    Но большинство на 3.3В работают
    если разница только в питании, думаю не страшно если 3.3в, его можно взять с ардуины или платы сенсоров, а LLC на шину желателен, но не обязателен как показала практика работы с I2C датчиками...
    другое дело что ADNS-5050 "улучшенный" по параметрам, потому желательно именно его по идее:
    - Отслеживание высокоскоростного движения при скорости до 30 дюймов в секунду и ускорении до 8 G
    - Самонастраивающаяся кадровая частота для оптимальной производительности
    - Встроенный генератор - не требуется вход синхронизации
    - Настраиваемое разрешение от 125 до 1375 знаков на дюйм с шагом 125 знаков на дюйм
    - Используются только 4 конденсатора без транзисторов

    + твои первые тест-полеты действительно впечатлили!

  38. #35

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Цитата Сообщение от mahowik Посмотреть сообщение
    другое дело что ADNS-5050 "улучшенный" по параметрам
    Так эти "улучшения" давно стандарт де-факто В инете находил статью про эволюцию компьютерных мышей, такие параметры средненькие. Почитайте датащиты от других сенсоров ADNS-XX - там в каждом какие-то преимущества описаны. Но вот по минимуму обвеса и простоте подключения этот пожалуй что лучший.
    Если 3в есть и не пугает LLC - то смело можно расковыривать любую мышь, но обратите внимание что у AVAGO каждый сенсор имеет свой протокол - читал несколько датащитов, работа сильно отличается

  39. #36

    Регистрация
    31.12.2011
    Адрес
    Днепропетровск, украина
    Возраст
    33
    Сообщений
    804
    Цитата Сообщение от alexmos Посмотреть сообщение
    Так эти "улучшения" давно стандарт де-факто В инете находил статью про эволюцию компьютерных мышей, такие параметры средненькие. Почитайте датащиты от других сенсоров ADNS-XX - там в каждом какие-то преимущества описаны. Но вот по минимуму обвеса и простоте подключения этот пожалуй что лучший.
    Если 3в есть и не пугает LLC - то смело можно расковыривать любую мышь, но обратите внимание что у AVAGO каждый сенсор имеет свой протокол - читал несколько датащитов, работа сильно отличается
    если грабли с llc могу выложить отдельно разводку платки для pca9307 или как он там зовется , паял, вроде не страшно, все под односторонний текстолит, могу и спаркановскую версию, есть и то и другое, и работает, правда та что на транзисорах у меня на 300 попугаев поднимает цикл, ( с 2950 до 3300 примерно)
    паяется все паяльником,без фена и прочего колдовства

  40. #37

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Посмотрел код на днях. Аксель наше все!

    1. В основном все понятно, но есть очевидный скользкий момент в расчете горизонтальной скорости в CF. К примеру если накопилась ошибка интегрирования + качество поверхности для OF сенсора низкое (освещение, либо отсутствие деталей), то непонятно как и по чем будет корректироваться скорость. В итоге коптер понесет в не известном направлении...
    Код:
    // Apply ACC-OF complementary filter
             vel[axis] = ((vel[axis] + EstHAcc[axis]*accVelScale*dTime)*OF_ACC_FACTOR + vel_of[axis])/(1+OF_ACC_FACTOR);
    2. Проверил много раз. Походу нашел ошибочку. vel_of получился в метрах в секунду, а не см/сек.
    Код:
    // remove shift in position due to inclination: delta_angle * PI / 180 * 100
                // mm/sec(10m) * cm / us   ->    cm / sec
                vel_of[axis] = ((int32_t)(optflow_pos[axis] + (angle[axis] - prevAngle[axis]) * 17 )) * alt / dTime;
    /* displacment (in mm*10 on height 1m) */
    данные с сенсора в мм*10 => нужно в см => (мм*10)/100
    alt в см => нужно в метрах => alt/100
    dTime в микросек. => нужно в сек. => dTime/1000000

    в итоге числитель должен быть в 100 раз больше если результат в см/сек., т.е.

    Код:
    vel_of[axis] = ((int32_t)(optflow_pos[axis] + (angle[axis] - prevAngle[axis]) * 17 )) * alt * 100 / dTime ;
    Либо если перекинуть эту сотню в CF, то OF_ACC_FACTOR был 1000! Т.е. если я не ошибся, то алгоритм на видео считай летал на одном акселе и видимо он был очень хорошо откалиброван у тебя по всем осям... И зачем нам OF?!

    3. И кстати почему мы верим больше акселю чем OF сенсору (OF_ACC_FACTOR = 10)? Даже если качество картинки/потока хорошее (optflow_squal), все равно большая погрешность с OF сенсора? Т.е. по идее можно подстраивать коэф. CF в соот-ии с optflow_squal если данные довольно точные...

    4. Почему высота более 2-х метров режется? Ведь это считай коэф. для расчета пробега по OF сенсору.
    Код:
    alt = constrain((uint16_t)EstAlt, 30, 200) * 100;

  41. #38

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    по второму пункту: увидел наконец свой косяк
    высота в мм*10, а привык что везде в ИМУ и в конечном ПИД она в см...

    Код:
    alt = constrain((uint16_t)EstAlt, 30, 200) * 100;
    5. Есть идея: Когда стики в нуле и коптер притормозил (т.е. когда скорость меньше заданного N), считать пройденную дистанцию/смещение по х,у и использовать его в ПИД регуле для возврата в точку удержания (х=0, у=0). Т.е. ввести доп. стабилизацию по смещению (когда коптер почти в покое), а не только по скорости...
    Тогда по идее фиксация в точке будет более точной. Тут уже основную роль сыграет OF сенсор (качество поверхности, освещение, контрастность текстуры поверхности и т.д.).

  42. #39

    Регистрация
    23.08.2011
    Адрес
    Краснодар
    Возраст
    39
    Сообщений
    1,017
    Записей в дневнике
    2
    Цитата Сообщение от mahowik Посмотреть сообщение
    К примеру если накопилась ошибка интегрирования + качество поверхности для OF сенсора низкое (освещение, либо отсутствие деталей), то непонятно как и по чем будет корректироваться скорость. В итоге коптер понесет в не известном направлении...
    Если качество поверхности низкое, то скорость по сенсору зануляется и вычисленная по ускорению скорость уводится в ноль. Если нет движения, то аксель в любом случае 0 покажет, т.к. это примитивно разница с гирой, а гира под него подстроится (вспомни свою последнюю идею с altHold). Когда ошибка интегрирования перестанет возрастать, скорость быстро уводится в 0 комплементарным фильтром.


    Цитата Сообщение от mahowik Посмотреть сообщение
    Проверил много раз. Походу нашел ошибочку. vel_of получился в метрах в секунду, а не см/сек
    Я размерности кидаю туда-сюда, чтобы остаться в рамках int16_t по возможности, поэтому все запутано. Но я проверял по ГУИ, выводя проинтегрированную скорость с акселя и с сенсора - они совпадают примернр, так что ошибки в 10 раз быть не может

    И вообще, то что меряет сенсор после нормализации, и то что меряет аксель, может сильно не совпадать (например из-за неотрегулированного коэффициента для учета FOV линзы). Мне кажется это все не страшно, т.к. есть комплементарный фильтр.


    Цитата Сообщение от mahowik Посмотреть сообщение
    И кстати почему мы верим больше акселю чем OF сенсору (OF_ACC_FACTOR = 10)? Даже если качество картинки/потока хорошее (optflow_squal), все равно большая погрешность с OF сенсора? Т.е. по идее можно подстраивать коэф. CF в соот-ии с optflow_squal если данные довольно точные...
    Согласен, тут тоже можно учесть качество поверхности. Я тестировал в плохом освещении, и тогда сенсор выдает пилу вместо ровнй линии. А с акселем *10 более-менее ровно получается. Ещё не забывай, что аксель интегрируется, и после этого шумит очень мало, так что он хорошо сглаживает шум OF-сенсора.
    Но все равно, даже с последующим фильтром НЧ, коптер слегка подергивает.


    Цитата Сообщение от mahowik Посмотреть сообщение
    4. Почему высота более 2-х метров режется? Ведь это считай коэф. для расчета пробега по OF сенсору.
    Чем больше высота, тем меньше доверия сенсору и надо ослаблять его влияние. Так как выход алгоритма прямо пропорционален высоте - можно в этом месте обрезать. (Мы же выдаем скорость, а не абсолютное перемещение). Т.е. скорость выше двух метров начнет снижаться - а вместе с ней и регулирование.

    Я уже поменял эту часть немного - высоту увеличил до 3-х метров и умножил на качество поверхности вместо 100, чтобы сила регулирования зависела от качества.

    Но тут остается проблема - акселерометр по прежнему считает скорость без учета обрезания высоты. Эту часть надо потестить. Можно оставить так или также делить на коэффициент. Пока так оставил, надо полетать побольше.

    Цитата Сообщение от mahowik Посмотреть сообщение
    5. Есть идея: Когда стики в нуле и коптер притормозил (т.е. когда скорость меньше заданного N), считать пройденную дистанцию/смещение по х,у и использовать его в ПИД регуле для возврата в точку удержания (х=0, у=0). Т.е. ввести доп. стабилизацию по смещению (когда коптер почти в покое), а не только по скорости...
    Тогда по идее фиксация в точке будет более точной. Тут уже основную роль сыграет OF сенсор (качество поверхности, освещение, контрастность текстуры поверхности и т.д.).
    Примерно это и получается в PID-регуляторе. Именно иcходя из того, что у нас будет I-составляющая, я выбрал в качестве стабилизируемой величины скорость. В моих тестах четко видно - когда бросили стики в движении - коптер начинает тормозить (P-часть) и пролетает пару метров. В этот момент идет интегрирование I-части. После полной остановки, начинает рабоать I-часть и коптер возвращается туда, где бросили стики. Нужно просто правилно подобрать P и I.

    При полной неподвижности, считать отдельно смещение нет смысла. Оно будет плыть из-за ошибок. В общем, в текщей версии I-часть как раз то и делает и вроде работает как надо - в конце концов гасит любые попытки куда-то уплыть.

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

  43. #40

    Регистрация
    13.03.2011
    Адрес
    Montreal, Canada
    Возраст
    39
    Сообщений
    2,299
    Записей в дневнике
    19
    Цитата Сообщение от alexmos Посмотреть сообщение
    Если качество поверхности низкое, то скорость по сенсору зануляется и вычисленная по ускорению скорость уводится в ноль. Если нет движения, то аксель в любом случае 0 покажет, т.к. это примитивно разница с гирой, а гира под него подстроится (вспомни свою последнюю идею с altHold). Когда ошибка интегрирования перестанет возрастать, скорость быстро уводится в 0 комплементарным фильтром.
    Блин, точно! дампенинг скорости будет vel[axis]/OF_ACC_FACTOR в каждой итерации...
    Прикольно! Используя этот эффект (дампенинг в компл. фильтре), без ОФ сенсора (т.е. на одном акселе), можно добиться практически полного торможения коптера при отпускании стиков. Идеально в точку не станет (и будет плыть болше чем без ОФ) ну и ветер держать не будет (т.к. I также будет душиться при дампенинге), но томожение близкое к нулю даст... Только фактор фильтра поднять надо будет для более мягкой корректировки в ноль...
    A возможно для эффективного торможения достаточно будет лишь горизонтального ускорения в ПИД регуле... профит огромный, a математики зеро

    Цитата Сообщение от alexmos Посмотреть сообщение
    Но все равно, даже с последующим фильтром НЧ, коптер слегка подергивает.
    коптер может подергивать из-за провалов во времени цикла, когда на некоторые из итераций ложится много математики (был опыт такой). В ГУИ по цифрам ты этого можешь и не заметить, но если вывести на чарт в ГУИ то будет видно...

    Цитата Сообщение от alexmos Посмотреть сообщение
    Чем больше высота, тем меньше доверия сенсору и надо ослаблять его влияние. Так как выход алгоритма прямо пропорционален высоте - можно в этом месте обрезать. (Мы же выдаем скорость, а не абсолютное перемещение). Т.е. скорость выше двух метров начнет снижаться - а вместе с ней и регулирование. Я уже поменял эту часть немного - высоту увеличил до 3-х метров и умножил на качество поверхности вместо 100, чтобы сила регулирования зависела от качества. Но тут остается проблема - акселерометр по прежнему считает скорость без учета обрезания высоты. Эту часть надо потестить. Можно оставить так или также делить на коэффициент. Пока так оставил, надо полетать побольше.
    Если глубина резкости 30см=>бесконечность, то с увеличением высоты, проблему вижу только в малом количестве деталей поверхности, что отразится в уменьшении оптического потока (или кволити потока?)...
    Т.е. более правильно мне кажется регулировать коэф. компл. фильтра, опираясь на кволити данных ОФ сенсора (и высоту, если кволити не отражает реалной картины). Тогда и ("акселерометр по прежнему считает скорость без учета обрезания высоты") проблемы не будет + получим линейную зависимость влияния "чИстоты" данных ОФ сенсора на результат выхода компл. фильтра, а не просто "обрубание" после определенной высоты.

    Цитата Сообщение от alexmos Посмотреть сообщение
    Примерно это и получается в PID-регуляторе. Именно иcходя из того, что у нас будет I-составляющая, я выбрал в качестве стабилизируемой величины скорость. В моих тестах четко видно - когда бросили стики в движении - коптер начинает тормозить (P-часть) и пролетает пару метров. В этот момент идет интегрирование I-части. После полной остановки, начинает рабоать I-часть и коптер возвращается туда, где бросили стики. Нужно просто правилно подобрать P и I.
    Согласен. После интегрирования скорости в ПИД регуле (I-часть), получаем как бы усредненную скорость, что равносильно пройденному растоянию (в безразмерной величине), НО т.к. тут не учитывается время цикла (а оно не постоянно из за нарастающего изобилия математики ), то будет накапливаться дополнительная ошибка, что наверное не критично всеже, но будет отдалять от точки где кинули стики...

Закрытая тема

Похожие темы

  1. Crius Hobby MultiWii
    от leprud в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 2931
    Последнее сообщение: 24.02.2017, 03:34
  2. Продам тахометр для вертолета Model Avionics SkyTach Optical Tachometer
    от avv_1 в разделе Барахолка. Аппаратура
    Ответов: 8
    Последнее сообщение: 07.05.2013, 12:25
  3. MultiWii - обсуждаем и отлаживаем Alt Hold
    от alexmos в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 235
    Последнее сообщение: 30.08.2012, 19:49
  4. Multiwii PRO новая плата
    от ultrafliper в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 4
    Последнее сообщение: 08.02.2012, 14:26
  5. quadro: multiwii vs fy-90q
    от Adekamer в разделе Коптеры. Комплектующие, сборка, настройка.
    Ответов: 46
    Последнее сообщение: 17.09.2011, 00:52

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения