Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Pan / Tilt face-tracking met de raspberry pi

Met enige moeite heb ik ontdekt dat het besturen van twee servomotoren om een ​​webcam te laten pannen/kantelen terwijl het een gezicht in realtime volgt met behulp van de Raspberry Pi, niet zo onmogelijk is als het op het eerste gezicht lijkt. Met wat zorgvuldige aanpassingen en code-optimalisatie kon ik de pi twee servo's laten bijhouden terwijl OpenCV-gezichtsdetectie op 320 × 240 werd uitgevoerd, op zoek naar een rechterprofiel, linkerprofiel en frontaal gezicht en de servo's sneller dan één keer per seconde aan te passen .

Stap 1:Schaf de hardware aan.

Dingen die nodig zijn:

Een raspberry pi — Model A werkt prima, ik heb het originele Model B dat dezelfde specificaties heeft als het nieuwe Model A (minus netwerk).
Een pan/tilt-beugel
Twee servo's
Een GPIO Ribbin-kabel
Een Pi-ondersteunde webcam —  ik gebruikte een Logitech C210

Ervan uitgaande dat je al een Raspberry Pi en een webcam hebt, kost de extra hardware je ongeveer $ 25

Stap 2:Maak je Raspberry Pi klaar.

Zorg ervoor dat je de officiële RaspbianOS (de hard-float-versie) gebruikt en dat deze up-to-date is.
Misschien wil je je Raspberry Pi overklokken. Ik deed het op 800mhz. Hoe hoger je gaat, hoe sneller de gezichtsherkenning zal zijn, maar hoe minder stabiel je pi kan zijn.

Installeer OpenCV voor python:sudo apt-get install python-opencv
Download de prachtige servoblaster-servodriver voor de raspberry pi van Richard Hirst:hier

U kunt alle bestanden downloaden als een zip-archief en ze uitpakken naar een map ergens op de pi.
Om het servoblaster-stuurprogramma te installeren, opent u een terminal en cd in de map waar u de servoblaster-bestanden hebt uitgepakt
uitvoeren het commando:make install_autostart

Misschien wilt u een time-out voor servoblaster maken en stoppen met het verzenden van signalen naar de servo na een seconde als deze niet wordt verplaatst.
om dit te doen, voegt u de volgende regel toe aan /etc/modules:servoblaster idle_timeout=1000

start servoblaster met het volgende commando:sudo modprobe servoblaster

De volgende taak is om de camera te laten functioneren zoals verwacht:

Allereerst heel erg bedankt aan Gmoto om dit te vinden en erop te wijzen, het was het laatste stukje van de "pi" om alles soepel te laten verlopen; je moet enkele parameters in de uvcvideo-module aanpassen om alles goed te laten werken.
Voer namelijk deze commando's uit:

rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000 eigenaardigheden=0x80

U moet dat elke keer dat u opnieuw opstart uitvoeren als u van plan bent het programma voor het volgen van gezichten uit te voeren, of als alternatief de parameters aan /etc/modules toe te voegen zoals u deed met de servoblaster time-out tweak.

Stap 3:Stel je rig samen

Bouw de pan/tilt-beugels volgens de instructies en bevestig de servo's.
Bevestig je camera aan de bovenkant van de beugel (ik heb zojuist tape gebruikt) en sluit hem aan op je Raspberry Pi-USB-poort.
Ik was in staat om het van stroom te voorzien zonder een USB-hub, maar misschien wilt u een USB-hub met eigen voeding kopen en dat doornemen.

Stap 4:De servo's aansluiten

Servoblaster beschouwt servo-0 als alles wat is aangesloten op GPIO 4 en servo-1 is alles wat is aangesloten op GPIO-17.
Servo's hebben drie draden, één is rood, wat Vin/positief is, één is bruin of zwart, wat is aarde/negatief en de andere is controle.
met behulp van de lintkabel (en in mijn geval een connectordraad die in de gaten zit vastgelopen) sluit u de bedieningsdraad voor elke servo aan op de juiste pin. De code gaat ervan uit dat servo-0 de beweging van links naar rechts regelt en servo-1 de beweging omhoog en omlaag van de camera; dus sluit ze op deze manier aan.

Nu lijkt het logisch dat de Vin voor de servo's zou komen van de 5v-pinnen van de GPIO en de aarde voor de servo's zou komen van de grondpinnen van GPIO, maar dit werkte niet in mijn geval omdat ik een grotere servo voor de basis. De grote servo trok meer kracht dan de pi wilde dus leveren. Ik was echter in staat om mijn kleinere tilt-servo zonder probleem van stroom te voorzien. Ook Richard Hirst, die servoblaster maakte, lijkt te impliceren dat hij meerdere kleine servo's kan aansturen met de GPIO 5v. Ik heb ook geleerd dat er enkele zekeringen in mijn versie van de pi zijn die later zijn verwijderd in verband met die stroompinnen. Mijn instinct zegt me dat je twee kleinere servo's van die pinnen op een nieuwere pi kunt aandrijven. Als u dat niet kunt, moet u het volgende doen:

Je hebt een soort externe stroombron nodig die een zware belasting van 5v-6v aankan:ik heb degene gebruikt die in een arduino is ingebouwd, maar elke stroombron van 5 volt zou het moeten doen; de servo's zijn geschikt voor maximaal 6v. De 5v-pin op een computervoeding, een 5v-6v-wandoplader, enkele batterijen parallel; wat uw boot ook drijft. Zodra je je externe bron hebt, sluit je gewoon de positieve en negatieve lijnen van de servo's aan op de positieve en negatieve kant van je stroombron en sluit je vervolgens de aarde (negatief) van je externe stroombron aan op een aardingspin op de Raspberry Pi GPIO.

Stap 5:voer het programma uit

Ik heb het python-script aan dit artikel toegevoegd, het heet PiFace.py om het op cd uit te voeren naar zijn locatie in terminal en typ:python PiFace.py

Hier zijn enkele video's van mij in actie.

Voor meer details:Pan / Tilt face-tracking met de Raspberry Pi


Productieproces

  1. Temperatuur aflezen met DS18B20 | Raspberry Pi 2
  2. Temperatuurbewaking op de Raspberry Pi
  3. Temperatuur meten met RASPBERRY PI
  4. Temperatuur bewaken met Raspberry Pi
  5. De integratie van sensorgegevens met Raspberry Pi-microprocessor
  6. Lijnvolgsensor met RPi
  7. Bliksem detecteren met een Raspberry Pi
  8. Raspberry Pi Ball-tracking
  9. Raspberry pi 2 wateralarm met t cobbler plus
  10. Pan / Tilt face-tracking met de raspberry pi
  11. De beste accessoires voor je Raspberry Pi