- Потребан хардвер:
- Захтев за програмирање:
- Подешавање обраде на Распберри Пи:
- Кружни дијаграм:
- Програм праћења куглица Распберри Пи:
- Рад робота за праћење куглица Распберри Пи:
Подручје роботике, вештачке интелигенције и машинског учења убрзано се развија и сигурно ће променити начин живота човечанства у блиској будућности. Сматра се да роботи разумеју и комуницирају са стварним светом помоћу сензора и обраде машинског учења. Препознавање слика је један од популарних начина на који се сматра да роботи разумију предмете гледајући стварни свет кроз камеру баш као и ми. У овом пројекту, искористите моћ Распберри Пи-а за изградњу робота који може пратити лоптицу и пратити је попут робота који игра фудбал.
ОпенЦВ је врло познат и алат отвореног кода који се користи за обраду слика, али у овом упутству за поједностављивање користимо Процессинг ИДЕ. Будући да је обрада за АРМ такође објавила ГПИО библиотеку за обраду, више нећемо морати да се пребацујемо са питхона на обраду да бисмо радили са Распберри Пи. Звучи цоол зар не? Па кренимо.
Потребан хардвер:
- Распберри Пи
- Модул камере са тракастим каблом
- Робот Цхассис
- Зупчани мотори са точком
- Л293Д возач мотора
- Повер банк или било који други преносни извор напајања
Захтев за програмирање:
- Монитор или други екран за Распберри пи
- Тастер или миш за Пи
- Обрада АРМ софтвера
Напомена: Обавезно је имати екран повезан са Пи преко жица током програмирања, јер се само тада може видети видео са камере
Подешавање обраде на Распберри Пи:
Као што је раније речено, користићемо процесорско окружење за програмирање наше Распберри Пи, а не подразумевани начин употребе питхона. Дакле, следите кораке у наставку:
1. корак: - Повежите Распберри Пи са монитором, тастатуром и мишем и укључите га.
Корак 2: - Уверите се да сте Пи повезани на активну интернет везу јер ћемо преузети неколико ствари.
Корак 3: - Кликните на Процессинг АРМ да бисте преузели ИДЕ за обраду за Распберри Пи. Преузимање ће бити у облику ЗИП датотеке.
Корак 4: - Једном преузето, извуците датотеке из ЗИП мапе у жељеном директоријуму. Управо сам га извукао на радној површини.
Корак 5: - Сада отворите извучену мапу и кликните на датотеку названу обрада. Требало би да отвори прозор као што је приказано доле.
Корак 6: - Ово је окружење у којем ћемо уносити своје кодове. За људе који су упознати са Ардуином, немојте се шокирати ДА ИДЕ изгледа слично Ардуину, па тако и програм.
Корак 7: - Потребне су нам две библиотеке да би наш следећи програм радио, да бисмо га инсталирали, а затим кликните на Скица -> Увези библиотеку -> Додај библиотеку . Отвориће се следећи дијалошки оквир.
Корак 8: - Користите горњи леви оквир за текст да бисте потражили Распберри Пи и притисните Ентер, резултат претраге би требао изгледати отприлике овако.
Корак 9: - Потражите библиотеке под називом „ГЛ Видео“ и „Хардваре И / О“ и кликните на „Инсталл“ да бисте их инсталирали. Обавезно инсталирајте обе библиотеке.
10. корак: - На основу вашег интернета инсталација ће трајати неколико минута. Када завршимо, спремни смо за обраду софтвера.
Кружни дијаграм:
Дијаграм кола овог Пројекта праћења куглица Распберри Пи приказан је испод.
Као што видите, склоп укључује ПИ камеру, модул управљачког програма мотора и пар мотора повезаних са Распберри пи. Комплетно коло напаја мобилна банка напајања (представљена ААА батеријом у горњем колу).
Будући да детаљи о иглама нису наведени на Распберри Пи-у, морамо да их верификујемо користећи доњу слику
За погон мотора потребна су нам четири клина (А, Б, А, Б). Ова четири пина су повезана са ГПИО14,4,17 односно 18. Наранџаста и бела жица заједно чине везу за један мотор. Дакле, имамо два таква пара за два мотора.
Мотори су повезани са модулом Л293Д Мотор Дривер, као што је приказано на слици, а покретачки модул напаја банка напајања. Уверите се да је уземљење банке напајања повезано са уземљењем Распберри Пи, само тада ће ваша веза функционисати.
То је то што смо завршили са хардверском везом, вратимо се нашем окружењу за обраду и започимо са програмирањем да бисмо научили нашег робота како да прати лопту.
Програм праћења куглица Распберри Пи:
Комплетан Обрада Програм овог пројекта је дат на крају ове странице, коју директно користити. Даље, одмах испод, објаснио сам рад кода како бисте га могли користити за друге сличне пројекте.
Концепт програма је врло једноставан. Иако је намера пројекта да прати лопту, ми то заправо нећемо учинити. Само ћемо идентификовати лопту помоћу њене боје. Као што сви знамо, видео записи нису ништа друго до непрекидни оквири слика. Дакле, узмемо сваку слику и поделимо је у пикселе. Затим упоређујемо сваку боју пиксела са бојом куглице; ако је пронађена утакмица онда можемо рећи да смо пронашли лопту. Помоћу ових информација такође можемо идентификовати положај лопте (боја пиксела) на екрану. Ако је положај крајње лево, померамо робота удесно, ако је крајње десни, померамо робота улево, тако да положај пиксела увек остаје у центру екрана. Можете погледати видео Цомпутер Висион Даниела Схиффмана да бисте добили јасну слику.
Као и увек започињемо увозом две библиотеке које преузимамо. То се може учинити у следећа два реда. Хардверска И / О библиотека се користи за приступ ГПИО пиновима ПИ директно из окружења за обраду, глвидео библиотека се користи за приступ модулу камере Распберри Пи.
обрада увоза.ио. *; импорт гохаи.глвидео. *;
Унутар подешавање функције смо покрените излаз игле за контролу мотора и добијају видео из пи камере и величине га у прозору величине 320 * 240.
воид сетуп () {величина (320, 240, П2Д); видео = нови ГЛЦаптуре (овај); видео.старт (); трацкЦолор = боја (255, 0, 0); ГПИО.пинМоде (4, ГПИО.ОУТПУТ); ГПИО.пинМоде (14, ГПИО.ОУТПУТ); ГПИО.пинМоде (17, ГПИО.ОУТПУТ); ГПИО.пинМоде (18, ГПИО.ОУТПУТ); }
Празнина реми је као бесконачне петље код унутар ове петље ће бити извршити све док се програм прекинут. Ако је доступан извор камере, читамо видео који излази из њега
воид драв () {бацкгроунд (0); иф (видео.аваилабле ()) {видео.реад (); }}
Тада почињемо да делимо видео кадар на пикселе. Сваки пиксел има вредност црвене, зелене и плаве боје. Ове вредности се чувају у променљивој р1, г1 и б1
фор (инт к = 0; к <видео.видтх; к ++) {фор (инт и = 0; и <видео.хеигхт; и ++) {инт лоц = к + и * видео.видтх; // Шта је тренутна боја у боји цуррентЦолор = видео.пикелс; плутајуће р1 = црвено (цуррентЦолор); флоат г1 = зелена (цуррентЦолор); флоат б1 = плава (цуррентЦолор);
Да бисмо у почетку открили боју кугле, морамо да кликнемо на боју. Једном када кликнете, боја куглице биће сачувана у променљивој која се назива трацкЦолоур .
воид моусеПресс () {// Сачувај боју тамо где се кликне мишем у променљивој трацкЦолор инт лоц = моусеКс + моусеИ * видео.видтх; трацкЦолор = видео.пикелс; }
Када добијемо боју стазе и тренутну боју, морамо их упоредити. Ово поређење користи функцију дист. Проверава колико је тренутна боја блиска боји стазе.
флоат д = дист (р1, г1, б1, р2, г2, б2);
Вредност дист ће бити нула за подударање. Дакле, ако је вредност дист мања од одређене вредности (светски рекорд), претпостављамо да смо пронашли боју трага. Тада добијамо локацију тог пиксела и чувамо га у променљивој најближој Кс и најближој И да бисмо пронашли локацију лопте
иф (д <ворлдРецорд) {ворлдРецорд = д; најближиКс = к; најближиИ = и; }
Такође проналазимо елипсу око пронађене боје да означимо да је боја пронађена. Вредност положаја је такође одштампана на конзоли, ово ће вам много помоћи током отклањања грешака.
иф (ворлдРецорд <10) {// Нацртајте круг на испуни праћеног пиксела (трацкЦолор); строкеВеигхт (4,0); ударац (0); елипса (најближаКс, најближаИ, 16, 16); принтлн (најближиКс, најближиИ);
На крају можемо упоредити положај најближег Кс и најближег И и подесити моторе на такав начин да боја доспева у средину екрана. Доле наведени код се користи за окретање робота удесно, јер је утврђено да је Кс положај боје на левој страни екрана (<140)
ако (најближиКс <140) {ГПИО.дигиталВрите (4, ГПИО.ХИГХ); ГПИО.дигиталВрите (14, ГПИО.ХИГХ); ГПИО.дигиталВрите (17, ГПИО.ХИГХ); ГПИО.дигиталВрите (18, ГПИО.ЛОВ); кашњење (10); ГПИО.дигиталВрите (4, ГПИО.ХИГХ); ГПИО.дигиталВрите (14, ГПИО.ХИГХ); ГПИО.дигиталВрите (17, ГПИО.ХИГХ); ГПИО.дигиталВрите (18, ГПИО.ХИГХ); принтлн ("Скрените десно"); }
На сличан начин можемо проверити положај Кс и И за управљање моторима у жељеном смеру. Као и увек, комплетни програм можете упутити на дно странице.
Рад робота за праћење куглица Распберри Пи:
Кад сте спремни за хардвер и програм, време је да се мало забавите. Пре него што тестирамо свог бота на земљи, требало би да се уверимо да све ради у реду. Повежите свој Пи за надгледање и покретање кода за обраду. Видео фид би требало да видите на малом прозору. Сада унесите лопту у оквир и кликните на њу да бисте научили робота да треба да прати ову одређену боју. Сада померите лопту око екрана и приметили бисте да се точкови окрећу.
Ако све функционише како се очекивало, пустите бота на земљу и почните да се играте с њим. Уверите се да је соба равномерно осветљена за најбоље резултате. Комплетан рад пројекта приказан је у видео снимку испод. Надам се да сте разумели пројекат и уживали сте у изградњи нечег сличног. Ако имате било каквих проблема, слободно их објавите у одељку за коментаре испод или помозите.