Мазмұны:
- 1 -қадам: Кіріспе
- 2 -қадам: материалдар мен бағдарламалық қамтамасыз ету қажет
- 3 -қадам: Rover шассиін құру
- 4 -қадам: Ультрадыбыстық диапазонды құрастыру
- 5 -қадам: схемалар мен электрлік қосылыстар
- 6 -қадам: SSH және ашық түйіндемені орнату
- 7 -қадам: Rover үшін Python кодын іске қосу
Бейне: Raspberry Pi - Автономды Mars Rover OpenCV нысандарын бақылау: 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Raspberry Pi 3, ашық резюме объектілерін тану, ультрадыбыстық датчиктер мен берілісті тұрақты ток қозғалтқыштарымен жұмыс істейді. Бұл ровер үйретілген кез келген нысанды бақылай алады және кез келген рельефте қозғала алады.
1 -қадам: Кіріспе
Бұл нұсқаулықта біз Raspberry Pi 3 -те жұмыс істейтін Open CV бағдарламалық жасақтамасын қолдана отырып, объектілерді тануға және оларды бақылай алатын Автономды Марс Роверін құрғалы отырмыз. Ол сонымен қатар камера жұмыс істемейтін қараңғы ортада жолды бақылау үшін сервоға орнатылған ультрадыбыстық сенсормен жабдықталған. Пи -ден алынған сигналдар ПВХ құбырлармен салынған корпусқа орнатылған 4 x 150RPM тұрақты ток қозғалтқыштарын басқаратын IC (L293D) драйверіне жіберіледі.
2 -қадам: материалдар мен бағдарламалық қамтамасыз ету қажет
Қажетті материалдар
- Raspberry Pi (нөлден басқа)
- Raspberry PI камерасы немесе веб -камера
- L293D мотор драйвері IC
- Робот дөңгелектері (7х4 см) X 4
- Тісті доңғалақты қозғалтқыштар (150 айн / мин) X 4
- Шасси үшін ПВХ құбырлары
Бағдарламалық қамтамасыз ету қажет
- SSH -ге арналған плита
- Нысанды тану үшін түйіндемені ашыңыз
3 -қадам: Rover шассиін құру
ПВХ шассиін жасау үшін сізге қажет
- 2 X 8 «
- 2 X 4 «
- 4 Т-буындары
ПВХ құбырларын баспалдақ тәрізді етіп орналастырыңыз және Т-қосылыстарына салыңыз. ПВХ тығыздағышты буындарды одан әрі нығайту үшін қолдануға болады.
Редукторлы тұрақты ток қозғалтқыштары ПВХ құбыр шассиімен қысқыштар арқылы, содан кейін дөңгелектер қозғалтқыштармен бұрандалармен қосылады.
4 -қадам: Ультрадыбыстық диапазонды құрастыру
Ультрадыбыстық диапазонды жинау микросерво қозғалтқышына қосылған HC-SR04 ультрадыбыстық сенсордың көмегімен жасалған. Кабельдер сервоприводкаға бұрандалар арқылы қосылған пластикалық корпусқа салмас бұрын ультрадыбыстық датчикпен алдын ала қосылады.
5 -қадам: схемалар мен электрлік қосылыстар
Қосылған схемаға сәйкес электр қосылымдарын жасаңыз.
6 -қадам: SSH және ашық түйіндемені орнату
Енді біз қажетті бағдарламалық жасақтаманы орнату үшін таңқурай пи -ге 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 -ге дискіден әр түрлі кескін форматтарын алуға көмектесетін бірнеше сурет енгізу -шығару пакеттерін орнату керек.
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 көзі /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. DAM/3.3.0/
Соңында OpenCV құрастырыңыз
жасау -j4
Бұл пәрмен аяқталғаннан кейін іске қосылады. Сізге оны орнату ғана қажет.
sudo конфигурациясын жасаңыз
sudo ldconfig
7 -қадам: Rover үшін Python кодын іске қосу
Tracker.py деп аталатын Python файлын жасаңыз және оған келесі кодты қосыңыз.
sudo nano tracker.py
код:-
#ASAR бағдарламасы
#Бұл бағдарлама қызыл допты қадағалап, таңқурай пиіне оны орындауды нұсқайды. syspath.append syspath.append импорттау (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. шығысы (21, 1)#Сол жақ мотор Алға IO.шығу (22, 0) IO.шығу (13, 1)#Оң жақ мотор Алға IO.шығу (15, 0) def bac (): IO. шығыс (21, 0)#Сол жақ мотор IO. шығысы (22, 1) IO. шығысы (13, 0)#Оң мотор артқа IO. шығысы (15, 1) def ryt (): IO. шығысы (21, 0) #Сол мотор артқа IO.шығу (22, 1) IO.шығу (13, 1)#Оңға қозғалтқыш алға IO.шығу (15, 0) def lft (): IO.шығу (21, 1)#Сол мотор алға IO.шығу (22, 0) IO.шығу (13, 0)#Оң мотор артқа IO.шығу (15, 1) def stp (): IO.шығу (21, 0)#Сол мотор тоқтауы IO.шығу (22, 0) IO. шығысы (13, 0)#Оң мотор тоқтауы IO. шығысы (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) # жаңартылған ажыратымдылықты көрсету «жаңартылған ажыратымдылық =» + str (capWebcam.get (cv2_FRAME)) + «x» + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)), егер capWebcam.isOpened () == False: # VideoCapture объектісінің веб -камерамен байланыстырылғанын тексеріңіз «қате: capWebcam сәтті қол жеткізілмеген / n / n» # олай болмаса, қате туралы хабарламаны os.system -ге шығару («кідірту»))! = 27 және capWebcam.isOpened (): # Esc пернесі басылғанша немесе веб -камера байланысы үзілгенше blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # blnFrameReadSuccessful болмаса 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, радиус = шеңбер # 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 () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # анықталған объектінің ортасына cv2.circle (imgOriginal, (x, y), радиусына кішкентай жасыл шеңбер сызыңыз, (0, 0, 255), 3) # анықталатын объектінің айналасында # қызыл шеңбер сызыңыз, cv2.namedWindow («imgThresh», cv2. WINDOW_AUTOSIZE) # бекітілген терезе өлшемі үшін WINDOW_AUTOSIZE пайдаланыңыз # немесе терезенің өлшемін өзгертуге window_normal пайдаланыңыз cv2.imshow («imgOriginal», imgOri ginal)#терезелерді көрсету cv2.imshow («imgThresh», imgThresh)#end while cv2.destroyAllWindows ()#терезелерді жадтан қайтару ###################### ############################################################################################################################### ############################## егер _ аты_ == «_басты_»: main ()
Енді бағдарламаны іске қосу ғана қалды
python tracker.py
Құттықтаймын! өздігінен жүретін ровер дайын! Ультрадыбыстық сенсорға негізделген навигация бөлігі жақында аяқталады және мен бұл нұсқаулықты жаңартамын.
Оқығаныңыз үшін рахмет!
Ұсынылған:
Opencv нысандарын бақылау: 3 қадам
Opencv объектілерді бақылау: жылжымалы нысанды анықтау - бұл компьютердің көру мен суретті өңдеуде қолданылатын әдіс. Бейнеден бірнеше рет келетін кадрлар әр түрлі әдістермен салыстырылады, олар қозғалатын объектіні анықтайды
NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесі: 6 қадам
NodeMCU көмегімен IoT негізіндегі топырақтағы ылғалдылықты бақылау мен бақылау жүйесі: Бұл оқулықта біз ESP8266 WiFi модулін, яғни NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесін енгізетін боламыз. Бұл жобаға қажет компоненттер: ESP8266 WiFi модулі- Amazon (334/- INR) реле модулі- Amazon (130/- INR
OpenCV мен Tensorflow көмегімен Dragonboard 410c немесе 820c нысандарын анықтау: 4 қадам
OpenCV мен Tensorflow көмегімен Dragonboard 410c немесе 820c нысандарын анықтау: Бұл нұсқаулықта объектілерді анықтау қосымшасын іске қосу үшін Python 3.5 үшін OpenCV, Tensorflow және машиналық оқыту жүйелерін орнату әдісі сипатталған
FoldTronics: жиналмалы HoneyComb құрылымдарының көмегімен интеграцияланған электроника көмегімен 3D нысандарын құру: 11 қадам
FoldTronics: HoneyComb құрылымдарын қолдана отырып, интеграцияланған электроникамен 3D нысандарын құру: Бұл оқулықта біз электрониканы 3D бүктелген объектілерге біріктіру үшін 2D кесуге негізделген өндіріс техникасы FoldTronics ұсынамыз. Негізгі идея - 2D парақты кесу плоттерінің көмегімен 3D ұялы құрылымға жиналатын етіп кесу және тесу
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайырымдылық робот - Arduino: 9 қадам (суреттермен)
Xbox Controller арқылы бетті бақылау және бақылау арқылы қайыршы робот - Arduino: Біз қайыршы робот жасамақпыз. Бұл робот тітіркендіруге немесе өтіп бара жатқан адамдардың назарын аударуға тырысады. Бұл олардың беттерін анықтап, оларға лазермен оқ атуға тырысады. Егер сіз роботқа тиын берсеңіз, ол ән айтып, би билейді. Роботқа қажет болады