Агуулгын хүснэгт:
- Алхам 1: Танилцуулга
- Алхам 2: Шаардлагатай материал, програм хангамж
- Алхам 3: Rover явах эд анги бүтээх
- Алхам 4: Хэт авианы хүрээ хэмжигчийг угсрах
- Алхам 5: Схем ба цахилгаан холболт
- Алхам 6: SSH ба нээлттэй CV суурилуулалт
- Алхам 7: Rover -д зориулсан Python кодыг ажиллуулах
Видео: Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Raspberry Pi 3, Нээлттэй CV объектыг таних, хэт авианы мэдрэгч, араагаар тэжээгддэг DC мотороор ажилладаг. Энэхүү ровер нь бэлтгэгдсэн аливаа объектоо хянаж, ямар ч газар хөдлөх боломжтой.
Алхам 1: Танилцуулга
Энэхүү зааварчилгаанд бид Raspberry Pi 3 дээр ажиллаж буй Open CV програмыг ашиглан вэб камер эсвэл анхны бөөрөлзгөнө пи камер ашиглах боломжтой объектуудыг таньж, тэдгээрийг хянах чадвартай Ангараг гарагтай Rover бүтээх гэж байна. Энэ нь камер ажиллахгүй байгаа харанхуй орчинд замыг хянах зорилгоор servo дээр суурилуулсан хэт авианы мэдрэгчтэй. Pi -аас хүлээн авсан дохиог PVC хоолойгоор хийсэн биед суурилуулсан 4 x 150RPM тогтмол гүйдлийн хөдөлгүүрийг жолоодогч IC (L293D) руу илгээдэг.
Алхам 2: Шаардлагатай материал, програм хангамж
Шаардлагатай материал
- Raspberry Pi (тэгээс бусад)
- Raspberry PI камер эсвэл вэб камер
- L293D мотор драйвер IC
- Робот дугуй (7х4см) X 4
- Араагаар тэжээгддэг DC мотор (150 эрг / мин) X 4
- Явах эд ангийн зориулалттай PVC хоолой
Програм хангамж шаардлагатай
- SSH -ийг ашиглах зориулалттай шаваас
- Объект танихын тулд CV нээнэ үү
Алхам 3: Rover явах эд анги бүтээх
Энэхүү PVC явах эд ангиудыг бүтээхийн тулд танд хэрэгтэй болно
- 2 X 8"
- 2 X 4"
- 4 үе мөч
PVC хоолойг шат шиг бүтэцтэй байрлуулж, Т-холболт руу оруулна. Холбоосыг илүү бат бөх болгохын тулд та PVC чигжээсийг ашиглаж болно.
Араагаар ажилладаг DC моторыг хавчаар ашиглан PVC хоолойн явах эд анги руу холбож, дараа нь дугуйг боолт ашиглан мотортой холбодог.
Алхам 4: Хэт авианы хүрээ хэмжигчийг угсрах
Хэт авианы хүрээ хайгчийг угсрах ажлыг микро Servo мотортой холбогдсон HC-SR04 хэт авианы мэдрэгч ашиглан бүтээжээ. Кабелийг servo моторт боолтоор холбосон хуванцар хайрцагт хийхээс өмнө хэт авианы мэдрэгчээр урьдчилан холбодог.
Алхам 5: Схем ба цахилгаан холболт
Цахилгааны холболтыг хавсаргасан хэлхээний дагуу хийнэ үү.
Алхам 6: SSH ба нээлттэй CV суурилуулалт
Одоо бид шаардлагатай програм хангамжийг суулгахын тулд бөөрөлзгөнө pi дээрээ SSH оруулах хэрэгтэй. Бид SSHing -аас Raspberry Pi руугаа эхлэх болно. Таны Pi нь таны компьютертэй ижил чиглүүлэгчтэй холбогдсон байх ёстой бөгөөд таны чиглүүлэгчээс түүнд өгсөн IP хаягийг мэдэж байгаа эсэхээ шалгаарай. Хэрэв та Windows дээр байгаа бол командын мөр эсвэл PUTTY -ийг нээгээд дараах тушаалыг ажиллуулна уу.
Таны Pi -ийн IP өөр байж магадгүй, минийх 192.168.1.6.
Одоо анхдагч нууц үгээ оруулна уу - "бөөрөлзгөнө"
Одоо та Pi -д SSH -ийг суулгасан тул энэ тушаалыг шинэчилж эхэлье.
sudo apt-get update && sudo apt-get upgrade
Хөгжүүлэгчийн шаардлагатай хэрэгслүүдийг одоо суулгацгаая.
sudo apt-get install build-essential cmake pkg-config-ийг суулгаарай
Дараа нь бид дискэндээ янз бүрийн зургийн форматыг татаж авахад туслах Pi/I/O багцыг суулгах хэрэгтэй.
sudo apt-get libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev суулгах
Одоо видео татаж авах, шууд дамжуулах, OpenCV -ийн ажиллагааг оновчтой болгох зарим багцууд байна
sudo apt-get суулгах libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get libxvidcore-dev libx264-dev суулгаарай
sudo apt-get libgtk2.0-dev libgtk-3-dev суулгана уу
sudo apt-get libatlas-base-dev gfortran суулгана уу
Бид мөн Python 2.7 ба Python 3 толгой файлуудыг суулгах хэрэгтэй бөгөөд ингэснээр бид OpenCV -ийг python холбоосоор хөрвүүлэх боломжтой болно.
sudo apt-get python2.7-dev python3-dev суулгаарай
OpenCV эх кодыг татаж байна
cd ~
wget -O opencv.zip
задлах opencv.zip
Opencv_contrib репозиторыг татаж байна
wget -O opencv_contrib.zip
opencv_contrib.zip -ийг задлах
Мөн OpenCV суулгах виртуал орчныг ашиглахыг зөвлөж байна.
sudo pip virtualenv virtualenvwrapper суулгах
sudo rm -rf ~/.cache/pip
Одоо тэр virtualenv болон virtualenvwrapper суулгагдсан байгаа тул бид доорх мөрүүдийг оруулахын тулд ~/.profile -ээ шинэчлэх хэрэгтэй.
экспорт WORKON_HOME = $ HOME/.virtualenvs экспорт VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Python виртуал орчноо бий болго
mkvirtualenv cv -p python2
үүсгэсэн виртуал орчинд шилжих
эх сурвалж ~/.профайл
workon cv
NumPy суулгаж байна
pip суулгах numpy
OpenCV -ийг эмхэтгэх, суулгах
cd ~/opencv-3.3.0/
mkdir бүтээх
cd бүтээх
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//
Эцэст нь OpenCV -ийг эмхэтгээрэй
хийх -j4
Энэ командын ажиллуулж дууссаны дараа. Таны хийх ёстой зүйл бол үүнийг суулгах явдал юм.
sudo тохиргоо хийх
sudo ldconfig
Алхам 7: Rover -д зориулсан Python кодыг ажиллуулах
Tracker.py нэртэй Python файл үүсгээд дараах кодыг нэмнэ үү.
sudo nano tracker.py
код:-
#ASAR хөтөлбөр
#Энэ програм нь улаан бөмбөгийг мөрдөж, бөөрөлзгөнө пи -ийг дагахыг зааж өгдөг. sys sys.path.append импортлох ('/usr/local/lib/python2.7/site-packages') cv2 импортлох numpy-ийг np импортоор импортлох RPi. GPIO-ийг 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)#Зүүн моторын арын IO. гаралт (22, 1) IO.output (13, 0)#Баруун моторын арагш IO.output (15, 1) def ryt (): IO.output (21, 0) #Зүүн мотор арагшаа IO. гаралт (22, 1) IO. гаралт (13, 1)#Баруун мотор урагш IO. гаралт (15, 0) def lft (): IO. гаралт (21, 1)#Зүүн мотор урагш IO.output (22, 0) IO.output (13, 0)#Баруун мотор хоцрогдсон IO.output (15, 1) def stp (): IO.output (21, 0)#Зүүн мотор IO.output (22, 0) IO.output (13, 0)#Баруун моторын зогсолт IO.output (15, 0) ############################# ##################################################### ###################### def main (): capWebcam = cv2. VideoCapture (0)#зарлах VideoCapture объект ба вэбкамертай холбогдож, 0 => 1 -р вэбкамер ашиглана уу) capWebcam.set (cv2. CAP_PROP_FRAME_WIDTH, 320.0) # нарийвчлалыг 320x240 болгож өөрчил.) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) хэрэв capWebcam.isOpened () == Худал: # VideoCapture объект вэбкамертай амжилттай холбогдсон эсэхийг шалга "алдаа: capWebcam -д амжилттай хандаагүй / n / n" # үгүй бол алдааны мессежийг хэвлэх os.system ("түр зогсоох"))! = 27 ба capWebcam.isOpened (): # Esc товчлуур дарагдах эсвэл вэбкамер холболт тасрах хүртэл blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # blnFrameReadSuccessful эсвэл imgOriginal биш бол дараагийн хүрээг уншина уу: # хэрэв хүрээ амжилттай уншаагүй бол "алдаа: хүрээ вэбкамераас уншаагүй / n" хэвлэх алдааны зурвасыг os.system -ээс гаргах ("түр зогсоох") Хэрэглэгч товчлуур дарах хүртэл # түр зогсооно, ингэснээр хэрэглэгч алдааны мэдэгдлийг харах боломжтой болно # гарах үед давталт (програмаас гардаг) # төгсгөл бол 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. массив ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh (np) 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) # хувьсах тойргийг боловсруулсан зурган дээрх бүх дугуйлангаар бөглөнө үү биш Аль нь ч биш: # энэ мөр нь тойрог олдоогүй тохиолдолд програмыг дараагийн мөрөнд сүйрэхээс урьдчилан сэргийлэхийн тулд зайлшгүй шаардлагатай. IO.output (7, 1) тойрог доторх тойрог [0]: # тойрог бүрийн хувьд x, y, радиус = тойрог # x, y, радиус хэвлэх "бөмбөгний байрлал x =" + str (x) + ", y =" + str (y) + ", радиус =" + str (радиус) # хэвлэх бөмбөгний байрлал ба радиус obRadius = int (радиус) xAxis = int (x) if obRadius> 0 & obRadius100 & xAxis180: print ("Баруун тийш шилжих") ryt () elif xAxis <100: print ("Зүүн тийш шилжих") lft () өөр: stp () өөр: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # илрүүлсэн объектын төвд жижиг ногоон тойрог зурах cv2.circle (imgOriginal, (x, y), радиус, (0, 0, 255), 3) # илрүүлсэн объектын эргэн тойронд # улаан тойрог зур # төгсгөлд # төгсгөл байвал өөрөөр хэлбэл: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # цонх үүсгэх, CV2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # цонхны хэмжээг өөрчлөхийн тулд WINDOW_AUTOSIZE -ийг ашиглана уу эсвэл цонхны хэмжээг өөрчлөхийг зөвшөөрөхийн тулд WINDOW_NORMAL -ийг ашиглаарай cv2.imshow ("imgOriginal", imgOri ginal)#харуулах цонх cv2.imshow ("imgThresh", imgThresh)#end байхад cv2.destroyAllWindows ()#санах ой буцаах цонхыг устгах ###################### ###################################################### ############################### Хэрэв _name_ == "_main_": main ()
Одоо зөвхөн програмыг ажиллуулах л үлдлээ
python tracker.py
Баяр хүргэе! Таны өөрөө жолооддог ровер бэлэн боллоо! Хэт авианы мэдрэгч дээр суурилсан навигацийн хэсэг удахгүй дуусах бөгөөд би үүнийг зааж өгөх болно.
Уншсанд баярлалаа!
Зөвлөмж болгож буй:
Микро: бит MU харааны мэдрэгч - Объектын хяналт: 7 алхам
Бичил: битийн MU харааны мэдрэгч - объектын хяналт: Тиймээс энэхүү зааварчилгаанд бид энэхүү зааварчилгаанд суулгасан ухаалаг машиныг програмчилж эхлэх бөгөөд энэ зааварт MU харааны мэдрэгч суурилуулсан болно. жаахан объект ажиглахад хялбар байдаг тул
Opencv объектын хяналт: 3 алхам
Opencv объектын хяналт: Хөдөлгөөнт объектыг илрүүлэх нь компьютерийн алсын хараа, дүрс боловсруулахад ашигладаг техник юм. Видео бичлэгээс дараалсан олон фрэймийг янз бүрийн аргаар харьцуулж, ямар нэгэн хөдөлж буй объект илэрсэн эсэхийг тодорхойлох боломжтой
Өнгө илрүүлэхэд суурилсан объектын хяналт: 10 алхам
Өнгө илрүүлэхэд суурилсан объектын хяналт: Өгөгдөл Би энэ төслийг Raspberry PI ашиглан зураг боловсруулж, CV нээх талаар сурсан. Энэ төслийг илүү сонирхолтой болгохын тулд би хоёр SG90 Servo мотор, камер суурилуулсан. Нэг мотор нь хэвтээ чиглэлд, хоёр дахь нь босоо чиглэлд хөдөлдөг байсан
Эргэлтийн тэнхлэг бүхий объектын хянах камерын гулсагч. RoboClaw DC мотор хянагч ба Arduino дээр 3D хэвлэсэн ба барьсан: 5 алхам (зурагтай)
Эргэлтийн тэнхлэг бүхий объектын хянах камерын гулсагч. RoboClaw DC Motor Controller & Arduino дээр 3D Хэвлэсэн ба Баригдсан: Видео бүтээх сонирхлоо DIY-тэй хослуулахаас хойш энэ төсөл бол миний хамгийн дуртай төслүүдийн нэг юм. Би киног үзэхийн тулд камер дэлгэцээр гүйлгэж байгаа кинонуудын киноны дүрсийг үргэлж харж, дуурайхыг хүсдэг байсан
Замын объектын илрүүлэлтийг ашигладаг замын хөдөлгөөний анализатор: 11 алхам (зурагтай)
Замын объектын илрүүлэлтийг ашигладаг замын хөдөлгөөний анализатор: Орчин үеийн ертөнцөд гэрлэн дохио нь аюулгүй замд зайлшгүй шаардлагатай байдаг. Гэсэн хэдий ч улаан гэрэл асахтай зэрэгцэн хэн нэгэн гэрэл рүү ойртоход гэрлэн дохио олон удаа бухимдуулдаг. Энэ нь цагийг дэмий үрдэг, ялангуяа гэрэл асаж байвал