Cuprins:

Procesor Raspberry PI Vision (SpartaCam): 8 pași (cu imagini)
Procesor Raspberry PI Vision (SpartaCam): 8 pași (cu imagini)

Video: Procesor Raspberry PI Vision (SpartaCam): 8 pași (cu imagini)

Video: Procesor Raspberry PI Vision (SpartaCam): 8 pași (cu imagini)
Video: Vision Processing: Pi Performance Improvement - Part 10 2024, Iulie
Anonim
Procesor Raspberry PI Vision (SpartaCam)
Procesor Raspberry PI Vision (SpartaCam)
Procesor Raspberry PI Vision (SpartaCam)
Procesor Raspberry PI Vision (SpartaCam)

Un sistem de procesor de viziune Raspberry PI pentru robotul dvs. FIRST Robotics Competition

Despre FIRST

Din Wikipedia, enciclopedia gratuită

FIRST Robotics Competition (FRC) este o competiție internațională de robotică de liceu. În fiecare an, echipe de liceeni, antrenori și mentori lucrează pe o perioadă de șase săptămâni pentru a construi roboți de joc care cântăresc până la 120 de kilograme (54 kg). Roboții îndeplinesc sarcini cum ar fi marcarea mingilor în poartă, zborul discurilor în poartă, tuburile interioare pe rafturi, agățarea de bare și echilibrarea roboților pe grinzile de echilibru. Jocul, împreună cu setul necesar de sarcini, se schimbă anual. În timp ce echipelor li se oferă un set standard de piese, li se permite și un buget și sunt încurajate să cumpere sau să facă piese specializate.

Jocul din acest an (2020) REÎNCĂRCARE INFINITĂ. Jocul Infinite Recharge implică două alianțe formate din trei echipe fiecare, fiecare echipă controlând un robot și îndeplinind sarcini specifice pe un teren pentru a obține puncte. Jocul se concentrează în jurul unei teme futuriste a orașului, care implică două alianțe formate din trei echipe care concurează fiecare pentru a îndeplini diverse sarcini, inclusiv tragerea de bile de spumă cunoscute sub numele de Power Cells în obiective înalte și mici pentru a activa un Shield Generator, manipularea unui panou de control pentru a activa acest scut, și întoarcerea la Shield Generator pentru a parca sau a urca la sfârșitul meciului. Obiectivul este de a energiza și activa scutul înainte ca meciul să se termine și asteroizii lovesc FIRST City, un oraș futurist modelat după Războiul Stelelor.

Ce face sistemul procesor de viziune Raspberry PI?

Camera va putea scana terenul de joc și locațiile țintă în care piesele de joc sunt furnizate sau trebuie plasate pentru a marca. Ansamblul are 2 conexiuni, alimentare și Ethernet.

Obiectivele vizuale pe terenul de joc sunt conturate cu bandă retro-reflectorizantă, iar lumina se va reflecta înapoi la obiectivul camerei. Pi-ul care rulează codul sursă deschisă de la Chameleon Vision (https://chameleon-vision.readthedocs.io/en/latest/…) va procesa vizualizarea, o va evidenția, va adăuga suprapuneri de imagini și pitch de ieșire, yaw, contur și poziția ca valorile matricei ordonate prin x și y în metri și unghiul în grade împreună cu alte date printr-un tabel de rețea. Aceste informații vor fi utilizate în software pentru a ne controla robotul în mod autonom, precum și pentru a ținti și a trage cu shooter-ul nostru cu ture. Alte platforme software pot fi rulate pe Pi. Viziunea FRC poate fi instalată dacă echipa dvs. a investit deja timpul software în acea platformă.

Bugetul nostru a fost redus anul acesta și achiziționarea unei camere Limelight de 399 USD (https://www.wcproducts.com/wcp-015) nu era în carduri. Aprovizionând toate consumabilele de la Amazon și folosind imprimanta 3D Team 3512 Spartatroniks am reușit să împachetez un sistem de vizualizare personalizat pentru 150,00 USD. Unele articole au venit în bloc, pentru a construi un al doilea coprocesor ar fi nevoie doar de un alt Raspberry Pi, cameră PI și ventilator. Cu ajutorul CAD al uneia dintre echipele Mentori (mulțumesc Matt), carcasa PI a fost creată folosind Fusion 360.

De ce nu folosiți doar un Pi cu carcasă ieftină, conectați o cameră USB, adăugați o lumină inelară, instalați Chameleon vision și gata, nu? Ei bine, am vrut mai multă putere și mai puține cabluri și factorul de răcire al unui sistem personalizat.

Un Pi 4 folosește 3 amperi dacă rulează cu plictiseală completă, asta dacă folosește majoritatea porturilor sale, WiFi și rulează un afișaj. Nu facem asta pe roboții noștri, dar porturile USB de pe roboRIO https://www.ni.com/en-us/support/model.roborio.ht… sunt evaluate la 900 ma, regulatorul de tensiune modual (VRM) 5 volți alimentează până la 2 amperi de vârf, limită de 1,5 amperi, dar este un conector partajat, deci dacă un alt dispozitiv se află pe magistrala de 5 volți, există posibilitatea unei întreruperi. VRM furnizează, de asemenea, 12 volți la 2 amperi, dar folosim ambele conexiuni pentru a alimenta radioul nostru folosind un cablu POE și o conexiune barilă pentru redundanță. Unii inspectori FRC nu vor permite ca nimic altceva în afară de ceea ce este imprimat pe VRM să fie conectat acolo. Deci, la 12 volți de la PDP pe un Breaker de 5 amperi este locul în care Pi trebuie alimentat.

12 volți sunt furnizați printr-un întrerupător de 5 amp de pe panoul de distribuție a energiei (PDP), sunt convertiți la 5,15 volți utilizând un convertor LM2596 DC-DC Buck. Convertorul Buck furnizează 5 volți la 3 amperi și rămâne în reglare până la 6,5 volți de intrare. Această magistrală de 5 volți oferă apoi energie pentru 3 subsisteme, matrice de inele cu LED-uri, ventilator, Raspberry Pi.

Provizii

  • 6 pachete LM2596 DC la DC Buck Converter 3,0-40V la 1,5-35V Modul de alimentare redusă (pachet de 6) 11,25 USD
  • Noctua NF-A4x10 5V, ventilator silențios premium, 3 pini, versiune 5V (40x10mm, maro) 13,95 USD
  • SanDisk Ultra 32GB microSDHC UHS-I card cu adaptor - 98MB / s U1 A1 - SDSQUAR-032G-GN6MA 7,99 USD
  • Raspberry Pi Camera Module V2-8 Megapixel, 1080p 428.20
  • Radiator GeeekPi Raspberry Pi 4, 20 buc Radiatoare din aluminiu Raspberry Pi cu bandă adezivă termoconductivă pentru Raspberry Pi 4 Model B (placa Raspberry Pi nu este inclusă) 7,99 USD
  • Raspberry Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (4 GB) 61,96 USD
  • (Pachet de 200 de bucăți) 2N2222 tranzistor, 2N2222 to-92 tranzistor NPN 40V 600mA 300MHz 625mW prin orificiu 2N2222A 6,79 USD
  • EDGELEC 100buc Rezistență de 100 ohmi 1 / 4w (0,25 wați) ± 1% Toleranță Rezistență fixă cu film metalic Becuri cu iluminare super intensă de înaltă intensitate Componente electronice Diodele lămpii 6,30 USD
  • J-B Weld Plastic Bonder 5,77 USD

Pasul 1: Prototipul 1

Prototipul 1
Prototipul 1

Primul test în ambalaj:

Echipa avea un Pi 3 dintr-un an anterior care era disponibil pentru testare. A fost adăugată o cameră pi, un circuit DC-DC buck / boost și o lumină de inel Andymark.https://www.andymark.com/products/led-ring-green.

În acest moment nu luasem în considerare Pi 4, așa că nu eram îngrijorat de nevoile de energie. Alimentarea a fost furnizată prin USB de la roboRIO. Camera se potrivește în carcasă fără modificări. Lumina inelului a fost lipită la cald de capacul carcasei și a fost conectată la placa de alimentare. Placa boost a fost conectată la porturile GPIO 2 și 6 pentru 5 volți, iar ieșirea a fost ajustată până la 12 volți pentru a rula inelul. Nu exista spațiu în interiorul carcasei pentru placa de creștere, deci era și lipit la exterior. Software-ul a fost instalat și testat folosind ținte din anul de joc 2019. Echipa de software a dat un deget mare, așa că am comandat un Pi 4, radiatoare și un ventilator. Și, în timp ce noi mergeam acolo, incinta a fost proiectată și imprimată 3D.

Pasul 2: Prototipul 2

Prototip 2
Prototip 2
Prototip 2
Prototip 2
Prototip 2
Prototip 2

Dimensiunile interne ale incintei au fost OK, dar locațiile portului au fost compensate, nu un opritor de spectacol.

Acest lucru a fost finalizat imediat după dezvăluirea noului joc, astfel încât software-ul să poată testa împotriva noilor locații țintă.

Vești bune și vești proaste. Ieșirea luminii inelului nu a fost adecvată atunci când ne-am aflat la o distanță mai mare de 15 picioare de țintă, astfel încât timpul să ne regândim iluminarea. Deoarece au fost necesare schimbări, consider că această unitate este prototipul 2.

Pasul 3: Prototipul 3

Prototipul 3
Prototipul 3
Prototipul 3
Prototipul 3

Prototipul 2 a fost lăsat împreună, astfel încât software-ul să poată continua să-și rafineze sistemul. Între timp, a fost găsit un alt Pi 3 și am coborât împreună un alt pat de testare. Acesta avea un Pi3, o cameră de viață USB 3000 lipită direct pe placă, un convertor boost și o matrice de diode lipite manual.

Din nou vești bune, vești proaste. Matricea ar putea lumina o țintă de la 50 + picioare distanță, dar ar pierde ținta dacă ar fi un unghi mai mare de 22 de grade. Cu această informație s-ar putea realiza sistemul final.

Pasul 4: Produsul final

Produs final
Produs final
Produs final
Produs final
Produs final
Produs final

Prototipul 3 avea 6 diode la aproximativ 60 de grade distanță și orientate direct în față.

Modificările finale au fost adăugarea a 8 diode distanțate la 45 de grade în jurul obiectivului, cu 4 diode orientate în față și 4 diode înclinate 10 grade, oferind un câmp vizual de 44 de grade. Acest lucru permite, de asemenea, montarea carcasei pe verticală sau orizontală pe robot. O nouă incintă a fost tipărită cu modificări pentru a găzdui un Pi 3 sau Pi 4. Fața incintei a fost modificată pentru diodele individuale.

Testarea nu a arătat probleme de performanță între Pi 3 sau 4, astfel încât deschiderile incintei au fost realizate pentru a permite instalarea oricărui Pi. Punctele de montare din spate au fost îndepărtate, precum și orificiile de evacuare din partea superioară a cupolei. Utilizarea unui Pi 3 va reduce și mai mult costul. Pi 3 rulează mai rece și folosește mai puțină energie. În cele din urmă am decis să folosim PI 3 pentru economii de costuri, iar echipa software a dorit să folosească un cod care să ruleze pe Pi 3 care nu a fost actualizat pentru Pi 4.

Importați STL în feliatorul imprimantelor 3D și plecați. Acest fișier este în inci, deci dacă aveți un feliator ca Cura, va trebui probabil să scalați piesa la% 2540 pentru ao converti în metrică. Dacă aveți Fusion 360, fișierul.f3d poate fi modificat în funcție de nevoile dvs. Am vrut să includ un fișier.step, dar instructibilele nu vor permite încărcarea fișierelor.

Instrumente de bază necesare:

  • Decapanti de sârmă
  • Cleşte
  • Ciocan de lipit
  • Tuburi termocontractabile
  • Freze de sârmă
  • Lipire fără plumb
  • Flux
  • Mâinile ajutătoare sau forcepsul
  • Pistol cu aer cald

Pasul 5: matrice de diode de cablare

Cablare diodă matrice
Cablare diodă matrice
Cablare diodă matrice
Cablare diodă matrice
Cablare diodă matrice
Cablare diodă matrice

Aviz de siguranță:

Fier de lipit Nu atingeți niciodată elementul de lipit….400 ° C! (750 ° F)

Țineți firele pentru a fi încălzite cu pensete sau cleme.

Păstrați buretele de curățare umed în timpul utilizării.

Întoarceți întotdeauna fierul de lipit pe suportul său atunci când nu îl folosiți.

Nu puneți-l niciodată pe bancul de lucru.

Opriți unitatea și deconectați-o atunci când nu o folosiți.

Lipire, flux și curățătoare

Purtați protecție pentru ochi.

Lipirea poate „scuipa”.

Folosiți lipitori fără colofoniu și fără plumb ori de câte ori este posibil.

Păstrați solvenții de curățare în sticle de dozare.

Spălați-vă întotdeauna mâinile cu apă și săpun după lipire.

Lucrați în zone bine ventilate.

OK permite să începem să lucrăm:

Fața incintei a fost imprimată cu găuri de diodă la 0, 90, 180, 270 puncte sunt înclinate la 10 grade afară. Găurile la 45, 135, 225, 315 puncte sunt drepte.

Așezați toate diodele în fața carcasei pentru a verifica dimensiunea găurii de 5 mm. O potrivire strânsă va menține diodele îndreptate spre unghiul corect. Conducta lungă pe o diodă este anodul, lipind un rezistor de 100 ohmi la fiecare diodă. Conductele de lipit ale diodei și rezistorului se închid și lasă un cablu lung pe cealaltă parte a rezistorului (vezi fotografiile). Testați fiecare combo înainte de a merge mai departe. Bateria AA și 2 cabluri de testare vor aprinde slab dioda și vor verifica polaritatea corectă.

Puneți comoda diodă / rezistor înapoi în incintă și poziționați cablurile într-un model în zig-zag, astfel încât fiecare cablu de rezistență să atingă următorul rezistor pentru a crea un inel. Lipiți toate conductele. Aș amesteca niște sudură J-B Plastic Bonder (https://www.amazon.com/J-B-Weld-50133-Tan-1-Pack) și aș epoxida comoda diodă / rezistor în loc. Am considerat super-adeziv, dar nu eram sigur dacă Cyanoacrylate-ul ar aburit obiectivul diodei. Am făcut acest lucru la sfârșitul tuturor lipirilor, dar mi-aș dori să fi făcut-o aici pentru a reduce frustrarea atunci când diodele nu ar ține loc în timpul lipirii. Epoxidul se instalează în aproximativ 15 minute, deci un loc bun pentru a face o pauză.

Acum, toate cablurile catodului pot fi lipite împreună pentru a crea inelul - sau la sol. Adăugați fire roșii și negre de calibru 18 la inelul diodei. Testați gama completă utilizând o sursă de alimentare de 5 volți, încărcătorul USB funcționează bine pentru acest lucru.

Pasul 6: Cablare Buck / Boost

Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost
Cablare Buck / Boost

Înainte de a face cablul în convertorul Buck, va trebui să setăm tensiunea de ieșire. Deoarece folosim PDP pentru a furniza cei 12 volți pe care i-am conectat direct la un port PDP, fuzionat la 5 amperi. Prindeți un voltmetru la ieșirea plăcii și începeți să rotiți potențiometrul. Va dura destul de multe rotații înainte de a vedea o schimbare, deoarece placa este testată din fabrică la ieșire completă, apoi lăsată la acea setare. Setați la 5,15 volți. Stabilim o înălțime de câteva milivolți pentru a se potrivi cu ceea ce se așteaptă să vadă Pi de la un încărcător USB și orice încărcare de linie de la ventilator și matrice de diode. (În timpul testelor inițiale am văzut mesaje de neplăcere de la Pi care se plângeau de tensiunea redusă a autobuzului. O căutare pe internet ne-a oferit informațiile că Pi aștepta mai mult de 5,0 volți, deoarece majoritatea încărcătoarelor sting puțin mai mult, iar sursa de alimentare tipică pentru un Pi este un încărcător USB.)

În continuare trebuie să pregătim cazul:

Convertorul Buck și Pi sunt ținute cu 4-40 șuruburi. Burghiul # 43 este ideal pentru crearea de găuri precise pentru lipirea a 4-40 de fire. Țineți convertorul Pi și buck la standoffs, marcați apoi găuriți folosind burghiul # 43. Înălțimea distanțelor permite suficientă adâncime pentru a mări fără a trece complet prin spate. Atingeți găurile cu un robinet orb 4-40. Șuruburile autofiletante utilizate în plastic ar funcționa bine aici, dar am avut la dispoziție 4-40 șuruburi, deci asta am folosit. Sunt necesare șuruburi pentru a permite accesul la cardul SD (nu este prevăzut acces extern la card cu această carcasă).

Următoarea gaură de găurit este pentru cablul de alimentare. Am ales un punct în colțul de jos, astfel încât să ruleze de-a lungul părții laterale a cablului Ethernet în exterior și în lateral și apoi sub Pi intern. Am folosit un cablu ecranat cu 2 fire, ca ceea ce aveam la îndemână, orice pereche de fire de calibru 14 va funcționa. Dacă folosiți o pereche de sârmă fără cămașă, puneți 1 până la 2 straturi de căldură pe firul unde intră în incintă pentru protecție și ameliorare a tensiunii. Dimensiunea orificiului va fi determinată de alegerea firului dvs.

Acum puteți lipi firele pe liniile de intrare de pe convertorul DC-DC. Conexiunile sunt etichetate pe tablă. Sârmă roșie în + Sârmă neagră în în-. Ieșind din tablă am lipit 2 fire goale scurte pentru a acționa ca stâlp de sârmă pentru a lega ventilatorul, Pi și tranzistorul.

Pasul 7: Cablare finală și epoxidică

Cablare finală și epoxidică
Cablare finală și epoxidică
Cablare finală și epoxidică
Cablare finală și epoxidică
Cablare finală și epoxidică
Cablare finală și epoxidică

Doar 4 conexiuni sunt realizate la Pi. Masă, alimentare, control LED și cablu panglică de interfață a camerei.

Cei 3 pini folosiți pe Pi sunt 2, 6 și 12.

Tăiați un fir roșu, alb-negru la 4 inci. Îndepărtați izolarea de 3/8 inci de la ambele capete ale firelor, capetele de tablă ale firelor și știfturile de tablă de pe Pi.

  • Lipiți firul roșu la pinul GPIO 2 alunecați 1/2 inch de tub termocontractabil aplicați căldură.
  • Lipiți firul negru la pinul GPIO 6 alunecați 1/2 inch de tub termocontractabil aplicați căldură.
  • Lipiți firul alb la pinul GPIO 12 alunecați 1/2 inch de tub termocontractabil aplicați căldură.
  • Sârmă roșie de lipit pentru a se scoate +
  • Sârmă neagră pentru lipit
  • Adăugați termocontractor de 1 inch la firul alb și lipiți la rezistorul de 100 ohmi și de la rezistor la baza tranzistorului. Izolați cu căldură.
  • Emițător tranzistor la Buck -
  • Colector de tranzistor pe partea catodică a matricei de diode
  • Matrice de diode Anod / Rezistor la Buck +
  • Sârmă roșie ventilator pentru a scoate +
  • Sârmă neagră pentru ventilator

Ultima conexiune:

Introduceți cablul de interfață al camerei. Conexiunea prin cablu utilizează un conector zif (forță de inserție zero). Banda neagră de pe partea superioară a conectorului trebuie ridicată, cablul plasat în priză, apoi conectorul este împins înapoi pentru al bloca în poziție. Aveți grijă să nu sârmați cablul, deoarece urma izolației se poate rupe. De asemenea, conectorul trebuie introdus drept pentru ca cablul panglică să alinieze pinul.

Verificați-vă munca pentru fire fără fir și pete de lipit, fixați orice lungime în exces pe stâlpii de lipit.

Dacă sunteți mulțumit de munca dvs., ventilatorul și camera pot fi epoxizate la locul lor. Câteva picături la colțuri este tot ce aveți nevoie.

Pasul 8: Software

Software
Software
Software
Software
Software
Software
Software
Software

În timp ce epoxidicul se vindecă, permite introducerea de software în cardul SD. veți avea nevoie de un adaptor de card SD pentru a vă conecta la computer (https://www.amazon.com/Reader-Laptop-Windows-Chrom….

Mergi la:

www.raspberrypi.org/downloads/raspbian/ și descărcați Raspbian Buster Lite. Pentru a bloca cardul SD cu raspbian veți avea nevoie de un alt instrument software BalenaEtcher și acesta poate fi găsit aici, Epoxidicul ar fi trebuit să se vindece suficient până acum încât să puteți instala cardul SD și să înșurubați placa Buck / Boost. Înainte de a închide capacul, verificați dacă niciun fir nu interferează cu capacul, iar cablul camerei nu atinge paletele ventilatorului. După ce capacul este în poziție, suflu ventilatorul și mă uit pentru a vedea cum se mișcă pentru a mă asigura că nu există interferențe de la fire sau cablul cu bandă.

Timpul de pornire:

Pentru prima dată, veți avea nevoie de un cablu HDMI, dacă un Pi 4 un cablu mini HDMI, tastatură USB și monitor HDMI împreună cu o conexiune la internet. Sârmă la o sursă de alimentare de 12 volți, PDP cu un întrerupător de 5 amp.

După conectare, primul lucru de făcut este să executați instrumentul de configurare. Aici se poate seta SSH împreună cu activarea camerei PI. https://www.raspberrypi.org/documentation/configur… are instrucțiuni de ajutor.

Reporniți înainte de a instala Chameleon Vision

Vă rugăm să vizitați site-ul lor înainte de a utiliza software-ul lor, au o mulțime de informații. O notă, pe pagina lor hardware acceptată, camera Pi este afișată ca neacceptată, dar este cu cea mai nouă versiune a acestora. Pagina web trebuie actualizată.

Din pagina web Chameleon vision:

Chameleon Vision poate rula pe majoritatea sistemelor de operare disponibile pentru Raspberry Pi. Cu toate acestea, este recomandat să instalați Rasbian Buster Lite, disponibil aici https://www.raspberrypi.org/downloads/raspbian/. Urmați instrucțiunile pentru a instala Raspbian pe un card SD.

Asigurați-vă că Raspberry Pi este conectat prin Ethernet la Internet. Conectați-vă la Raspberry Pi (numele de utilizator pi și parola raspberry) și rulați următoarele comenzi în terminal:

$ wget https://git.io/JeDUk -O install.sh

$ chmod + x install.sh

$ sudo./install.sh

$ sudo reporniți acum

Felicitări! Raspberry Pi este acum configurat pentru a rula Chameleon Vision! Odată ce Raspberry Pi a repornit, Chameleon Vision poate fi pornit cu următoarea comandă:

$ sudo java -jar chameleon-vision.jar

Când este lansată o nouă versiune a Chameleon Vision, actualizați-o executând următoarele comenzi:

$ wget https://git.io/JeDUL -O update.sh

$ chmod + x update.sh

$ sudo./update.sh

Control LED matrice:

Tabloul dvs. de LED-uri nu se va aprinde fără controlul software-ului

Prima robotică din acest an are o regulă împotriva luminilor cu LED-uri puternice, dar le va permite dacă pot fi oprite și pornite după cum este necesar. Colin Gideon "SpookyWoogin", FRC 3223, a scris un script Python pentru a controla LED-urile și care poate fi găsit aici:

github.com/frc3223/RPi-GPIO-Flash

Acest sistem va rula, de asemenea, viziunea FRC dacă echipa dvs. a investit deja timpul software în acea platformă. Cu viziunea FRC, cardul SD complet este imaginat, deci nu este nevoie să descărcați raspbian. Obțineți-l aici

Acest lucru vă va oferi un sistem de viziune într-un factor de formă rece. Mult succes la concursuri!

Concursul Raspberry Pi 2020
Concursul Raspberry Pi 2020
Concursul Raspberry Pi 2020
Concursul Raspberry Pi 2020

Locul doi în concursul Raspberry Pi 2020

Recomandat: