Orodha ya maudhui:

Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV: Hatua 7 (na Picha)
Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV: Hatua 7 (na Picha)

Video: Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV: Hatua 7 (na Picha)

Video: Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV: Hatua 7 (na Picha)
Video: Assembling the 4tronix M.A.R.S. Rover Kit 2024, Novemba
Anonim
Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV
Raspberry Pi - Autonomous Mars Rover na Ufuatiliaji wa Kitu cha OpenCV

Inayoendeshwa na Raspberry Pi 3, utambuzi wa kitu cha CV wazi, sensorer za Ultrasonic na motors za DC. Rover hii inaweza kufuatilia kitu chochote ambacho imefundishwa na kuhamia kwenye eneo lolote.

Hatua ya 1: Utangulizi

Image
Image
Vifaa na Programu Inahitajika
Vifaa na Programu Inahitajika

Katika Maagizo haya, tutaunda Autonomous Mars Rover ambayo inaweza kutambua vitu na kuzifuatilia kwa kutumia programu ya Open CV inayoendesha Raspberry Pi 3 na chaguo la kutumia kifaa cha wavuti au kamera ya asili ya rasipberry. Pia ina vifaa vya sensorer ya Ultrasonic iliyowekwa kwenye servo kufuatilia njia yake katika mazingira ya giza ambapo kamera haiwezi kufanya kazi. Ishara zilizopokelewa kutoka kwa Pi zinatumwa kwa dereva wa gari IC (L293D) ambayo huendesha gari za 4 x 150RPM DC zilizowekwa kwenye mwili uliojengwa na mabomba ya PVC.

Hatua ya 2: Vifaa na Programu Inahitajika

Vifaa na Programu Inahitajika
Vifaa na Programu Inahitajika
Vifaa na Programu Inahitajika
Vifaa na Programu Inahitajika

Vifaa vinahitajika

  1. Raspberry Pi (Yoyote lakini sifuri)
  2. Kamera ya Raspberry PI au kamera ya wavuti
  3. L293D dereva wa gari IC
  4. Magurudumu ya Roboti (7x4cm) X 4
  5. Iliyotengenezwa Motors DC (150RPM) X 4
  6. Mabomba ya PVC kwa chasisi

Programu inahitajika

  1. Putty kwa SSH ing Pi
  2. Fungua CV kwa utambuzi wa kitu

Hatua ya 3: Kujenga Chassis ya Rover

Kujenga Chassis ya Rover
Kujenga Chassis ya Rover
Kujenga Chassis ya Rover
Kujenga Chassis ya Rover
Kujenga Chassis ya Rover
Kujenga Chassis ya Rover

Ili kujenga chasisi hii ya PVC, utahitaji

  • 2 X 8"
  • 2 X 4"
  • 4 T-Viungo

Panga mabomba ya PVC kwenye ngazi kama muundo na ingiza kwenye viungo vya T. Unaweza kutumia PVC sealant ili kufanya viungo viwe na nguvu zaidi.

Magari yaliyopangwa ya DC yameunganishwa na chasisi ya bomba la PVC kwa kutumia clamp na kisha magurudumu yameunganishwa na motors kwa kutumia screws.

Hatua ya 4: Kuunda Mkutano wa Rangefinder ya Ultrasonic

Kuunda Mkutano wa Rangefinder ya Ultrasonic
Kuunda Mkutano wa Rangefinder ya Ultrasonic

Mkutano wa upataji wa anuwai ya ultrasonic umejengwa kwa kutumia HC-SR04 sensor ya Ultrasonic iliyounganishwa na motor Micro Servo. Cables zimeunganishwa kabla na kihisi cha ultrasonic kabla ya kuweka kwenye kasha la plastiki ambalo limeunganishwa na servo motor kupitia screws.

Hatua ya 5: Skematiki na Muunganisho wa Umeme

Skimatiki na Uunganisho wa Umeme
Skimatiki na Uunganisho wa Umeme
Skimatiki na Uunganisho wa Umeme
Skimatiki na Uunganisho wa Umeme

Tafadhali fanya unganisho la umeme kulingana na mchoro wa mzunguko ulioambatanishwa.

Hatua ya 6: SSH na Ufungaji wa CV wazi

SSH na Ufungaji wa CV wazi
SSH na Ufungaji wa CV wazi

Sasa, tunahitaji SSH kwenye pi raspberry yetu ili kusanikisha programu inayohitajika. Tutaanza kwa SSHing kwa Raspberry Pi yetu. Hakikisha Pi yako imeunganishwa na router sawa na PC yako na unajua ni anwani ya IP iliyopewa na router yako. Sasa, fungua kidokezo cha amri au PUTTY ikiwa uko kwenye Windows na endesha amri ifuatayo.

ssh [email protected]

IP yako ya IP inaweza kuwa tofauti, yangu ni 192.168.1.6.

Sasa, ingiza nywila yako chaguomsingi - "rasiberi"

Sasa, kwa kuwa umeweka SSH kwenye Pi yako, Wacha tuanze kwa kusasisha na amri hii.

Sudo apt-pata sasisho && sudo apt-pata sasisho

Wacha tuweke zana za msanidi programu zinazohitajika sasa, Sudo apt-get install -ake muhimu cmake pkg-config

Ifuatayo, tunahitaji kusanikisha vifurushi vya picha ya I / O ambayo itasaidia Pi yetu kuchukua fomati anuwai za picha kutoka kwa diski.

Sudo apt-get kufunga libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

Sasa, vifurushi kadhaa vya kutafuta video, kutiririsha moja kwa moja na kuboresha utendaji wa OpenCV

Sudo apt-get kufunga libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

Sudo apt-get kufunga libxvidcore-dev libx264-dev

Sudo apt-get kufunga libgtk2.0-dev libgtk-3-dev

Sudo apt-get kufunga libatlas-base-dev gfortran

Tunahitaji pia kusanikisha faili za kichwa cha Python 2.7 na Python 3 ili tuweze kukusanya OpenCV na vifungo vya chatu

Sudo apt-get kufunga python2.7-dev python3-dev

Inapakua msimbo wa chanzo wa OpenCV

cd ~

wget -O opencv.zip

unzip opencv.zip

Inapakua ghala la opencv_contrib

wget -O opencv_contrib.zip

unzip opencv_contrib.zip

Inashauriwa pia kutumia mazingira halisi ya kusanidi OpenCV.

Sudo pip sakinisha fadhila ya virtualenvwrapper

Sudo rm -rf ~ /.cache / pip

Sasa, hiyo fadhila na sifa nzuri imewekwa, tunahitaji kusasisha faili yetu ya ~ /.profile ili kujumuisha mistari ifuatayo chini

usafirishaji KAZI_HOME = $ NYUMBANI /.virtualenvs usafirishaji

Unda mazingira yako ya chatu

mkvirtualenv cv -p python2

badilisha kwa mazingira yaliyoundwa

chanzo ~ /.profile

workon cv

Inasakinisha NumPy

bomba kufunga numpy

Tunga na Sakinisha OpenCV

cd ~ / opencv-3.3.0 /

mkdir kujenga

cd kujenga

cmake -D CMAKE_BUILD_TYPE = KUACHA

Mwishowe tunga OpenCV

fanya -j4

Baada ya amri hii kumaliza kukimbia. Wote unahitaji kufanya ni kuiweka.

Sudo fanya usanidi

Sudo ldconfig

Hatua ya 7: Kuendesha Nambari ya Python ya Rover

Image
Image

Unda faili ya chatu inayoitwa tracker.py na ongeza nambari ifuatayo kwake.

sudo nano tracker.py

nambari: -

Programu ya #ASAR

#Programu hii inafuatilia mpira nyekundu na kuagiza pi ya rasipberry kuifuata. kuagiza sys sys.path.append ('/ usr / local / lib / python2.7 / package-site') kuagiza cv2 kuagiza numpy kama np kuagiza os kuagiza RPi. GPIO kama IO IO.setmode (IO. BOARD) IO.setup (7, IO. OUT) kuanzisha. Pato la IO (21, 1) # Mbio ya Kushoto Mbele IO. Pato (22, 0) Pato la IO (13, 1) #Right Motor Forward IO. (21, 0) # Magari ya kushoto kushoto IO. Pato (22, 1) IO. Pato (13, 0) # Haki ya Nyuma nyuma IO. #Lft kushoto nyuma pato (22, 0) IO. pato (13, 0) # Haki ya Magari nyuma IO. pato (15, 1) def stp (): IO. 0) Pato la IO (13, 0) # Haki ya kukomesha IO. Pato (15, 0) # # # # # # ############ # # # # # # # # # # # # # # # # # # # # # # # VideoCapture kitu na ushirikiane na kamera ya wavuti, 0 => tumia kamera ya wavuti ya kwanza # onyesha uchapishaji wa azimio asili "default resolution =" + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT) capWebcam. + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) ikiwa capWebcam.isOpened () == Uongo: # angalia ikiwa kitu cha VideoCapture kilihusishwa na kamera ya wavuti ilichapisha "kosa: capWebcam haikupatikana kwa mafanikio / n / n" # ikiwa sivyo, chapisha ujumbe wa makosa ili kusanikisha mfumo wa os (mfumo wa "pause") # pumzika hadi mtumiaji atakapobonyeza kitufe ili mtumiaji aweze kuona ujumbe wa makosa unarudi # na kazi ya kutoka (ambayo hutoka kwa mpango) # mwisho ikiwa wakati cv2.waitKey (1 = 27 na capWebcam.is Imefunguliwa (): # mpaka kitufe cha Esc kibonye au unganisho la kamera ya wavuti limepotea blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # soma fremu inayofuata ikiwa sio blnFrameReadSuccessful or imgOriginal is None: # ikiwa fremu haikusomwa kwa mafanikio chapa "error: frame not read from webcam / n" # print message message to std out os.system ("pause") # pause mpaka mtumiaji abonyeze kitufe ili mtumiaji aone kosa la kuvunja ujumbe # kutoka wakati kitanzi (ambacho kinatoka kwenye mpango) # mwisho ikiwa 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. safu ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh, np. (5, 5), np. HOUGH_GRADIENT, 5, intRows / 4) # jaza miduara inayobadilika na miduara yote kwenye picha iliyosindika ikiwa miduara hakuna: # mstari huu ni muhimu kuzuia programu kutoka kwa kugonga kwenye mstari unaofuata ikiwa hakuna miduara iliyopatikana IO. kuvunja x, y, na uchapishaji wa radius "nafasi ya mpira x =" + str (x) + ", y =" + str (y) + ", radius =" + str (radius) # nafasi ya mpira wa kuchapisha na eneo obRadius = int (radius) xAxis = int (x) ikiwa obRadius> 0 & obRadius100 & xAxis180: chapa ("Kusonga Kulia") ryt () elif xAxis <100: chapa ("Kusonga Kushoto") lft () mwingine: stp () mwingine: stp () cv2. duara (imgOriginal, (x, y), 3, (0, 255, 0), -1) # chora mduara mdogo wa kijani katikati ya kitu kilichogunduliwa cv2. duara (imgOriginal, (x, y), radius, (0, 0, 255), 3) # chora duara nyekundu kuzunguka kitu kimegunduliwa # mwisho wa # mwisho ikiwa ni vinginevyo:, tumia WINDOW_AUTOSIZE kwa saizi ya dirisha iliyosasishwa cv2. inayoitwaWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # au tumia WINDOW_NORMAL kuruhusu kurekebisha ukubwa wa dirisha cv2.imshow ("imgOriginal", imgOri ginal) # onyesha windows cv2.imshow ("imgThresh", imgThresh) # mwisho wakati cv2.destroyAllWindows () # ondoa windows kutoka kwa kumbukumbu ya kurudi # # # # # # ############ # # # # # # # # # #

Sasa, kilichobaki kufanya ni kuendesha programu

chatu tracker.py

Hongera! rover yako ya kujiendesha iko tayari! Sehemu ya urambazaji ya sensa ya Ultrasonic itakamilika hivi karibuni na nitasasisha hii inayoweza kufundishwa.

Asante kwa kusoma!

Ilipendekeza: