Სარჩევი:

Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალყურით: 7 ნაბიჯი (სურათებით)
Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალყურით: 7 ნაბიჯი (სურათებით)

ვიდეო: Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალყურით: 7 ნაბიჯი (სურათებით)

ვიდეო: Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალყურით: 7 ნაბიჯი (სურათებით)
ვიდეო: Elon Musk New Tesla Robot || #shorts #youtubeshorts #short #tesla #youtube #trending #trendingshorts 2024, ნოემბერი
Anonim
Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალთვალით
Raspberry Pi - ავტონომიური მარს როვერი OpenCV ობიექტების თვალთვალით

იკვებება Raspberry Pi 3 -ით, გახსენით CV ობიექტის ამოცნობა, ულტრაბგერითი სენსორები და გადაცემული DC ძრავები. ამ როვერს შეუძლია თვალყური ადევნოს ნებისმიერ საგანს, რომლისთვისაც იგი ვარჯიშობს და გადაადგილდეს ნებისმიერ რელიეფზე.

ნაბიჯი 1: შესავალი

Image
Image
საჭირო მასალები და პროგრამული უზრუნველყოფა
საჭირო მასალები და პროგრამული უზრუნველყოფა

ამ ინსტრუქციებში ჩვენ ვაპირებთ ავაშენოთ ავტონომიური მარს როვერი, რომელსაც შეუძლია ობიექტების ამოცნობა და თვალყურის დევნება Raspberry Pi 3 – ზე გაშვებული ღია CV პროგრამული უზრუნველყოფის გამოყენებით, ვებკამერის მოწყობილობის ან ორიგინალური ჟოლოს კამერის გამოყენების შესაძლებლობის გათვალისწინებით. იგი ასევე აღჭურვილია ულტრაბგერითი სენსორით, რომელიც დამონტაჟებულია სერვოზე, რათა თვალყური ადევნოს გზას ბნელ გარემოში, სადაც კამერა არ იმუშავებს. Pi– სგან მიღებული სიგნალები იგზავნება საავტომობილო დრაივერზე IC (L293D), რომელიც ამოძრავებს 4 x 150 RPM DC ძრავებს, რომლებიც დამონტაჟებულია PVC მილებით.

ნაბიჯი 2: საჭირო მასალები და პროგრამული უზრუნველყოფა

საჭირო მასალები და პროგრამული უზრუნველყოფა
საჭირო მასალები და პროგრამული უზრუნველყოფა
საჭირო მასალები და პროგრამული უზრუნველყოფა
საჭირო მასალები და პროგრამული უზრუნველყოფა

საჭირო მასალები

  1. ჟოლო პი (ნებისმიერი ნულის გარდა)
  2. ჟოლოს PI კამერა ან ვებკამერა
  3. L293D ძრავის მძღოლი IC
  4. რობოტის ბორბლები (7x4 სმ) X 4
  5. გადაცემათა კოლოფი DC Motors (150rpm) X 4
  6. PVC მილები შასისთვის

საჭიროა პროგრამული უზრუნველყოფა

  1. ბოთლი SSH- ში Pi- სთვის
  2. გახსენით CV ობიექტების ამოცნობისთვის

ნაბიჯი 3: ავაშენოთ როვერის შასი

როვერის შასის მშენებლობა
როვერის შასის მშენებლობა
როვერის შასის მშენებლობა
როვერის შასის მშენებლობა
როვერის შასის მშენებლობა
როვერის შასის მშენებლობა

ამ PVC შასის ასაშენებლად დაგჭირდებათ

  • 2 X 8"
  • 2 X 4"
  • 4 T- სახსრები

დაალაგეთ PVC მილები კიბის მსგავს სტრუქტურაში და ჩადეთ T- სახსრებში. თქვენ შეგიძლიათ გამოიყენოთ PVC sealant, რათა სახსრები კიდევ უფრო გაძლიერდეს.

გადაცემული DC ძრავები დაკავშირებულია PVC მილების შასასთან დამჭერების გამოყენებით და შემდეგ ბორბლები უკავშირდება ძრავებს ხრახნების გამოყენებით.

ნაბიჯი 4: ულტრაბგერითი ამომრჩევლის ასამბლეის შექმნა

შენობა ულტრაბგერითი ამომრჩევლის ასამბლეის
შენობა ულტრაბგერითი ამომრჩევლის ასამბლეის

ულტრაბგერითი დიაპაზონის მაძიებლის ასამბლეა აგებულია HC-SR04 ულტრაბგერითი სენსორის გამოყენებით, რომელიც დაკავშირებულია მიკრო სერვო ძრავასთან. კაბელები წინასწარ არის დაკავშირებული ულტრაბგერითი სენსორით პლასტმასის კორპუსში ჩასვლამდე, რომელიც დაკავშირებულია სერვო ძრავას ხრახნების საშუალებით.

ნაბიჯი 5: სქემა და ელექტრული კავშირები

სქემები და ელექტრული კავშირები
სქემები და ელექტრული კავშირები
სქემები და ელექტრული კავშირები
სქემები და ელექტრული კავშირები

გთხოვთ გააკეთოთ ელექტრული კავშირები თანდართული სქემის მიხედვით.

ნაბიჯი 6: SSH და ღია CV ინსტალაცია

SSH და ღია CV ინსტალაცია
SSH და ღია CV ინსტალაცია

ახლა, ჩვენ გვჭირდება SSH ჩვენს ჟოლოს პიში, რათა დავაინსტალიროთ საჭირო პროგრამული უზრუნველყოფა. ჩვენ დავიწყებთ SSHing– ით ჩვენს Raspberry Pi– ს. დარწმუნდით, რომ თქვენი Pi დაკავშირებულია იმავე როუტერთან, როგორც თქვენი კომპიუტერი და იცით, რომ ეს არის IP მისამართი, რომელსაც მას მიანიჭებს თქვენი როუტერი. ახლა გახსენით ბრძანების სტრიქონი ან PUTTY, თუ Windows- ზე ხართ და გაუშვით შემდეგი ბრძანება.

ssh [email protected]

თქვენი Pi- ს IP შეიძლება განსხვავებული იყოს, ჩემი არის 192.168.1.6.

ახლა შეიყვანეთ თქვენი ნაგულისხმევი პაროლი - "ჟოლო"

ახლა, როდესაც თქვენ გაქვთ SSH'd თქვენს Pi- ში, დავიწყოთ ამ ბრძანების განახლებით.

sudo apt-get განახლება && sudo apt-get განახლება

მოდით დავაინსტალიროთ დეველოპერის საჭირო ინსტრუმენტები, sudo apt-get დააინსტალირეთ build-essential cmake pkg-config

შემდეგი, ჩვენ უნდა დავაინსტალიროთ გამოსახულების I/O პაკეტი, რომელიც დაეხმარება ჩვენს 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 დააინსტალირეთ 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

ახლა, რომ ვირტუალური და ვირტუალური შემავსებელი დამონტაჟებულია, ჩვენ უნდა განვაახლოთ ჩვენი pr/.პროფილი, რომელიც მოიცავს შემდეგ ხაზებს ბოლოში

ექსპორტი WORKON_HOME = $ HOME/.virtualenvs ექსპორტი VIRTUALENVWRAPPER_PYTHON =/usr/bin/python3 წყარო /usr/local/bin/virtualenvwrapper.sh

შექმენით თქვენი პითონის ვირტუალური გარემო

mkvirtualenv cv -p პითონი 2

გადაერთეთ შექმნილ ვირტუალურ გარემოზე

წყარო ~/.პროფილი

სამუშაო cv

NumPy– ის ინსტალაცია

pip დააინსტალირეთ numpy

შეადგინეთ და დააინსტალირეთ OpenCV

cd ~/opencv-3.3.0/

მკდირის აშენება

cd აშენება

cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = ON / -D OPENCV_EXTRA_MODULES_PATH = ~/opencv_CAMIL_Boil_3

საბოლოოდ შეადგინეთ OpenCV

გააკეთე -j4

ამ ბრძანების დასრულების შემდეგ. ყველაფერი რაც თქვენ გჭირდებათ არის დააინსტალიროთ.

sudo make config

sudo ldconfig

ნაბიჯი 7: პითონის კოდის გაშვება როვერისთვის

Image
Image

შექმენით პითონის ფაილი სახელწოდებით tracker.py და დაამატეთ მას შემდეგი კოდი.

sudo nano tracker.py

კოდი:-

#ASAR პროგრამა

#ეს პროგრამა თვალყურს ადევნებს წითელ ბურთს და ავალებს ჟოლოს პის დაიცვას იგი. იმპორტი sys sys.path.append ('/usr/local/lib/python2.7/საიტი-პაკეტები') იმპორტი 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. გამომავალი (22, 1) IO. გამომავალი (13, 0)#მარჯვენა ძრავის უკან IO. გამოსავალი (15, 1) def ryt (): IO.output (21, 0) #მარცხენა საავტომობილო უკან IO.output (22, 1) IO.output (13, 1)#მარჯვენა საავტომობილო ნაბიჯია IO.output (15, 0) def lft (): IO.output (21, 1)#მარცხენა ძრავის წინ IO. გამომავალი (22, 0) IO.output (13, 0)#მარჯვენა საავტომობილო ჩამორჩენილი IO. გამომავალი (15, 1) def stp (): IO.output (21, 0)#მარცხენა საავტომობილო გაჩერება IO.output (22, 0) IO.output (13, 0)#მარჯვენა საავტომობილო გაჩერება IO.output (15, 0) ############################## #################################################### ##################### def main (): capWebcam = cv2. ვიდეოჩანაწერი (0)#გამოცხადება ვიდეოჩანაწერის ობიექტი და ასოცირება ვებკამერაზე, 0 => პირველი ვებკამერის გამოყენება # ორიგინალური გარჩევადობის ჩვენება ამობეჭდვა "ნაგულისხმევი გარჩევადობა =" + სტრიქონი (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT) cap)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) თუ capWebcam.isOpened () == მცდარია: # შეამოწმეთ თუ არა VideoCapture ობიექტი დაკავშირებულია ვებკამერასთან წარმატებით დაბეჭდვისას "შეცდომა: capWebcam წარმატებით არ არის წვდომა / n / n" # თუ არა, დაბეჭდეთ შეცდომის შეტყობინება std out os.system ("პაუზა") # პაუზა სანამ მომხმარებელი არ დააჭერს ღილაკს, რათა მომხმარებელმა დაინახოს შეცდომის შეტყობინების დაბრუნება # და გასვლა ფუნქცია (რომელიც პროგრამიდან გამოდის) # დასასრული თუ cv2.waitKey (1)! = 27 და capWebcam.isOpened (): # სანამ Esc ღილაკს არ დააჭერთ ან ვებკამერაზე კავშირი არ დაიკარგება blnFrameReadSuccessf ully, imgOriginal = capWebcam.read () # წაიკითხე შემდეგი ჩარჩო, თუ არ არის blnFrameReadSuccessfully ან imgOriginal არ არის: # თუ ჩარჩო წარმატებით არ იქნა წაკითხული დაბეჭდე "error: frame is not read from webcam / n" # print error message to std out 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.ones (5, 5). HOUGH_GRADIENT, 5, intRows / 4) # შეავსეთ ცვლადი წრეები ყველა წრეებით დამუშავებულ სურათში, თუ წრეები არ არის არცერთი: # ეს ხაზი აუცილებელია იმისათვის, რომ პროგრამა არ დაიშალოს მომდევნო ხაზზე, თუ წრეები არ იქნა ნაპოვნი IO. გამოსავალი (7, 1) წრეებში წრეებში [0]: # თითოეული წრისთვის x, y, რადიუსი = წრე # გარჩევა x, y და რადიუსის ამობეჭდვა "ბურთის პოზიცია x =" + str (x) + ", y =" + str (y) + ", რადიუსი =" + str (რადიუსი) # ბეჭდვის ბურთის პოზიცია და რადიუსი obRadius = int (რადიუსი) xAxis = int (x) თუ obRadius> 0 & obRadius100 & xAxis180: print ("მოძრაობს მარჯვნივ") ryt () elif xAxis <100: print ("Moving Left") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # დავხატოთ პატარა მწვანე წრე გამოვლენილი ობიექტის ცენტრში cv2. წრე (imgOriginal, (x, y), რადიუსი, (0, 0, 255), 3) # დახაზეთ წითელი წრე გამოვლენილი ობიექტის გარშემო # ბოლო # დასასრულისთვის, თუ სხვაგვარად: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # ფანჯრების შექმნა, გამოიყენეთ WINDOW_AUTOSIZE ფანჯრის ფიქსირებული ზომისთვის cv2.namedWindow ("imgThresh", cv2. WINDOW_AUTOSIZE) # ან გამოიყენეთ WINDOW_NORMAL ფანჯრის ზომის შეცვლის მიზნით cv2.imshow ("imgOriginal", imgOri ginal)#ფანჯრების ჩვენება cv2.imshow ("imgThresh", imgThresh)#დასასრული cv2.destroyAllWindows ()#მეხსიერების ფანჯრების ამოღება ###################### #################################################### ############################# თუ _name_ == "_ მთავარი_": მთავარი ()

ახლა რჩება მხოლოდ პროგრამის გაშვება

პითონის ტრეკერი. py

Გილოცავ! შენი თვითმავალი როვერი მზად არის! ულტრაბგერითი სენსორი დაფუძნებული სანავიგაციო ნაწილი მალე დასრულდება და მე განვაახლებ ამას სასწავლო.

Მადლობა წაკითხვისთვის!

გირჩევთ: