Optical Flow + MultiWii
забыл написать… ранее когда код смотрел, заметил что vel[axis] не обнуляется… не знаю это баг или фича ))
по идее когда стики в деадбенде и getEstHVel() интегратор начинает новый цикл возврата в точку, то надо занулить vel[axis], т.к. если небыло остановки коптера и к примеру начали новый маневр, то vel[axis] будет равен остаточной скорости от пред. цикла…
и отсюда второй не совсем ясный момент: т.к. getEstHVel() интегратор начинает новый цикл возврата когда стики в деадбенде, то скорость через ускорение (в начале цикла возврата) будет равна нулю, хотя она не ноль совсем… т.е. тут мы опираемся на скорость ОФ сенсора и через компл. фильр приходим к правильному значению?
А ещё сегодня случился неприятный краш - коптер был в паре метрах от земли и в 5 метрах от меня, вдруг его начало закручивать по YAW и пошел резкий набор высоты.
ты вроде как заимплементил корректировку на ветер (т.е. I-чаcть) через вращение векторов, мот там косяк какой…
забыл написать… ранее когда код смотрел, заметил что vel[axis] не обнуляется… не знаю это баг или фича ))
по идее когда стики в деадбенде и getEstHVel() интегратор начинает новый цикл возврата в точку, то надо занулить vel[axis], т.к. если небыло остановки коптера и к примеру начали новый маневр, то vel[axis] будет равен остаточной скорости от пред. цикла…и отсюда второй не совсем ясный момент: т.к. getEstHVel() интегратор начинает новый цикл возврата когда стики в деадбенде, то скорость через ускорение (в начале цикла возврата) будет равна нулю, хотя она не ноль совсем… т.е. тут мы опираемся на скорость ОФ сенсора и через компл. фильр приходим к правильному значению?
Я вообще удивлен что алгоритм заработал сразу - там ошибка на ошибке. Я сейчас много чего переделеал. И попробовал вообще без ускорения и интегратора - работает практически так же, т.е. на комнатных тестах разницы не видно. Поэтому отключил ускорение вообще, и заменил его на LPF.
Но тут ты прав - когда режим не задействован, вычисления не идут, и в LPF тоже висит накопленная перед выходом из режима скорость. Но это мне кажется не критично - примерно секунда нужна, чтобы скорость приняла текущие значения при включении режима. Я бы сделал сброс этой переменной, но это усложнит код - так как выход и вход в режим определяется в MultiWii.pde, а вычисления в IMU.pde.
По второму вопросу - если убрать ускорение, то эта проблема тоже решается. Вообще все эти переходные процессы при входе в режим длятся мало и это не столь критично при больших скоростях - там все равно разброс результатов корреции до десятка метров. А вот при подруливании на месте могут вылезать эти пороговые эффекты. Ну это будет видно на тестах. В комнате я на площади в 2 метра им подруливал в том режиме - контроль достаточно хороший.
Оказывается, Flymentor использует примитивный оптический сенсор от мышки, с большой долей вероятности это ADNS-2610. rcopen.com/files/4c32fe669970730077ccdbec
Так что его можно подключить к моему алгоритму, нужно немного дописать чтение/запись и работу с регистрами. Если у кого есть такая железка и есть желание попробовать, напишите.
Судя по картинке - выводы такие:
Yellow - SCK
White - SDIO
Red - +5V
Black - Ground
Подключили 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”
Я ничего не понял 😦
Подключили 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 такой
может такое собрать?, приехал мне 5050, сижу его смотрю )
или сразу совместить с гпс?
Т.е. adns5050 на i2c повесить? Думаю оссобо нет смысла т.к. он на любые датапины легко вешается…
Т.е. adns5050 на i2c повесить? Думаю оссобо нет смысла т.к. он на любые датапины легко вешается…
ну вроде как один фиг, попробую сначала так)
может такое собрать?,
Это уже выше моего понимания 😃 А насчет совмщения с GPS - вполне реально: чтобы не загружать основной проц, всякие фичи типа gps, сонара и оптического сенсора, лучше выносить на другой. Но проблема в том, что для обсчета нужны прочие данные типа высоты, ускорнения, угла. Получается надо между двумя мозгами это гонять. Насколько быстрая I2C, будет ли тут профит?
Это уже выше моего понимания 😃 А насчет совмщения с GPS - вполне реально: чтобы не загружать основной проц, всякие фичи типа gps, сонара и оптического сенсора, лучше выносить на другой. Но проблема в том, что для обсчета нужны прочие данные типа высоты, ускорнения, угла. Получается надо между двумя мозгами это гонять. Насколько быстрая I2C, будет ли тут профит?
ну соответсвенно и моего , ибо собрать железо это пол беды, а заставить его работать в смысле накодить под него это уже выше моего понимания))
вот еще чего, был на рынке в поисках линзы, нашел лазер брелок за бакс, и вспомнил что у меня в мыльнице sony dsc v1 есть вот такая чудесная фича для фокусировки в полной темноте,
снято в полной темноте, к слову снята сетка на 5DII который вечером уже шуршит объективом и нифига не фокусируется, а по этой сетке аж бегом) ума не приложу почему так не делают везде)
взял брелочек этот, поставил 30 сек выдержки , и вот
я к тому что а если замутить штуковину как на концертах рисует? колесико, на нем 8 зеркал которое крутится и серва постоянно расшатывает, ночью будет до пары метров зарисовывать квадрат скажем 1,5x1,5 метра
развел печатку под это дело
тут еще надо закладываться на крепление линзы, причем той которая есть в наличии…
вот мой хардкор, где в качестве макетки платка от мышки с другим сенсором, который успешно удален, дорожки перецарапаны + добавлен навесной монтаж…
из того что под руками было одним словом ))
тут еще надо закладываться на крепление линзы, причем той которая есть в наличии…
Ага, самое главное камеру найти и притулить, а сам сенсор и разводить особо не надо, на монтажке за 10 минут все разводится.
я к тому что а если замутить штуковину как на концертах рисует? колесико, на нем 8 зеркал которое крутится и серва постоянно расшатывает, ночью будет до пары метров зарисовывать квадрат скажем 1,5x1,5 метра
Ну в зералках фазовый автофокус - совсем другой прнцип, для него и такого света хватит. А нашему сенсору надо дневной свет, это на порядки ниже чувствительность. Думаю даже мощные LED прожекторы не помогут по ночи летать.
пока рылся в закладках своих ты уже и нашел 😉
пока рылся в закладках своих ты уже и нашел 😉
на multiwii форуме нашел ссылку от товарища LuFa, ну а там уже дальше порылся и нашел под это чудо майкрософта))
по сложившейся традиции фото на сенсор 😃
оно в сборе с чуть подпиленым объективом от ip камеры dlink dsc 910
Печатка в lay
adns_5050_dimm168pin.zip
свои идеи которые я высказывал выше смело отправил в помойку, объектив от камеры сам по себе никакой, по этой причине я его собственно и заменил на ip камере на более светосильный и широкоугольный, освещенность объекта довольно критична оказалось, наверно проведу несколько тестов прежде чем окончательно подключать к вию что бы примерно понимать когда сенсор работает , а когда ему уже темно, вывод, искать нечто светосильное и одновременно легкое )
Или каким-то чудом подстроить коэффициент усиления сенсора, хотя сомневаюсь в живучести этой идеи.
еще одна бредовая идея) отверстие в корпусе сенсора мелкого диаметра,назовем его диафрагмой, сенсор явно больше , а если мы его так назвали-то можем в принципе его приоткрыть как и в фотоаппарате, немного потеряв в глубине резкости, но значительно увеличим светосилу) (светосила это в упрощение как и у снайперов, отношение входного отверстия к выходному) жаль что заказал только один сенсор, боюсь что в ходе эксперимента могу нанести непоправимые повреждения)
оно в сборе с чуть подпиленым объективом от ip камеры dlink dsc 910
ух ты! ты чё резьбу прям в текстолите нарезал?! реальна крута! 😉
еще одна бредовая идея) отверстие в корпусе сенсора мелкого диаметра,назовем его диафрагмой, сенсор явно больше , а если мы его так назвали-то можем в принципе его приоткрыть как и в фотоаппарате, немного потеряв в глубине резкости, но значительно увеличим светосилу) (светосила это в упрощение как и у снайперов, отношение входного отверстия к выходному) жаль что заказал только один сенсор, боюсь что в ходе эксперимента могу нанести непоправимые повреждения)
мне тож эта идейка в голову приходила, т.е. раздрелить дирку сенсора 😃
и т.к. я покупал три микрухи, то решил попробовать для начала просто снять защитную крышку сенсора и поставить линзу на прежнее место…
субъективно стало света больше на 30-50%, т.к. в деталях лица появилось больше оттенков… НО появился явный недостаток сразу. пыль попадает на сенсор и появляется эффект битых пикселов на матрице, что видно в mousecam, не знаю будет ли это мешать сенсору правильно распознавать движение…
п.с. облетать не могу дождж ((
еще один нюанс: должен хорошо или хотяб удовлетворительно держать алт холд… на последних тестах у меня были проблемы с подшипниками и обмотка в одном движке коротила, колбасило как в шторм 😃, потому эффекта стабилизации не заметил, т.к. еле получалось коптер удерживать и посадить 😃
и еще вопрос Алексею: подбирал знаки сенсоров и разбирался по коду… для правильной компенсации переменные optflow_pos[ROLL] и optflow_pos[PITCH] должны быть положительными при движении вправо и вверх?
ух ты! ты чё резьбу прям в текстолите нарезал?! реальна крута! 😉
Да нет, оно прекрасно село на супер клей) линза легкая ибо корпус пластик)
субъективно стало света больше на 30-50%, т.к. в деталях лица появилось больше оттенков… НО появился явный недостаток сразу. пыль попадает на сенсор и появляется эффект битых пикселов на матрице, что видно в mousecam, не знаю будет ли это мешать сенсору правильно распознавать движение…
У меня там получается дырка очень точно подогнана под корпус сенсора, и можно банально залить суперклеем все щели, ну а линза на нем же, т.е проблема пыли исключается таким образом.
п.с. облетать не могу дождж ((
еще один нюанс: должен хорошо или хотяб удовлетворительно держать алт холд… на последних тестах у меня были проблемы с подшипниками и обмотка в одном движке коротила, колбасило как в шторм , потому эффекта стабилизации не заметил, т.к. еле получалось коптер удерживать и посадить
Ну для алтхолда чего надо? у меня просто аксель и все, но по высоте оно плавает постоянно ибо ни сонара ни баро нету, и аксель 345ый не калиброваный по всем осям.
Конечно могу по быстрому все повесить , только платку для баро сваять надо, все руки не доходят)
если что трешка моя на твоей 1.9а2
www.youtube.com/watch?v=9D4j5IYN8LI&list=UUVYE1SBV…
гира 3205 аксель 345 и компас
может и так хватит?)
Попробуй, но из наблюдений optflow алгоритм слегка раскачивает коптер в процессе стабилизации и высота начинает плавать сильнее…
Кроче облетал сегодня еще раз, после косметического ремонта. Заменил мотор, откалибровал моторы, потом пропы новые с рцтаймера… врубил альтхолд на высоте метра по сонару, затем поз.холд. Обрадовался! Работает! Решил заснять на мобилу, а коптер как газонет на метров 5 вверх, пока сорентировался, коптер уже летел в тачку припаркованную… успел только газ сбросить… погнул луч и наверное подпортил мотор, т.к. вернулись вибрации и даже в акро не смог справляться после мелкого ремонта на месте…
Завязываю кроче с альтхолдом по акселю… сил нет больше ((