Optical Flow + MultiWii

alexmos

Хороший магазинчик, не знал про него 😃 А линзу какую поставишь?
Я так и не смог прдумал как прикрутить глазок от камеры. Не покупать же камеру ради линзы и держателя с резьбой 😃

Надеюсь завтра потестить прошивку, в которой поисправлял много чего (последние мои ревизии лучше не тестить, больно криво летает с optical flow)

mahowik

Ну это скорее мега монстр, крупнейший диллер по продаже радиодеталей, с кучей филиалов по всему миру www.digikey.com/us/en/International/global.html ток доставка в Рашу дорого наверное
встанет…
Не поверишь, я уже хожу вокруг камерки своей с соблазном выдрать из нее глаз 😄. Либо лазерную указку копеечную прикупить и ее разобрать. Далее посадить линзу на 3-4 винтика по периметру, чтобы фокус хоть как накрутить можно было…

Dimm168pin
mahowik:

Пришла посылка с ca.digikey.com
Быстрые ребятки однако! 3-4 дня и парочка ADNS-5050 уже ждут опытов 😃 Доставка правда вышла чутка дороже (8$) чем 3 сенсора, но в принципе учитывая скорость доставки очень даже рад 😃
Правда через пару дней еду в отпуск, так что мот и не успею покрутить…

ага , пытался однажды там купить bma180 ) доставка до украины 120$ ))

mahowik

Нехило… по Канаде вроде как если заказ более чем 200$, доставка бесплатно…

gena_g
Dimm168pin:

ага , пытался однажды там купить bma180 ) доставка до украины 120$ ))

Здесь появились такие датчики

Dimm168pin
gena_g:

Здесь появились такие датчики

да уж, 14 баксов это весело, он везде по 5 ), для разнообразия возьму наверно напопробовать lsm330 там же)
оффтоп ) там еще появились вот такие блу тач модули

😂

alexmos

Если ADNS-5050 по России доставлять - то в Элитане он есть недорого и доставка вменяеая… только долго доставляют

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 прожекторы не помогут по ночи летать.