Obsah:
- Krok 1: Úvod
- Krok 2: Potřebné materiály a software
- Krok 3: Sestavení podvozku Rover
- Krok 4: Sestavení sestavy ultrazvukového dálkoměru
- Krok 5: Schémata a elektrická připojení
- Krok 6: Instalace SSH a otevřeného CV
- Krok 7: Spuštění kódu Pythonu pro Rover
Video: Raspberry Pi - autonomní Mars Rover se sledováním objektů OpenCV: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
Poháněno Raspberry Pi 3, rozpoznáváním otevřeného CV objektu, ultrazvukovými senzory a stejnosměrnými motory s převodovkou. Tento rover může sledovat jakýkoli objekt, pro který je vycvičen, a pohybovat se v jakémkoli terénu.
Krok 1: Úvod
V tomto Instructables postavíme Autonomous Mars Rover, který dokáže rozpoznávat objekty a sledovat je pomocí softwaru Open CV běžícího na Raspberry Pi 3 s možností použít zařízení s webovou kamerou nebo původní malinovou pi kamerou. Je také vybaven ultrazvukovým senzorem namontovaným na servu, který sleduje jeho cestu v tmavých prostředích, kde by kamera nefungovala. Signály přijaté od Pi jsou odesílány do IC ovladače motoru (L293D), který pohání 4 x 150 RPM stejnosměrné motory namontované na těle postaveném z PVC trubek.
Krok 2: Potřebné materiály a software
Požadovaný materiál
- Raspberry Pi (jakákoli, ale nulová)
- Raspberry PI Camera nebo webová kamera
- IC ovladače motoru L293D
- Kola robota (7 x 4 cm) X 4
- Převodové stejnosměrné motory (150 ot / min) X 4
- PVC trubky pro podvozky
Je vyžadován software
- Tmel pro SSH ing. Pi
- Otevřete CV pro rozpoznávání objektů
Krok 3: Sestavení podvozku Rover
K vybudování tohoto podvozku z PVC budete potřebovat
- 2 x 8"
- 2 x 4"
- 4 T-spoje
Uspořádejte PVC trubky do žebříkové struktury a vložte je do T-spojů. Můžete použít PVC tmel, aby byly spoje ještě silnější.
Převodové stejnosměrné motory jsou spojeny se šasi z trubek z PVC pomocí svorek a poté jsou kola spojena s motory pomocí šroubů.
Krok 4: Sestavení sestavy ultrazvukového dálkoměru
Sestava ultrazvukového dálkoměru je vyrobena pomocí ultrazvukového senzoru HC-SR04 spojeného s mikro servomotorem. Kabely jsou předem spojeny s ultrazvukovým senzorem před vložením do plastového pouzdra, které je připojeno k servomotoru pomocí šroubů.
Krok 5: Schémata a elektrická připojení
Proveďte elektrická připojení podle připojeného schématu zapojení.
Krok 6: Instalace SSH a otevřeného CV
Nyní potřebujeme SSH do našeho Raspberry Pi, abychom nainstalovali požadovaný software. Začneme SSHingem k našemu Raspberry Pi. Ujistěte se, že je váš Pi připojen ke stejnému routeru jako váš počítač a víte, že je mu IP adresa přiřazena vaším routerem. Nyní otevřete příkazový řádek nebo PUTTY, pokud používáte Windows, a spusťte následující příkaz.
IP vašeho Pi se může lišit, moje je 192.168.1.6.
Nyní zadejte své výchozí heslo - „malina“
Nyní, když máte SSH'd do vašeho Pi, začněme aktualizací pomocí tohoto příkazu.
sudo apt-get update && sudo apt-get upgrade
Pojďme nyní nainstalovat požadované nástroje pro vývojáře, sudo apt-get install build-essential cmake pkg-config
Dále musíme nainstalovat nějaké I/O balíčky obrázků, které našemu Pi pomohou načíst z disku různé formáty obrázků.
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Nyní některé balíčky pro načítání videa, živé streamování a optimalizaci výkonu OpenCV
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
Musíme také nainstalovat hlavičkové soubory Pythonu 2.7 a Pythonu 3, abychom mohli kompilovat OpenCV s vazbami pythonu
sudo apt-get install python2.7-dev python3-dev
Stahování zdrojového kódu OpenCV
cd ~
wget -O opencv.zip
rozbalit opencv.zip
Stahování úložiště opencv_contrib
wget -O opencv_contrib.zip
rozbalte soubor opencv_contrib.zip
Pro instalaci OpenCV se také doporučuje použít virtuální prostředí.
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Nyní, když byl nainstalován virtualenv a virtualenvwrapper, musíme aktualizovat náš ~/.profile tak, aby ve spodní části obsahoval následující řádky
export WORKON_HOME = $ HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Vytvořte si své virtuální prostředí pythonu
mkvirtualenv cv -p python2
přepněte do vytvořeného virtuálního prostředí
zdroj ~/.profile
workon cv
Instalace NumPy
pip install numpy
Kompilace a instalace OpenCV
cd ~/opencv-3.3.0/
mkdir build
cd stavět
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/moduly / -D
Nakonec zkompilujte OpenCV
udělat -j4
Poté, co se tento příkaz dokončí. Vše, co musíte udělat, je nainstalovat.
sudo make config
sudo ldconfig
Krok 7: Spuštění kódu Pythonu pro Rover
Vytvořte soubor Pythonu s názvem tracker.py a přidejte do něj následující kód.
sudo nano tracker.py
kód:-
Program #ASAR
#Tento program sleduje červenou kouli a přikazuje malinové pi, aby ji následovala. import sys sys.path.append ('/usr/local/lib/python2.7/site-packages') import cv2 import numpy as np import os import RPi. GPIO as 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) #Left Motor zpět IO.output (22, 1) IO.output (13, 0) #Right Motor dozadu IO.output (15, 1) def ryt (): IO.output (21, 0) #Levý motor zpět IO.výstup (22, 1) IO.výstup (13, 1) #Pravý motor vpřed IO.výstup (15, 0) def lft (): IO.výstup (21, 1)#Levý motor vpřed IO.output (22, 0) IO.output (13, 0) #Right Motor zpět 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)#declare a Objekt VideoCapture a přidružení k webové kameře, 0 => použijte 1. webovou kameru # zobrazit původní rozlišení tisk "výchozí rozlišení =" + 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) # změna rozlišení na 320x240 pro rychlejší zpracování capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # zobrazit aktualizované rozlišení tisk "aktualizované rozlišení =" + str (capWebcam.get (cv2. CAP_WPRO_)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) if capWebcam.isOpened () == False: # check if VideoCapture object was associated to webcam successful print "error: capWebcam not accessed successful / n / n" # pokud ne, vytiskněte chybovou zprávu pro std out os.system („pauza“) # pauza, dokud uživatel nestiskne klávesu, aby uživatel viděl chybovou zprávu return # a ukončovací funkce (která ukončí program) # end if while cv2.waitKey (1)! = 27 a capWebcam.isOpened (): #, dokud není stisknuto tlačítko Esc nebo není ztraceno připojení k webové kameře blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # číst další snímek, pokud ne blnFrameReadSuccessfully nebo imgOriginal is None: # if frame was not read successful print "error: frame not read from webcam / n" # print error message to std out os.system ("pauza") # pauza, dokud uživatel nestiskne klávesu, aby uživatel viděl chybové hlášení přerušení # ukončení při smyčce (která ukončí program) # konec if 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. pole ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh, np.ones (5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape circle = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # vyplní proměnné kruhy všemi kruhy na zpracovaném obrázku, pokud kruhy is not None: # tento řádek je nezbytný, aby program nezlomil na dalším řádku, pokud nebyly nalezeny žádné kruhy IO.výstup (7, 1) pro kruh v kruzích [0]: # pro každý kruh x, y, radius = kruh # vylomte x, y a poloměr tisk "pozice koule x =" + str (x) + ", y =" + str (y) + ", poloměr =" + str (poloměr) # poloha a poloměr tiskové koule 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) # nakreslete malý zelený kruh ve středu detekovaného objektu cv2.circle (imgOriginal, (x, y), poloměr, (0, 0, 255), 3) # nakreslete červený kruh kolem detekovaného objektu # konec pro # konec if else: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # vytvořit okna, použijte WINDOW_AUTOSIZE pro pevnou velikost okna cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # nebo pomocí WINDOW_NORMAL povolte změnu velikosti okna cv2.imshow ("imgOriginal", imgOri ginal)#show windows cv2.imshow ("imgThresh", imgThresh)#end while cv2.destroyAllWindows ()#remove windows from memory return ######################### ############################################################################ ################################ if _name_ == "_main_": main ()
Nyní zbývá jen spustit program
python tracker.py
Gratuluji! váš samořiditelný rover je připraven! Navigační část založená na ultrazvukovém senzoru bude brzy dokončena a tento návod aktualizuji.
Děkuji za přečtení!
Doporučuje:
Pohybující se motor se sledováním očí: 8 kroků
Pohybující se motor se sledováním očí: V současné době jsou senzory sledování očí běžnější v různých oblastech, ale komerčně jsou známější pro interaktivní hry. Tento tutoriál nepředstírá, že rozvádí senzory, protože je velmi složitý a vzhledem k jeho stále běžnějšímu používání
Inteligentní batoh se sledováním GPS a automatickými světly: 15 kroků
Inteligentní batoh se sledováním GPS a automatickými světly: V tomto návodu vyrobíme chytrý batoh, který dokáže sledovat naši polohu, rychlost a má automatizovaná světla, která nás v noci udrží v bezpečí. Pomocí 2 senzorů zjišťuji, zda je na vašich bedrech, abych se ujistil, že se nevypne, když nemusí
Mars Rover pomocí Raspberry Pi: 5 kroků
Mars Rover pomocí Raspberry Pi: Vážení všichni skvělí žáci, vždy jsem zvědavý na informace o Mars Rover, který má 6 kol, která mohou projet celý povrch Marsu a prozkoumat věci ze Země. Také chci prozkoumat věc tím, že sedím na svém notebooku. Takže teď si myslím, že je ten správný čas to udělat a
Bezpečnostní zařízení pro ženy se sledováním GPS a výstrahami pomocí Arduina: 6 kroků
Bezpečnostní zařízení pro ženy se sledováním GPS a výstrahami pomocí Arduina: Se všemi technologiemi, které máme v poslední době k dispozici, není těžké postavit bezpečnostní zařízení pro ženy, které nejen vygeneruje nouzový alarm, ale také odešle zprávu vašim přátelům, rodině nebo dotyčná osoba. Tady postavíme kapelu
Back Pi Smart Backpack se sledováním obsahu NFC: 6 kroků
Back Pi Smart Backpack se sledovačem obsahu NFC: Jako student často zapomínám přinést si do třídy některé své knihy a další materiály. Zkoušel jsem použít online agendu, ale i přes to jsem neustále nechal věci na stole. Řešení, které jsem přišel, je chytrý batoh. V tomto návodu