Inhoudsopgave:

Raspberry PI Vision Processor (SpartaCam) - Ajarnpa
Raspberry PI Vision Processor (SpartaCam) - Ajarnpa

Video: Raspberry PI Vision Processor (SpartaCam) - Ajarnpa

Video: Raspberry PI Vision Processor (SpartaCam) - Ajarnpa
Video: Compiling & Decompiling Python Scripts 2024, Juli-
Anonim
Raspberry PI Vision-processor (SpartaCam)
Raspberry PI Vision-processor (SpartaCam)
Raspberry PI Vision-processor (SpartaCam)
Raspberry PI Vision-processor (SpartaCam)

Een Raspberry PI vision-processorsysteem voor uw FIRST Robotics Competition-robot

Over FIRST

Van Wikipedia, de gratis encyclopedie

De FIRST Robotics Competition (FRC) is een internationale roboticacompetitie voor middelbare scholen. Elk jaar werken teams van middelbare scholieren, coaches en mentoren gedurende een periode van zes weken aan het bouwen van game-playing robots die tot 120 pond (54 kg) wegen. Robots voeren taken uit zoals het scoren van ballen in doelen, vliegende schijven in doelen, binnenbanden op rekken, hangen aan staven en balanceren van robots op evenwichtsbalken. Het spel, samen met de benodigde takenset, verandert jaarlijks. Hoewel teams een standaardset onderdelen krijgen, krijgen ze ook een budget en worden ze aangemoedigd om gespecialiseerde onderdelen te kopen of te maken.

Game van dit jaar (2020) ONEINDIG OPLADEN. De Infinite Recharge-game omvat twee allianties van elk drie teams, waarbij elk team een robot bestuurt en specifieke taken op een veld uitvoert om punten te scoren. Het spel draait om een futuristisch stadsthema met twee allianties bestaande uit drie teams die elk strijden om verschillende taken uit te voeren, waaronder het schieten van schuimballen die bekend staan als Power Cells in hoge en lage doelen om een schildgenerator te activeren, een controlepaneel te manipuleren om dit schild te activeren, en aan het einde van de wedstrijd terugkeren naar de Shield Generator om te parkeren of te klimmen. Het doel is om het schild te activeren en te activeren voordat de wedstrijd eindigt en asteroïden FIRST City treffen, een futuristische stad gemodelleerd naar Star Wars.

Wat doet het Raspberry PI vision-processorsysteem?

De camera kan het speelveld en de doellocaties scannen waar speelstukken worden geleverd of moeten worden geplaatst om te scoren. De assembly heeft 2 aansluitingen, voeding en Ethernet.

De zichtdoelen op het speelveld zijn omlijnd met retroreflecterende tape en het licht zal terugkaatsen naar de cameralens. De Pi met open source-code van Chameleon Vision (https://chameleon-vision.readthedocs.io/en/latest/…) zal de weergave verwerken, markeren, afbeeldingsoverlays toevoegen en toonhoogte, gieren, contour en positie weergeven als matrixwaarden gerangschikt op x en y in meters en hoek in graden samen met andere gegevens via een netwerktabel. Die informatie wordt in software gebruikt om onze robot in autonome modus te besturen en om onze geschutskoepel te richten en af te vuren. Andere softwareplatforms kunnen op de Pi worden uitgevoerd. FRC vision kan worden geïnstalleerd als uw team de softwaretijd al in dat platform heeft geïnvesteerd.

Ons budget was krap dit jaar en de aanschaf van een Limelight-camera van $ 399,00 (https://www.wcproducts.com/wcp-015) zat er niet in. Door alle benodigdheden van Amazon te kopen en met behulp van Team 3512 Spartatroniks 3D-printer kon ik een aangepast vision-systeem verpakken voor $ 150,00. Sommige items kwamen in bulk, het opbouwen van een tweede co-processor zou alleen een andere Raspberry Pi, PI-camera en ventilator nodig hebben. Met CAD-hulp van een van de teams Mentors (bedankt Matt) is de PI-behuizing gemaakt met Fusion 360.

Waarom niet gewoon een Pi met goedkope behuizing gebruiken, een USB-camera aansluiten, een ringlicht toevoegen, Chameleon vision installeren en je bent klaar, toch? Nou, ik wilde meer vermogen en minder kabels en de coolheidsfactor van een aangepast systeem.

Een Pi 4 gebruikt 3 ampère als hij op volle kracht draait, dat wil zeggen als hij de meeste van zijn poorten gebruikt, en wifi en een display. We doen dat niet op onze robots, maar de USB-poorten op de roboRIO https://www.ni.com/en-us/support/model.roborio.ht… hebben een vermogen van 900 ma, de modulaire spanningsregelaar (VRM) 5 volt levert een piek van 2 ampère, een limiet van 1,5 ampère, maar het is een gedeelde connector, dus als een ander apparaat op de 5 volt-bus zit, is er een mogelijkheid van een storing. De VRM levert ook 12 volt bij 2 ampère, maar we gebruiken beide aansluitingen om onze radio van stroom te voorzien met een POE-kabel en een vataansluiting voor redundantie. Sommige FRC-inspecteurs staan niet toe dat iets anders dan wat op de VRM is afgedrukt, daar wordt aangesloten. Dus 12 volt van de PDP op een 5 amp Breaker is waar de Pi moet worden gevoed.

12 volt wordt geleverd via een stroomonderbreker van 5 ampère op het stroomverdeelpaneel (PDP), wordt omgezet naar 5,15 volt met behulp van een LM2596 DC naar DC Buck-converter. De Buck-converter levert 5 volt bij 3 ampère en blijft in de regeling tot een ingangsspanning van 6,5 volt. Deze 5 volt-bus levert vervolgens stroom aan 3 subsystemen, LED-ringarray, ventilator, Raspberry Pi.

Benodigdheden

  • 6-pack LM2596 DC naar DC Buck-converter 3,0-40V naar 1,5-35V voeding Step-down-module (6-pack) $ 11,25
  • Noctua NF-A4x10 5V, premium stille ventilator, 3-pins, 5V-versie (40x10 mm, bruin) $ 13,95
  • SanDisk Ultra 32GB microSDHC UHS-I kaart met adapter - 98MB/s U1 A1 - SDSQUAR-032G-GN6MA $7.99
  • Raspberry Pi Camera Module V2-8 Megapixel, 1080p 428.20
  • GeeekPi Raspberry Pi 4 Heatsink, 20PCS Raspberry Pi Aluminium Heatsinks met thermisch geleidende plakband voor Raspberry Pi 4 Model B (Raspberry Pi Board is niet inbegrepen) $7.99
  • Raspberry Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (4GB) $61.96
  • (pak van 200 stuks) 2N2222 Transistor, 2N2222 tot-92 Transistor NPN 40V 600mA 300MHz 625mW Through-hole 2N2222A $6.79
  • EDGELEC 100st 100 ohm Weerstand 1/4w (0.25 Watt) ±1% Tolerantie Metaalfilm Vaste weerstand $5.69 https://smile.amazon.com/gp/product/B07QKDSCSM/re… Waycreat 100PCS 5mm Groene LED-diodelichten Heldere emitterende LED's voor Hoge intensiteit Super heldere verlichting Gloeilampen Elektronica Componenten Lampdiodes $6.30
  • J-B Weld Plastic Bonder $5.77

Stap 1: Prototype 1

Prototype 1
Prototype 1

Eerste test in verpakking:

Het team had een Pi 3 van vorig jaar die beschikbaar was om te testen. Een pi-camera, een DC-DC buck/boost-circuit en een Andymark-ringlicht werden toegevoegd.https://www.andymark.com/products/led-ring-green.

Op dit moment had ik de Pi 4 niet overwogen, dus maakte ik me geen zorgen over de stroombehoeften. Stroom werd geleverd via USB van de roboRIO. De camera past zonder aanpassingen in de case. Het ringlicht was warm gelijmd op het deksel van de behuizing en aangesloten op het boostboard. Het boostboard is aangesloten op de GPIO-poorten 2 en 6 voor 5 volt en de output is aangepast tot 12 volt om de ring te laten werken. Er was geen ruimte in de behuizing voor het boostboard, dus het was ook heet aan de buitenkant gelijmd. Software is geïnstalleerd en getest met behulp van doelen uit het speljaar 2019. Het softwareteam stak een duim omhoog, dus bestelden we een Pi 4, koellichamen en een ventilator. En terwijl we onderweg waren, werd de behuizing ontworpen en 3D-geprint.

Stap 2: Prototype 2

Prototype 2
Prototype 2
Prototype 2
Prototype 2
Prototype 2
Prototype 2

De interne afmetingen van de behuizing waren OK, maar de poortlocaties waren verschoven, geen showstopper.

Dit werd voltooid net na de onthulling van de nieuwe game, zodat software kon testen tegen de nieuwe doellocaties.

Goed nieuws en slecht nieuws. De lichtopbrengst van de ring was niet voldoende toen we meer dan 5 meter van het doel verwijderd waren, dus tijd om de verlichting te heroverwegen. Omdat er veranderingen nodig waren, beschouw ik dit apparaat als prototype 2.

Stap 3: Prototype 3

Prototype 3
Prototype 3
Prototype 3
Prototype 3

Prototype 2 werd bij elkaar gelaten zodat software hun systeem kon blijven verfijnen. Ondertussen werd er nog een Pi 3 gevonden en heb ik nog een testbed in elkaar geflanst. Dit had een Pi3, een USB lifecam 3000 direct op het bord gesoldeerd, een boost-converter en een met de hand gesoldeerde diode-array.

Weer goed nieuws, slecht nieuws. De array kan een doel op 50+ voet afstand verlichten, maar zou het doel verliezen als de hoek groter is dan 22 graden. Met dit stukje informatie kon het uiteindelijke systeem gemaakt worden.

Stap 4: Eindproduct

Eindproduct
Eindproduct
Eindproduct
Eindproduct
Eindproduct
Eindproduct

Prototype 3 had 6 diodes ongeveer 60 graden uit elkaar en recht vooruit gericht.

De laatste veranderingen waren het toevoegen van 8 diodes op een onderlinge afstand van 45 graden rond de lens met 4 diodes naar voren gericht en 4 diodes 10 graden naar buiten gekanteld, wat een gezichtsveld van 44 graden oplevert. Hierdoor kan de behuizing ook verticaal of horizontaal op de robot worden gemonteerd. Er werd een nieuwe behuizing bedrukt met wijzigingen om plaats te bieden aan een Pi 3 of Pi 4. De voorkant van de behuizing werd aangepast voor de afzonderlijke diodes.

Tests hebben geen prestatieproblemen aangetoond tussen Pi 3 of 4, dus de openingen in de behuizing zijn gemaakt om een van beide Pi te kunnen installeren. De achterste bevestigingspunten werden verwijderd, evenals de uitlaatopeningen aan de bovenkant van de koepel. Het gebruik van een Pi 3 zal de kosten verder verlagen. Pi 3 loopt koeler en verbruikt minder stroom. Uiteindelijk hebben we besloten om PI 3's te gebruiken voor de kostenbesparingen en het softwareteam wilde code gebruiken die op de Pi 3 zou draaien die niet was bijgewerkt voor de Pi 4.

Importeer de STL in uw 3D-printersslicer en u kunt aan de slag. Dit bestand is in inches, dus als je een slicer zoals Cura hebt, zul je het onderdeel waarschijnlijk moeten schalen naar %2540 om het naar metrisch te converteren. Als u Fusion 360 heeft, kan het.f3d-bestand naar uw eigen wensen worden aangepast. Ik wilde een.step-bestand opnemen, maar instructables laten niet toe dat de bestanden worden geüpload.

Basisgereedschap nodig:

  • Draadstrippers
  • Tang
  • Soldeerbout
  • Krimpkous
  • Draadsnijders
  • Loodvrije soldeer
  • flux
  • Helpende handen of pincet
  • Hitte geweer

Stap 5: Diode-array bedraden

Bedrading Diode Array
Bedrading Diode Array
Bedrading Diode Array
Bedrading Diode Array
Bedrading Diode Array
Bedrading Diode Array

Veiligheidsmededeling:

Soldeerbout Raak het element van de soldeerbout nooit aan….400°C!(750°F)

Houd de te verwarmen draden vast met een pincet of klemmen.

Houd de reinigingsspons nat tijdens gebruik.

Plaats de soldeerbout altijd terug in de standaard wanneer deze niet in gebruik is.

Leg het nooit op de werkbank.

Schakel het apparaat uit en trek de stekker uit het stopcontact wanneer het niet in gebruik is.

Soldeer, vloeimiddel en reinigingsmiddelen

Draag oogbescherming.

Soldeer kan "spugen".

Gebruik waar mogelijk hars- en loodvrij soldeer.

Bewaar oplosmiddelen in de dispenserflessen.

Was na het solderen altijd je handen met water en zeep.

Werk in goed geventileerde ruimtes.

Oké, laten we aan het werk gaan:

De voorkant van de behuizing is bedrukt met diodegaten op 0, 90, 180, 270 punten zijn 10 graden naar buiten gekanteld. Gaten op 45, 135, 225, 315 punten zijn recht.

Plaats alle diodes in de behuizing om de gatgrootte van 5 mm te controleren. Een strakke pasvorm zorgt ervoor dat de diodes in de juiste hoek blijven wijzen. De lange draad op een diode is de anode, soldeer een weerstand van 100 ohm aan elke diode. Soldeerdraden van de diode en weerstand sluiten en laat een lange draad aan de andere kant van de weerstand (zie foto's). Test elke combo voordat je verder gaat. Een AA-batterij en 2 meetsnoeren zullen de diode zwak verlichten en controleren of u de juiste polariteit hebt.

Plaats de diode/weerstand combo's terug in de behuizing en plaats de draden in een zigzagpatroon zodat elke weerstandsdraad de volgende weerstand raakt om een ring te creëren. Soldeer alle draden. Ik zou wat J-B-las Plastic Bonder (https://www.amazon.com/J-B-Weld-50133-Tan-1-Pack) mengen en de diode / weerstand-combo op zijn plaats epoxyhars. Ik overwoog superlijm, maar was niet zeker of het cyanoacrylaat de diodelens zou beslaan. Ik deed dit aan het einde van al mijn soldeerwerk, maar ik wou dat ik het hier had gedaan om frustratie te verminderen wanneer diodes niet op hun plaats zouden blijven tijdens het solderen. De epoxy is in ongeveer 15 minuten klaar, dus een goede plek om een pauze te nemen.

Nu kunnen alle kathodedraden aan elkaar worden gesoldeerd om de - of aardring te maken. Voeg 18 gauge rode en zwarte draden toe aan uw diodering. Test de voltooide array met behulp van een 5 volt voeding, USB-oplader werkt hier goed voor.

Stap 6: Buck/Boost-bedrading

Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading
Buck/Boost-bedrading

Voordat we de Buck-converter bedraden, moeten we de uitgangsspanning instellen. Omdat we de PDP gebruiken om de 12 volt te leveren, heb ik hem rechtstreeks aangesloten op een PDP-poort, gezekerd op 5 ampère. Klem een voltmeter op de uitgang van het bord en begin met het draaien van de potentiometer. Het duurt nogal wat omwentelingen voordat je een verandering ziet, aangezien het bord in de fabriek is getest op volledige output en vervolgens op die instelling is gelaten. Stel in op 5,15 volt. We stellen een paar millivolt hoog in om overeen te komen met wat de Pi verwacht te zien van een USB-oplader en elke lijnbelasting van ventilator- en diodearray. (Tijdens de eerste tests zagen we hinderlijke berichten van de Pi die klaagden over een lage busspanning. Een zoekopdracht op internet gaf ons de informatie dat de Pi meer dan 5,0 volt verwachtte, aangezien de meeste opladers iets meer uitstoten en de typische voeding voor een Pi is een USB-oplader.)

Vervolgens moeten we de zaak voorbereiden:

De buck-converter en Pi worden vastgehouden met 4-40 machineschroeven. #43 Drill Bit is ideaal voor het maken van precieze gaten voor het tapen van 4-40 draden. Houd de Pi- en buck-converter tegen de afstandhouders, markeer en boor vervolgens met boor # 43. De hoogte van de afstandhouders zorgt voor voldoende diepte om te dille zonder volledig door de achterkant te gaan. Tik de gaten met een blinde tap 4-40. Zelftappende schroeven die in plastic worden gebruikt, zouden hier goed werken, maar ik had de 4-40 schroeven beschikbaar, dus dat was wat ik gebruikte. Er zijn schroeven nodig om toegang te krijgen tot de SD-kaart (bij deze behuizing wordt geen externe toegang tot de kaart geleverd).

Het volgende gat dat u moet boren, is voor uw stroomkabel. Ik koos een punt in de benedenhoek zodat het langs de buitenkant van de Ethernet-kabel zou lopen en naar de zijkant van en dan intern onder de Pi. Ik heb een afgeschermde 2-aderige kabel gebruikt omdat ik deze bij de hand had, elk 14-gauge draadpaar zal werken. Als u een draadpaar zonder mantel gebruikt, plaats dan 1 tot 2 lagen krimpkous op de draad waar deze uw behuizing binnenkomt voor bescherming en trekontlasting. Gatgrootte te bepalen door uw draadkeuze.

Nu kunt u de draden aan de ingangslijnen op de DC-DC-converter solderen. De aansluitingen zijn gelabeld op het bord. Rode draad naar in+ Zwarte draad naar in-. Toen ik uit het bord kwam, soldeerde ik 2 korte blote draden om als draadpost te dienen om de ventilator, Pi en transistor vast te binden.

Stap 7: definitieve bedrading en epoxy

Laatste bedrading en epoxy
Laatste bedrading en epoxy
Laatste bedrading en epoxy
Laatste bedrading en epoxy
Laatste bedrading en epoxy
Laatste bedrading en epoxy

Er worden slechts 4 verbindingen met de Pi gemaakt. Grond, stroom, led-besturing en lintkabel voor camera-interface.

De 3 pinnen die op de Pi worden gebruikt, zijn 2, 6 en 12.

Knip een rode, zwarte en witte draad af tot 4 inch. Strip 3/8 inch van isolatie aan beide uiteinden van draden, tinnen uiteinden van draden en tinnen pinnen op de Pi.

  • Soldeer rode draad aan GPIO pin 2 slip 1/2 inch krimpkous en breng warmte aan.
  • Soldeer zwarte draad aan GPIO-pin 6 slip 1/2 inch krimpkous en breng warmte aan.
  • Soldeer witte draad aan GPIO-pin 12 slip 1/2 inch krimpkous en breng warmte aan.
  • Soldeer rode draad om uit te schakelen +
  • Soldeer zwarte draad om uit te buck-
  • Voeg 1 inch krimpkous toe aan witte draad en soldeer tot 100 ohm weerstand en van weerstand naar transistorbasis. Isoleren met krimpkous.
  • Transistorzender naar Buck -
  • Transistorcollector naar kathodezijde van diodearray
  • Diode-array Anode/Weerstand naar Buck +
  • Ventilator rode draad om uit te schakelen +
  • Ventilator zwarte draad om uit te stoten-

Laatste verbinding:

Druk de camera-interfacekabel in. Kabelverbinding maakt gebruik van een zif-connector (nul insteekkracht). De zwarte strook aan de bovenkant van de connector moet omhoog worden gebracht, de kabel in het stopcontact en de connector wordt weer naar beneden geduwd om hem op zijn plaats te vergrendelen. Wees voorzichtig om de kabel niet te krimpen, aangezien het spoor in de isolatie kan breken. Ook moet de connector recht worden gestoken om de lintkabel op de pin uit te lijnen.

Controleer uw werk op losse draadstrengen en soldeervlekken, knip overtollige lengte terug op de buck-soldeerpalen.

Als je tevreden bent met je werk, kunnen de ventilator en de camera op hun plaats worden geëpoxeerd. Een paar druppels op de hoeken is alles wat je nodig hebt.

Stap 8: Software

Software
Software
Software
Software
Software
Software
Software
Software

Terwijl de epoxy uithardt, laten we software op de SD-kaart zetten. je hebt een SD-kaartadapter nodig om op je computer aan te sluiten (https://www.amazon.com/Reader-Laptop-Windows-Chrom….

Ga naar:

www.raspberrypi.org/downloads/raspbian/ en download Raspbian Buster Lite. Om de SD-kaart met raspbian te flashen, hebt u een andere softwaretool BalenaEtcher nodig en deze is hier te vinden, De epoxy zou nu voldoende moeten zijn uitgehard dat u de SD-kaart kunt installeren en het buck / boost-bord kunt vastschroeven. Controleer voordat u de kap erop klikt of er geen draden in de buurt komen van de kap en of de camerakabel de ventilatorbladen niet raakt. Nadat het deksel op zijn plaats is, blaas ik op de ventilator en kijk ik hoe deze beweegt om ervoor te zorgen dat er geen interferentie is van draden of de lintkabel.

Tijd om op te starten:

De eerste keer dat u de computer opstart, hebt u een HDMI-kabel nodig, als een Pi 4 een mini-HDMI-kabel, een USB-toetsenbord en een HDMI-monitor heeft, samen met een internetverbinding. Sluit aan op een 12 volt voeding, PDP met een stroomonderbreker van 5 ampère.

Nadat u bent ingelogd, moet u eerst de configuratietool uitvoeren. Dit is waar SSH kan worden ingesteld, samen met het inschakelen van de PI-camera. https://www.raspberrypi.org/documentation/configur… heeft instructies om te helpen.

Start opnieuw op voordat u Chameleon Vision installeert

Bezoek hun site voordat u hun software gebruikt, ze hebben een schat aan informatie. Eén opmerking: op hun ondersteunde hardwarepagina wordt de Pi-cam weergegeven als niet ondersteund, maar wel met hun nieuwste release. De webpagina is aan vernieuwing toe.

Van de Chameleon vision-webpagina:

Chameleon Vision kan draaien op de meeste besturingssystemen die beschikbaar zijn voor de Raspberry Pi. Het wordt echter aanbevolen om Rasbian Buster Lite te installeren, beschikbaar hierhttps://www.raspberrypi.org/downloads/raspbian/. Volg de instructies om Raspbian op een SD-kaart te installeren.

Zorg ervoor dat de Raspberry Pi via Ethernet met internet is verbonden. Log in op de Raspberry Pi (gebruikersnaam pi en wachtwoord raspberry) en voer de volgende opdrachten uit in de terminal:

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

$ chmod +x install.sh

$ sudo./install.sh

$ sudo nu opnieuw opstarten

Gefeliciteerd! Uw Raspberry Pi is nu ingesteld om Chameleon Vision te gebruiken! Nadat de Raspberry Pi opnieuw is opgestart, kan Chameleon Vision worden gestart met het volgende commando:

$ sudo java -jar chameleon-vision.jar

Wanneer een nieuwe versie van Chameleon Vision wordt uitgebracht, werkt u deze bij door de volgende opdrachten uit te voeren:

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

$ chmod +x update.sh

$ sudo./update.sh

LED-array-besturing:

Uw LED-array zal niet oplichten zonder softwarebesturing

De eerste robotica van dit jaar heeft een regel tegen felle led-verlichting, maar staat ze toe als ze naar behoefte kunnen worden uit- en ingeschakeld. Colin Gideon "SpookyWoogin", FRC 3223, schreef een Python-script om de LED's aan te sturen en dat is hier te vinden:

github.com/frc3223/RPi-GPIO-Flash

Dit systeem zal ook FRC vision uitvoeren als uw team de softwaretijd al in dat platform heeft geïnvesteerd. Met FRC vision wordt de volledige SD-kaart geimaged, dus het is niet nodig om raspbian te downloaden. Download het hier

Hiermee krijgt u een vision-systeem in een coole vormfactor. Veel succes op de wedstrijden!

Raspberry Pi-wedstrijd 2020
Raspberry Pi-wedstrijd 2020
Raspberry Pi-wedstrijd 2020
Raspberry Pi-wedstrijd 2020

Tweede plaats in de Raspberry Pi-wedstrijd 2020

Aanbevolen: