Мазмуну:
- 1 -кадам: Киришүү
- 2 -кадам: материалдар жана программалык камсыздоо талап кылынат
- 3 -кадам: Rover шассиин куруу
- 4 -кадам: Ultrasonic Rangefinder Ассамблеясын куруу
- 5 -кадам: Схемалар жана электр байланыштары
- 6 -кадам: SSH жана ачык резюме орнотуу
- 7 -кадам: Rover үчүн Python кодун иштетүү
Video: Raspberry Pi - Автономдуу Mars Rover OpenCV объектилерин көзөмөлдөө менен: 7 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Raspberry Pi 3, Open CV объектилерин таануу, УЗИ сенсорлору жана редуктурлуу DC моторлору менен иштейт. Бул ровер үйрөтүлгөн нерселерди көзөмөлдөп, каалаган жерде кыймылдай алат.
1 -кадам: Киришүү
Бул көрсөтмөлөрдө биз Raspberry Pi 3те иштеген CV Open программасын колдонуп, объектилерди тааный турган жана көз салуучу Автономдуу Марс Роверди курганы жатабыз, анда веб -камера же түп малина pi камерасы бар. Ошондой эле камера иштебей турган караңгы чөйрөдө анын жолун көзөмөлдөө үчүн сервого орнотулган УЗИ сенсору менен жабдылган. Piдан келген сигналдар мотор айдоочусу ICге жөнөтүлөт (L293D), ал PVC түтүктөр менен курулган корпуска орнотулган 4 x 150RPM DC кыймылдаткычтарын айдайт.
2 -кадам: материалдар жана программалык камсыздоо талап кылынат
Керектүү материалдар
- Raspberry Pi (нөлдөн башка)
- Raspberry PI камерасы же веб -камера
- L293D мотор айдоочу IC
- Робот дөңгөлөктөрү (7х4 см) X 4
- Тиштүү DC Motors (150RPM) X 4
- Шасси үчүн PVC түтүктөр
Программалык камсыздоо талап кылынат
- SSHди пи үчүн шпаклевка
- Объектти таануу үчүн резюме ачуу
3 -кадам: Rover шассиин куруу
Бул PVC шассини куруу үчүн сизге керек болот
- 2 X 8"
- 2 X 4"
- 4 T-муундары
ПВХ түтүктөрүн тепкичке окшош структурага жайгаштырыңыз жана Т-муундарга салыңыз. Сиз муундарды ого бетер күчөтүү үчүн ПВХ герметикасын колдонсоңуз болот.
Тиштүү DC моторлору PVC түтүк шасси менен кыскычтарды колдонуп, анан дөңгөлөктөр моторлор менен бурамалар аркылуу туташат.
4 -кадам: Ultrasonic Rangefinder Ассамблеясын куруу
УЗИ диапазонун табуу куралы Micro Servo мотору менен байланышкан HC-SR04 Ultrasonic сенсорунун жардамы менен курулган. Кабелдер бурама аркылуу серво моторго туташкан пластикалык корпуска салардан мурун УЗИ сенсору менен алдын ала туташат.
5 -кадам: Схемалар жана электр байланыштары
Сураныч, тиркелген схемага ылайык электр байланыштарын жасаңыз.
6 -кадам: SSH жана ачык резюме орнотуу
Эми, биз керектүү программалык камсыздоону орнотуу үчүн, биздин малина пи менен SSH керек. Биз Raspberry Piге SSHing менен баштайбыз. Сиздин Pi компьютериңиз менен бир роутерге туташканын текшериңиз жана анын роутериңиз ага IP дарегин бергенин билиңиз. Эми, эгерде сиз Windowsто болсоңуз, төмөнкү буйрукту иштетсеңиз, буйрук көрсөтмөсүн же PUTTY ачыңыз.
Сиздин Пиңиздин IPи башкача болушу мүмкүн, меники 192.168.1.6.
Эми, демейки сырсөзүңүздү киргизиңиз - "малина"
Эми, сиздин пиңизге SSH'ди киргизгениңиз үчүн, бул буйрук менен жаңыртуудан баштайлы.
sudo apt-get update && sudo apt-get upgrade
Келгиле, азыр керектүү иштеп чыгуучу куралдарды орнотолу, sudo apt-get install-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ди питон байламталары менен түзө алабыз.
sudo apt-get install 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 = ЧЫГАРУУ / -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 программасы
#Бул программа кызыл топту көзөмөлдөйт жана аны аткарууга малина пи көрсөтмө берет. syspath.append импорттоо syspath.append ('/usr/local/lib/python2.7/site-packages') импорт cv2 импорт numpy катары np импорт os импорт 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.output (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 -камераны колдонуңуз # баштапкы чечимди көрсөтүңүз "демейки чечилиш =" + 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) # тезирээк иштетүү үчүн токтомду 320x240 кылып өзгөртүү capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # show updated resolution print "updated resolution =" + str (capWebcam.get (cv2. CR_WW)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) if capWebcam.isOpened () == False: # VideoCapture объекти веб -камерага ийгиликтүү басылганын текшериңиз "катасы: capWebcam ийгиликтүү жетилген жок / n / n" # болбосо, os.system үчүн ката билдирүүсүн басып чыгарыңыз ("пауза") # колдонуучу баскычты басмайынча тыныгуу, эгерде колдонуучу ката кайтаруу # жана функциясын (программадан чыккан) # end if if cv2.waitKey (1))! = 27 жана capWebcam.isOpened (): # Esc баскычы басылганга чейин же веб -камера байланышы жоголгонго чейин blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # кийинки кадрды blnFrameReadSuccessfully же imgOriginal жок болсо окугула: # эгер кадр ийгиликтүү окулбаса "ката: кадр веб -камерадан окулбайт / n" # os.systemди чыгаруу үчүн ката тууралуу билдирүү ("пауза") Колдонуучу баскычты басмайынча # пауза, колдонуучу ката кабарын көрө алат # цикл учурунда чыгуу (программадан чыгат) # end 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. массив ([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 чөйрөлөр = cv2. HoughCircles (imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # өзгөрүлмөлүү чөйрөлөрдү иштетилген сүрөттөгү бардык чөйрөлөр менен толтуруңуз эмес Жок: # бул сызык программаны кийинки сапта кыйроодон сактап калуу үчүн керек, эгерде эч кандай чөйрө табылбаса IO.output (7, 1) тегеректер үчүн [0]: # ар бир чөйрө үчүн x, y, radius = тегерек # x, y, and radius print "ball position x =" + str (x) + ", y =" + str (y) + ", radius =" + str (radius) # print ball position жана radius 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 колдонуңуз же cv2.imshow ("imgOriginal", imgOri) WINDOW_NORMAL колдонуңуз. ginal)#windows cv2.imshow ("imgThresh", imgThresh)#end while cv2.destroyAllWindows ()#эстутум кайтаруусунан терезелерди алып салуу ##################### ###################################################### ############################## эгерде _name_ == "_main_": main ()
Эми программаны иштетүү гана калды
python tracker.py
Куттуктайм! сиздин өзү айдаган ровер даяр! Ultrasonic сенсорго негизделген багыттоо бөлүгү жакында бүтөт жана мен бул нускаманы жаңыртам.
Окуганыңыз үчүн рахмат!
Сунушталууда:
Raspberry Pi объектилерин аныктоо: 7 кадам
Raspberry Pi объектилерин аныктоо: Бул колдонмо Raspberry Piде TensorFlowдун объекттерди аныктоо API'син орнотуу боюнча этап-этабы менен көрсөтмөлөрдү берет. Бул колдонмодогу кадамдарды аткаруу менен сиз Raspberry Piңизди P ден түз видеодо объекттерди аныктоо үчүн колдоно аласыз
Raspberry Pi менен температураны жана нымдуулукту көзөмөлдөө: 6 кадам (сүрөттөр менен)
Raspberry Pi менен температураны жана нымдуулукту көзөмөлдөө: Жай келе жатат, кондиционери жоктор үй ичиндеги атмосфераны кол менен башкарууга даяр болушу керек. Бул постто мен адамдын жайлуулугу үчүн эң маанилүү параметрлерди өлчөөнүн заманбап жолун сүрөттөп жатам: температура жана нымдуулук. Т
Raspberry Pi объектилерин эсептөө: 5 кадам
Raspberry Pi объектилерин эсептөө: Компьютердин көрүүсү, албетте, фантастикалык нерсе! Муну колдонуп, компьютер " көрүү " жана айлана -чөйрөнү жакшыраак сезүү, бул татаал, пайдалуу жана салкын тиркемелерди иштеп чыгууга мүмкүндүк берет. Fa сыяктуу колдонмолор
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: 9 кадам (сүрөттөр менен)
Xbox Controller тарабынан жүздү көзөмөлдөө жана көзөмөлдөө менен кайыр суроочу робот - Arduino: Биз кайыр суроочу робот кылабыз. Бул робот кыжырдантууга же өтүп бара жаткан адамдардын көңүлүн бурууга аракет кылат. Бул алардын жүздөрүн аныктап, аларга лазер менен атууга аракет кылат. Эгер роботко тыйын берсеңиз, ал ыр ырдайт жана бийлейт. Роботко керек болот
GPS объектилерин GPS координаттарына жайгаштыруу: 8 кадам (сүрөттөр менен)
АР объектилерин GPS координаттарына кеңири реалдуулукта жайгаштыруу: Бул көрсөтмө AR объектилерин GPS координаттарында ARkit жана ARCore менен Unity3D аркылуу жайгаштыруу үчүн мобилдик тиркеме жасоону көздөйт. Мен Mapboxтун жардамы менен жасаган долбоорумду түзүү аркылуу сизге маалымат берем, ал бизге билдирүүлөрдү өзгөчө G ге белгилөөгө мүмкүндүк берет