Optical Flow + MultiWii

mahowik

забыл написать… ранее когда код смотрел, заметил что vel[axis] не обнуляется… не знаю это баг или фича ))
по идее когда стики в деадбенде и getEstHVel() интегратор начинает новый цикл возврата в точку, то надо занулить vel[axis], т.к. если небыло остановки коптера и к примеру начали новый маневр, то vel[axis] будет равен остаточной скорости от пред. цикла…

и отсюда второй не совсем ясный момент: т.к. getEstHVel() интегратор начинает новый цикл возврата когда стики в деадбенде, то скорость через ускорение (в начале цикла возврата) будет равна нулю, хотя она не ноль совсем… т.е. тут мы опираемся на скорость ОФ сенсора и через компл. фильр приходим к правильному значению?

alexmos:

А ещё сегодня случился неприятный краш - коптер был в паре метрах от земли и в 5 метрах от меня, вдруг его начало закручивать по YAW и пошел резкий набор высоты.

ты вроде как заимплементил корректировку на ветер (т.е. I-чаcть) через вращение векторов, мот там косяк какой…

alexmos
mahowik:

забыл написать… ранее когда код смотрел, заметил что vel[axis] не обнуляется… не знаю это баг или фича ))
по идее когда стики в деадбенде и getEstHVel() интегратор начинает новый цикл возврата в точку, то надо занулить vel[axis], т.к. если небыло остановки коптера и к примеру начали новый маневр, то vel[axis] будет равен остаточной скорости от пред. цикла…

и отсюда второй не совсем ясный момент: т.к. getEstHVel() интегратор начинает новый цикл возврата когда стики в деадбенде, то скорость через ускорение (в начале цикла возврата) будет равна нулю, хотя она не ноль совсем… т.е. тут мы опираемся на скорость ОФ сенсора и через компл. фильр приходим к правильному значению?

Я вообще удивлен что алгоритм заработал сразу - там ошибка на ошибке. Я сейчас много чего переделеал. И попробовал вообще без ускорения и интегратора - работает практически так же, т.е. на комнатных тестах разницы не видно. Поэтому отключил ускорение вообще, и заменил его на LPF.
Но тут ты прав - когда режим не задействован, вычисления не идут, и в LPF тоже висит накопленная перед выходом из режима скорость. Но это мне кажется не критично - примерно секунда нужна, чтобы скорость приняла текущие значения при включении режима. Я бы сделал сброс этой переменной, но это усложнит код - так как выход и вход в режим определяется в MultiWii.pde, а вычисления в IMU.pde.

По второму вопросу - если убрать ускорение, то эта проблема тоже решается. Вообще все эти переходные процессы при входе в режим длятся мало и это не столь критично при больших скоростях - там все равно разброс результатов корреции до десятка метров. А вот при подруливании на месте могут вылезать эти пороговые эффекты. Ну это будет видно на тестах. В комнате я на площади в 2 метра им подруливал в том режиме - контроль достаточно хороший.

alexmos

Оказывается, Flymentor использует примитивный оптический сенсор от мышки, с большой долей вероятности это ADNS-2610. rcopen.com/files/4c32fe669970730077ccdbec

Так что его можно подключить к моему алгоритму, нужно немного дописать чтение/запись и работу с регистрами. Если у кого есть такая железка и есть желание попробовать, напишите.

Судя по картинке - выводы такие:

Yellow - SCK
White - SDIO
Red - +5V
Black - Ground

alexmos

Подключили ADNS-3080 но пока не фурычит. Он работает от 3.3в, может есть специфика подключения к 5-вольтовой ардуине? В датащите пишут что это допускается, но с условиями:

“SCLK, MOSI, and NCS may be
driven directly by a 3.3V output from a micro-controller,
or they may be placed in an open drain configuration by
enabling on-chip pull-up current sources. The open drain
drive allows the use of a 5V micro-controller without any
level shifting components”

Я ничего не понял 😦

Dimm168pin
alexmos:

Подключили ADNS-3080 но пока не фурычит. Он работает от 3.3в, может есть специфика подключения к 5-вольтовой ардуине? В датащите пишут что это допускается, но с условиями:

“SCLK, MOSI, and NCS may be
driven directly by a 3.3V output from a micro-controller,
or they may be placed in an open drain configuration by
enabling on-chip pull-up current sources. The open drain
drive allows the use of a 5V micro-controller without any
level shifting components”

Я ничего не понял 😦

странно , вроде написано что может работать от 5 вольт без всякого llc

выдергал даташит, не понял что там за serial port такой

19 days later
mahowik

ух! спаял сегодня оптфлоу борд на ADNS-5050 + запилил напильником до смерти старую веб камеру, дабы присобачить ее глазик к борду 😃
пока не летал, но морду лица удалось сфоткать через mousecam

19 days later
Dimm168pin

может такое собрать?, приехал мне 5050, сижу его смотрю )
или сразу совместить с гпс?

mahowik

Т.е. adns5050 на i2c повесить? Думаю оссобо нет смысла т.к. он на любые датапины легко вешается…

Dimm168pin
mahowik:

Т.е. adns5050 на i2c повесить? Думаю оссобо нет смысла т.к. он на любые датапины легко вешается…

ну вроде как один фиг, попробую сначала так)

alexmos
Dimm168pin:

может такое собрать?,

Это уже выше моего понимания 😃 А насчет совмщения с GPS - вполне реально: чтобы не загружать основной проц, всякие фичи типа gps, сонара и оптического сенсора, лучше выносить на другой. Но проблема в том, что для обсчета нужны прочие данные типа высоты, ускорнения, угла. Получается надо между двумя мозгами это гонять. Насколько быстрая I2C, будет ли тут профит?

Dimm168pin
alexmos:

Это уже выше моего понимания 😃 А насчет совмщения с GPS - вполне реально: чтобы не загружать основной проц, всякие фичи типа gps, сонара и оптического сенсора, лучше выносить на другой. Но проблема в том, что для обсчета нужны прочие данные типа высоты, ускорнения, угла. Получается надо между двумя мозгами это гонять. Насколько быстрая I2C, будет ли тут профит?

ну соответсвенно и моего , ибо собрать железо это пол беды, а заставить его работать в смысле накодить под него это уже выше моего понимания))

вот еще чего, был на рынке в поисках линзы, нашел лазер брелок за бакс, и вспомнил что у меня в мыльнице sony dsc v1 есть вот такая чудесная фича для фокусировки в полной темноте,

снято в полной темноте, к слову снята сетка на 5DII который вечером уже шуршит объективом и нифига не фокусируется, а по этой сетке аж бегом) ума не приложу почему так не делают везде)
взял брелочек этот, поставил 30 сек выдержки , и вот

я к тому что а если замутить штуковину как на концертах рисует? колесико, на нем 8 зеркал которое крутится и серва постоянно расшатывает, ночью будет до пары метров зарисовывать квадрат скажем 1,5x1,5 метра

Dimm168pin

развел печатку под это дело ,

вытравлю,проверю, посмотрю на удобность , если ок выложу файлик под ЛУТ

mahowik
Dimm168pin:

развел печатку под это дело

тут еще надо закладываться на крепление линзы, причем той которая есть в наличии…

вот мой хардкор, где в качестве макетки платка от мышки с другим сенсором, который успешно удален, дорожки перецарапаны + добавлен навесной монтаж…
из того что под руками было одним словом ))

alexmos
mahowik:

тут еще надо закладываться на крепление линзы, причем той которая есть в наличии…

Ага, самое главное камеру найти и притулить, а сам сенсор и разводить особо не надо, на монтажке за 10 минут все разводится.

Dimm168pin:

я к тому что а если замутить штуковину как на концертах рисует? колесико, на нем 8 зеркал которое крутится и серва постоянно расшатывает, ночью будет до пары метров зарисовывать квадрат скажем 1,5x1,5 метра

Ну в зералках фазовый автофокус - совсем другой прнцип, для него и такого света хватит. А нашему сенсору надо дневной свет, это на порядки ниже чувствительность. Думаю даже мощные LED прожекторы не помогут по ночи летать.

Dimm168pin

запаял к ардуине потестить и подобрать линзу,

скачал архив с mousecam , оно мне выдало

винда как обычно 7x64 на которой ничего не работает)) просто пробовать другую винду?)

UPD ,разобрался
под win 7x64 нужно скачать отсюда либу
и растолкать по папкам как-то так

mahowik

пока рылся в закладках своих ты уже и нашел 😉

Dimm168pin
mahowik:

пока рылся в закладках своих ты уже и нашел 😉

на multiwii форуме нашел ссылку от товарища LuFa, ну а там уже дальше порылся и нашел под это чудо майкрософта))
по сложившейся традиции фото на сенсор 😃

оно в сборе с чуть подпиленым объективом от ip камеры dlink dsc 910

Печатка в lay
adns_5050_dimm168pin.zip

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

Dimm168pin

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

mahowik
Dimm168pin:

оно в сборе с чуть подпиленым объективом от ip камеры dlink dsc 910

ух ты! ты чё резьбу прям в текстолите нарезал?! реальна крута! 😉

Dimm168pin:

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

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

субъективно стало света больше на 30-50%, т.к. в деталях лица появилось больше оттенков… НО появился явный недостаток сразу. пыль попадает на сенсор и появляется эффект битых пикселов на матрице, что видно в mousecam, не знаю будет ли это мешать сенсору правильно распознавать движение…

п.с. облетать не могу дождж ((
еще один нюанс: должен хорошо или хотяб удовлетворительно держать алт холд… на последних тестах у меня были проблемы с подшипниками и обмотка в одном движке коротила, колбасило как в шторм 😃, потому эффекта стабилизации не заметил, т.к. еле получалось коптер удерживать и посадить 😃

и еще вопрос Алексею: подбирал знаки сенсоров и разбирался по коду… для правильной компенсации переменные optflow_pos[ROLL] и optflow_pos[PITCH] должны быть положительными при движении вправо и вверх?

Dimm168pin
mahowik:

ух ты! ты чё резьбу прям в текстолите нарезал?! реальна крута! 😉

Да нет, оно прекрасно село на супер клей) линза легкая ибо корпус пластик)

субъективно стало света больше на 30-50%, т.к. в деталях лица появилось больше оттенков… НО появился явный недостаток сразу. пыль попадает на сенсор и появляется эффект битых пикселов на матрице, что видно в mousecam, не знаю будет ли это мешать сенсору правильно распознавать движение…

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

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

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

Конечно могу по быстрому все повесить , только платку для баро сваять надо, все руки не доходят)

если что трешка моя на твоей 1.9а2

www.youtube.com/watch?v=9D4j5IYN8LI&list=UUVYE1SBV…

гира 3205 аксель 345 и компас

может и так хватит?)

mahowik

Попробуй, но из наблюдений optflow алгоритм слегка раскачивает коптер в процессе стабилизации и высота начинает плавать сильнее…

Кроче облетал сегодня еще раз, после косметического ремонта. Заменил мотор, откалибровал моторы, потом пропы новые с рцтаймера… врубил альтхолд на высоте метра по сонару, затем поз.холд. Обрадовался! Работает! Решил заснять на мобилу, а коптер как газонет на метров 5 вверх, пока сорентировался, коптер уже летел в тачку припаркованную… успел только газ сбросить… погнул луч и наверное подпортил мотор, т.к. вернулись вибрации и даже в акро не смог справляться после мелкого ремонта на месте…
Завязываю кроче с альтхолдом по акселю… сил нет больше ((