Следене на обект, върху EV3

С помощта на уеб камера и набор от образователни ЛЕГО МАЙНДСТОРМС образование EV3 Designer (45544), е възможно да се направи робот, който проследява движещ се обект. Роботът може не само да завъртите камерата по посока на обекта, но също така и за да се поддържа на определено разстояние от нея, т.е. да карам по-близо, ако обектът се отстранява от камерата, или да пътуват по-далеч, ако един обект се приближава. За да научите как да го обсъдим в тази статия.

Следене на обект, върху EV3

обучение

Така че нека да разберат, за което се нуждаем. В допълнение към набора от LEGO МАЙНДСТОРМС образование EV3 (45544). Ние се нуждаем от най-проста уеб камера с USB-връзка с не тежки, можете да поправите за робота. резолюция роля не е от значение, тъй като EV3 власт все още не е достатъчно за обработване на големи изображения.

EV3 да могат да работят с уеб камера, ние ще използваме алтернативен фърмуер Lejos. вместо на стандарта. Това е Lejos, как да се подготвят за първоначално зареждане SD-карта и как се програмира с помощта Lejos, може да прочетете в статията "програмируем робот LEGO Mindstorms EV3 на Java». Обработка на изображения, заснети с камерата, ние ще правим с библиотека OpenCV компютърно зрение. който се появи като част от Lejos във версия 0.9.1. така че тази версия ще използва.

След като сте подготвени EV3 модул за Lejos, че е желателно да се провери дали даден уеб камера с EV3 с прости примери, които могат да бъдат намерени в статията "програмируем робот LEGO Mindstorms EV3 на Java» вижте "Използване на уеб камерата Lejos EV3 за заснемане на изображения. " Ако камерата е в ход, можете да продължите напред.

Това са инструкции за сглобяване "Изследователи EV3»:

Следене на обект, върху EV3

Описание на програмата

След стартиране на програмата, ако всичко е наред, следните индикации се появяват на екрана:

Първият ред казва, че камерата е готова. Следващ пост кани да изберете режима на работа. нормална или отстраняване на грешки. По-долу 2 линии - съвети. В този момент, програмата е в очакване на решението си. Можете да спрете програмата чрез натискане на Esc на EV3 единица или натиснете "нагоре", за да изберете нормален режим, или натиснете "надолу" - за отстраняване на грешки.

Преди да изберете режим за заместване на обектива на камерата, който ще проследявате. В този случай, опитайте се обектът да бъде осветен, както и за бъдещо проследяване. Тя не трябва да бъде една топка. Основното нещо е, че обектът е бил ярки и наситени цветове. Най-добре е да се използва син или зелен цвят.

След това натиснете бутона нагоре или надолу, в зависимост от избрания режим, а роботът ще вземе проба от цвета. В действителност, пробата е взета 7 пъти с леко интервал от време, и крайният цвят се изчислява като средно аритметично от тези 7 проби. Това намалява зависимостта на трептене и настроите баланса на бялото. На екрана се появява:

Тук, роботът казва какъв цвят се получава от камерата в цветовия модел HSV. Първата цифра - един нюанс (Hue), а вторият - Saturation (Насищане), а третият - стойността или яркостта (Value). Цветови тон точно определя цвета. В OpenCV той може да отнеме стойности от 0 до 179 cm. Фигурата по-долу.

Тя е за оттенъка на робота се опитва да определи името на цвета и повдига въпроса син ли е? (Това е синьо?). Отговор то със сигурност не се нуждае от робот съмнение :)

Наситеността и яркостта може да бъде в диапазона от 0 до 255. По-малката насищане, колкото по-близо до бял или сив цвят, ще бъде по-малък интензитет на светлина - колкото по-близо до черно. От което можем да заключим, че по-голяма от стойността на насищане и яркостта, толкова по-лесно ще бъде да се определи цвета и проследяване на обекта.

След вземането на пробата, в една проста програма за действие може да се опише по следния начин: програмата ще контур за правене на снимки с камерата, да ги погледнем в предмета на дейност в същия цвят като цвета на пробата, с малка надбавка, и да се премести на робота, така че карането обекта е около център на рамката и е само за правилния размер. Във всяка итерация, екранът съставен кръг на екрана EV3 на, на мястото, където е намерен обект на рамката и размера на които могат да бъдат определени. Веднага след като роботът губи обекта, той спира и изчаква, докато обектът се появи отново.

За да спрете програмата, натиснете и задръжте клавиша Esc малко.

търсене обект чрез OpenCV

Тук трябва да се направи спирка и пишат отделно, как мога да се търси обект в изображения, заснети с камерата. Това се прави много просто, ние ще търсим петното върху образа на определен цвят - това ще бъде нашата цел.

Ако боята в детайлите, а след това го направи. Първо превеждам получена от изображението от камерата в HSV формат с помощта на функцията cvtColor. В този формат е по-лесно да се намери даден цвят, тъй като тя се определя от само една цифра в интервала от 0 до 179 cm. По-горе.

След това разгледа снимките ние се интересуваме от цветовата слота в рамката. Фактът, че цветът, който първоначално е бил запомнен робот може да варира в зависимост от светлината и сянката, която пада върху обекта. Освен топката, както се вижда от камерата, боядисани нееднороден: в средата на по-лек и по-тъмен към краищата. Ето защо програмата ние използваме интервал. Въпреки това, интервалът не трябва да бъде твърде голям, в противен случай ние ще имаме много грешки.

Програмата използвам тон интервал -10 <= h <= +10. где h – это значение цветового тона снятое во время первой пробы, и интервалы насыщенности и яркости, соответственно, -50 <= s <= 50 и -50 <= v <= 50. Но не больше предельных значений. Т.е. если проба цвета была 109, 208, 251, то искомый интервал будет 99-119, 198-218, 241-255.

Интервалът се търси използване функция inRange. В резултат на това на функцията работа става черно-бяло изображение, където бели точки показват точки, цветът на който е бил в определен интервал от време, както и черно - останалото.

След това, използвайки findContours функционалните намират контурите на белите фигури, т.е. обекти. Разбира се, може да има повече от един обект, но има какво да се направи за него. В този случай, аз избирам най-големият обект намерен.

Това е всъщност всичко. Намерих схема намерих центъра и размер. И в зависимост от това къде веригата, т.е. обектът се намира в картината, аз може да се заключи, когато това е необходимо, за да завъртите камерата и да се премести на робота.

режим на отстраняване на грешки

С нормален режим разбрах, сега ще ти пиша как работи в режим на отстраняване на грешки. Когато натиснете режим "Надолу" е избран - пуснете режим на отстраняване на грешки. В този момент, роботът ще отнеме точно един и същи цвят на пробата и след това се появява следното:

Това е призив за да се гарантира, че вие ​​сте свързани с EV3 с браузър. В програмата на този етап ще се мотае, докато не го направите. EV3 за връзка, за да създадете .html файл със следното съдържание:

Следене на обект, върху EV3

Картината, както можете да видите, малко. Измерване точно 160х120. Повярвайте ми, дори и с подобни размери ще се почувствате спирачките. Въпреки това, този размер е достатъчен, за да следите обекта. В браузъра можете да увеличите, така че не трябва да надникнат в снимката. Ето как изглежда по десетобалната система 200%:

Следене на обект, върху EV3

Една червена линия обгражда намерени библиотека верига OpenCV. а вторият - кръг. където диаметърът на най-големия размер е равен контур центриран в средата на контура.

EV3 на екрана следния текст е написан в този момент:

Следваща режим - маска. В този режим, вие ще видите резултата на функцията inRange OpenCV библиотека.

Следене на обект, върху EV3

Следене на обект, върху EV3

Mode - няма - това е режим, в който изображението в браузъра не излиза. Този режим работи също толкова, ако не отстраняване на грешки.

Така че, аз написах всички мисли, които имах за експеримента се проследяват обекти използване OpenCV библиотека.

При разработването на този експеримент, аз използвах следните статии и източници: