Indholdsfortegnelse:
- Trin 1: Introduktion
- Trin 2: Materialer og software påkrævet
- Trin 3: Opbygning af Rover Chassis
- Trin 4: Bygning af ultralydsmåler
- Trin 5: Skemaer og elektriske forbindelser
- Trin 6: SSH og åben CV -installation
- Trin 7: Kørsel af Python -koden til Rover
Video: Raspberry Pi - Autonom Mars Rover Med OpenCV Object Tracking: 7 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Drevet af en Raspberry Pi 3, åben CV -genkendelse, ultralydssensorer og gearede DC -motorer. Denne rover kan spore ethvert objekt, den er trænet til, og bevæge sig på ethvert terræn.
Trin 1: Introduktion
I denne Instructables skal vi bygge en autonom Mars Rover, som kan genkende objekter og spore dem ved hjælp af Open CV -softwaren, der kører på en Raspberry Pi 3 med mulighed for at bruge en webcam -enhed eller det originale hindbærpi -kamera. Det er også udstyret med en ultralydssensor monteret på en servo for at spore sin vej i mørke miljøer, hvor kameraet ikke ville fungere. Signaler modtaget fra Pi sendes til motordriverens IC (L293D), som driver 4 x 150 omdr./min. DC -motorer monteret på et karosseri bygget med PVC -rør.
Trin 2: Materialer og software påkrævet
Materialer påkrævet
- Raspberry Pi (alt andet end nul)
- Hindbær PI -kamera eller et webcam
- L293D motor driver IC
- Robothjul (7x4cm) X 4
- Geardrevne DC -motorer (150 o / min) X 4
- PVC -rør til chassis
Software påkrævet
- Kitt til SSH i Pi
- Åbn CV for genkendelse af objekter
Trin 3: Opbygning af Rover Chassis
For at bygge dette PVC -chassis skal du bruge
- 2 x 8"
- 2 x 4"
- 4 T-samlinger
Arranger PVC-rørene i en stige som struktur og indsæt i T-samlinger. Du kan bruge PVC -fugemassen til at gøre samlingerne endnu stærkere.
De gearede DC -motorer er forbundet med PVC -rørchassiset ved hjælp af klemmer, og derefter er hjul forbundet med motorerne ved hjælp af skruer.
Trin 4: Bygning af ultralydsmåler
Den ultralydsmåler er opbygget ved hjælp af en HC-SR04 ultralydssensor forbundet med en mikro servomotor. Kabler er forud forbundet med ultralydssensoren, før de sættes i plastikhuset, der er forbundet til servomotoren via skruer.
Trin 5: Skemaer og elektriske forbindelser
Foretag de elektriske forbindelser i henhold til det vedlagte kredsløbsdiagram.
Trin 6: SSH og åben CV -installation
Nu skal vi SSH ind i vores hindbær pi for at installere den nødvendige software. Vi starter med SSHing til vores Raspberry Pi. Sørg for, at din Pi er forbundet til den samme router som din pc, og du ved, at den er IP -adresse, som din router har tildelt den. Åbn nu en kommandoprompt eller PUTTY, hvis du er på Windows, og kør følgende kommando.
Din Pi's IP kan være anderledes, min er 192.168.1.6.
Indtast nu din standardadgangskode - "hindbær"
Nu hvor du har SSH'et ind i din Pi, lad os starte med at opdatere med denne kommando.
sudo apt-get update && sudo apt-get upgrade
Lad os installere de nødvendige udviklerværktøjer nu, sudo apt-get install build-essential cmake pkg-config
Dernæst skal vi installere nogle billed -I/O -pakker, der hjælper vores Pi med at hente forskellige billedformater fra disken.
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Nu nogle pakker til hentning af video, livestreaming og optimering af OpenCV -ydeevne
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
Vi skal også installere Python 2.7 og Python 3 header -filer, så vi kan kompilere OpenCV med pythonbindinger
sudo apt-get install python2.7-dev python3-dev
Download af OpenCV -kildekode
cd ~
wget -O opencv.zip
udpakke opencv.zip
Downloader opencv_contrib -depot
wget -O opencv_contrib.zip
udpakke opencv_contrib.zip
Det anbefales også at bruge et virtuelt miljø til installation af OpenCV.
sudo pip installer virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Nu, hvor virtualenv og virtualenvwrapper er blevet installeret, skal vi opdatere vores ~/.profil til at omfatte følgende linjer nederst
eksport WORKON_HOME = $ HOME/.virtualenvs eksport VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Opret dit virtuelle python -miljø
mkvirtualenv cv -p python2
skifte til det oprettede virtuelle miljø
kilde ~/.profil
arbejdet cv
Installation af NumPy
pip installer numpy
Kompiler og installer OpenCV
cd ~/opencv-3.3.0/
mkdir build
cd -opbygning
cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = ON / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib -3.3.0/modules / -DPLES..
Saml endelig OpenCV
lav -j4
Efter at denne kommando er færdig med at køre. Alt du skal gøre er at installere det.
sudo lav konfigur
sudo ldconfig
Trin 7: Kørsel af Python -koden til Rover
Opret en Python -fil kaldet tracker.py, og tilføj følgende kode til den.
sudo nano tracker.py
kode:-
#ASAR -program
#Dette program sporer en rød kugle og instruerer en hindbærpi i at følge den. import sys sys.path.append ('/usr/local/lib/python2.7/site-packages') import cv2 import numpy som np import os import RPi. GPIO som IO IO.setmode (IO. BOARD) IO.setup (7, IO. OUT) IO.setup (15, IO. OUT) IO.setup (13, IO. OUT) IO.setup (21, IO. OUT) IO.setup (22, IO. OUT) def fwd (): IO.output (21, 1) #Left Motor Forward IO.output (22, 0) IO.output (13, 1) #Right Motor Forward IO.output (15, 0) def bac (): IO.output (21, 0)#venstre motor bagud IO.output (22, 1) IO.output (13, 0)#højre motor bagud IO.output (15, 1) def ryt (): IO.output (21, 0) #Venstre motor bagud IO.output (22, 1) IO.output (13, 1)#højre motor frem IO.output (15, 0) def lft (): IO.output (21, 1)#venstre motor frem IO.output (22, 0) IO.output (13, 0)#Højre motor bagud IO.output (15, 1) def stp (): IO.output (21, 0)#Left Motor stop IO.output (22, 0) IO.output (13, 0) #Right Motor stop IO.output (15, 0) ############################## #################################################### ####################### def main (): capWebcam = cv2. VideoCapture (0)#erklærer en VideoCapture -objekt og tilknyt webcam, 0 => brug 1. webcam # vis original opløsning print "standard opløsning =" + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) capWebcam.set (cv2. CAP_PROP_FRAME_WIDTH, 320.0) # ændring af opløsningen til 320x240 for hurtigere behandling af capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # vis opdateret opløsning print "updated resolution =" + str (capWebcam.get (cv2. CAP_PRO_PRO_PRO_PRO_PRO_PRO_PRO_PRO_PRO)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) hvis capWebcam.isOpened () == Falsk: # tjek, om VideoCapture -objekt var tilknyttet webcam med succes udskrivning "fejl: capWebcam blev ikke åbnet korrekt / n / n" # hvis ikke, udskriv fejlmeddelelse for at fjerne os.system ("pause") # pause, indtil brugeren trykker på en tast, så brugeren kan se fejlmeddelelsen returnere # og afslutte funktion (som forlader program) # ende hvis mens cv2.waitKey (1)! = 27 og capWebcam.isOpened (): #, indtil der trykkes på Esc -tasten, eller webcamforbindelsen mistes blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # læs næste ramme hvis ikke blnFrameReadSuccessfully eller imgOriginal er Ingen: # hvis ramme ikke blev læst med succes print "fejl: ramme ikke læst fra webcam / n" # udskrivningsfejlmeddelelse for at fjerne os.system ("pause") # pause, indtil brugeren trykker på en tast, så brugeren kan se fejlmeddelelsen bryde # afslut, mens loop (der forlader programmet) # ende, hvis imgHSV = cv2.cvtColor (imgOriginal, cv2. COLOR_BGR2HSV) imgThreshLow = cv2.inRange (imgHSV, np.array ([0, 135, 135]), np.array ([18, 255, 255])) imgThreshHigh = cv2.inRange (imgHSV, np.array ([165, 135, 135]), np. array ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThh (5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape cirkler = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # udfyld variable cirkler med alle cirkler i det behandlede billede, hvis cirkler er ikke Ingen: # denne linje er nødvendig for at forhindre programmet i at gå ned på næste linje, hvis der ikke blev fundet cirkler IO.output (7, 1) for cirkel i cirkler [0]: # for hver cirkel x, y, radius = cirkel # bryde x, y og radius ud "kugleposition x =" + str (x) + ", y =" + str (y) + ", radius =" + str (radius) # print kuglens position og radius obRadius = int (radius) xAxis = int (x) if obRadius> 0 & obRadius100 & xAxis180: print ("Moving Right") ryt () elif xAxis <100: print ("Moving Left") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # tegne lille grøn cirkel i midten af det registrerede objekt cv2.circle (imgOriginal, (x, y), radius, (0, 0, 255), 3) # tegne rød cirkel omkring det detekterede objekt # ende for # ende hvis ellers: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # opret vinduer, brug WINDOW_AUTOSIZE til en fast vinduesstørrelse cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # eller brug WINDOW_NORMAL til at tillade størrelse på vindue cv2.imshow ("imgOriginal", imgOri ginal)#show windows cv2.imshow ("imgThresh", imgThresh)#end while cv2.destroyAllWindows ()#remove windows from memory return ###################### #################################################### ############################# hvis _name_ == "_main_": main ()
Nu er det kun tilbage at køre programmet
python tracker.py
Tillykke! din selvkørende rover er klar! Den ultralydssensorbaserede navigationsdel vil snart blive afsluttet, og jeg vil opdatere denne instruerbare.
Tak fordi du læste!
Anbefalede:
Opencv Object Tracking: 3 trin
Opencv Object Tracking: Detektering af bevægelige objekter er en teknik, der bruges til computersyn og billedbehandling. Flere på hinanden følgende rammer fra en video sammenlignes med forskellige metoder for at afgøre, om et objekt i bevægelse detekteres. Registrering af bevægelige objekter er blevet brugt til wi
Mars Rover ved hjælp af Raspberry Pi: 5 trin
Mars Rover Brug af Raspberry Pi: Kære alle store lærere, jeg er altid nysgerrig efter at vide om mars rover, der har 6 hjul, der kan gå hele overfladen af mars og udforske ting fra jorden. Jeg vil også undersøge tingene ved at sidde på min bærbare computer. Så nu synes jeg det er det rigtige tidspunkt at klare det og
DIY Smart Robot Tracking Car Kits Tracking Car Fotosensitive: 7 trin
DIY Smart Robot Tracking Car Kits Tracking Car Fotofølsom: Design af SINONING ROBOT Du kan købe fra tracking robot carTheoryLM393 chip sammenligne de to fotoresistor, når der er en fotoresistor LED på den ene side på HVID, stopper motorens side med det samme, den anden side af motoren drej op, så
MOTORISERET KAMERA SLIDER Med TRACKING SYSTEM (3D -printet): 7 trin (med billeder)
MOTORISERET KAMERA SLIDER Med TRACKING SYSTEM (3D -printet): Grundlæggende vil denne robot flytte et kamera/smartphone på en skinne og "spore" et objekt. Målobjektets placering er allerede kendt af robotten. Matematikken bag dette sporingssystem er ganske enkel. Vi har skabt en simulering af sporingsprocessen
"GRECO" - Arduino Object Undgå robot for begyndere: 6 trin (med billeder)
"GRECO" - Arduino Object Undgå robot for begyndere: Nå, hvis du er nybegynder, her finder du den nemmeste måde at bygge dit eget objekt på, så du undgår robot! Vi vil bruge et mini -rundt robotchassis med to DC -motorer til at bygge det lettere . Endnu en gang vælger vi at bruge det berømte Arduino UNO -bord. Vores