Daftar Isi:
- Langkah 1: Pendahuluan
- Langkah 2: Diperlukan Bahan & Perangkat Lunak
- Langkah 3: Membangun Rover Chassis
- Langkah 4: Membangun Perakitan Pengintai Ultrasonik
- Langkah 5: Skema dan Sambungan Listrik
- Langkah 6: SSH dan Buka Instalasi CV
- Langkah 7: Menjalankan Kode Python untuk Rover
Video: Raspberry Pi - Rover Mars Otonom Dengan Pelacakan Objek OpenCV: 7 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Didukung oleh Raspberry Pi 3, pengenalan objek CV Terbuka, sensor ultrasonik, dan motor DC yang diarahkan. Penjelajah ini dapat melacak objek apa pun yang dilatihnya dan bergerak di medan apa pun.
Langkah 1: Pendahuluan
Dalam Instruksi ini, kita akan membangun Autonomous Mars Rover yang dapat mengenali objek dan melacaknya menggunakan perangkat lunak Open CV yang berjalan pada Raspberry Pi 3 dengan opsi untuk menggunakan perangkat webcam atau kamera raspberry pi asli. Ini juga dilengkapi dengan sensor Ultrasonik yang dipasang pada servo untuk melacak jalannya di lingkungan gelap di mana kamera tidak akan berfungsi. Sinyal yang diterima dari Pi dikirim ke IC driver motor (L293D) yang menggerakkan motor DC 4 x 150RPM yang dipasang pada bodi yang dibuat dengan pipa PVC.
Langkah 2: Diperlukan Bahan & Perangkat Lunak
Bahan yang Dibutuhkan
- Raspberry Pi (Apa saja kecuali nol)
- Kamera Raspberry PI atau webcam
- IC driver motor L293D
- Roda Robot (7x4cm) X 4
- Motor DC Diarahkan (150RPM) X 4
- Pipa PVC untuk sasis
Perangkat lunak yang diperlukan
- Putty untuk SSH dalam Pi
- Buka CV untuk pengenalan objek
Langkah 3: Membangun Rover Chassis
Untuk membangun sasis PVC ini, Anda perlu
- 2X8"
- 2X4"
- 4 T-Sendi
Susun pipa PVC dalam struktur seperti tangga dan masukkan ke dalam T-joint. Anda dapat menggunakan sealant PVC untuk membuat sambungan lebih kuat.
Motor DC yang digerakkan dihubungkan dengan sasis pipa PVC menggunakan klem dan kemudian roda dihubungkan dengan motor menggunakan sekrup.
Langkah 4: Membangun Perakitan Pengintai Ultrasonik
Rakitan pencari jangkauan ultrasonik dibuat menggunakan sensor Ultrasonik HC-SR04 yang terhubung dengan motor Servo Mikro. Kabel disambungkan terlebih dahulu dengan sensor ultrasonik sebelum dimasukkan ke dalam wadah plastik yang terhubung ke motor servo melalui sekrup.
Langkah 5: Skema dan Sambungan Listrik
Silakan buat sambungan listrik sesuai diagram sirkuit terlampir.
Langkah 6: SSH dan Buka Instalasi CV
Sekarang, kita perlu SSH ke raspberry pi kita untuk menginstal perangkat lunak yang diperlukan. Kami akan mulai dengan SSHing ke Raspberry Pi kami. Pastikan Pi Anda terhubung ke router yang sama dengan PC Anda dan Anda tahu itu alamat IP yang ditetapkan oleh router Anda. Sekarang, buka command prompt atau PUTTY jika Anda menggunakan Windows dan jalankan perintah berikut.
IP Pi Anda mungkin berbeda, milik saya 192.168.1.6.
Sekarang, masukkan kata sandi default Anda - "raspberry"
Sekarang, setelah Anda memiliki SSH ke dalam Pi Anda, Mari kita mulai dengan memperbarui dengan perintah ini.
sudo apt-get update && sudo apt-get upgrade
Mari kita instal alat pengembang yang diperlukan sekarang, sudo apt-get install build-essential cmake pkg-config
Selanjutnya, kita perlu menginstal beberapa paket I/O gambar yang akan membantu Pi kita mengambil berbagai format gambar dari disk.
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
Sekarang, beberapa paket untuk mengambil video, streaming langsung, dan mengoptimalkan kinerja OpenCV
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
Kita juga perlu menginstal file header Python 2.7 dan Python 3 sehingga kita dapat mengkompilasi OpenCV dengan python binding
sudo apt-get install python2.7-dev python3-dev
Mengunduh kode sumber OpenCV
cd ~
wget -O opencv.zip
buka zip opencv.zip
Mengunduh repositori opencv_contrib
wget -O opencv_contrib.zip
unzip opencv_contrib.zip
Disarankan juga untuk menggunakan lingkungan virtual untuk menginstal OpenCV.
sudo pip instal virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
Sekarang, virtualenv dan virtualenvwrapper telah diinstal, kita perlu memperbarui ~/.profile kita untuk memasukkan baris berikut di bagian bawah
ekspor WORKON_HOME=$HOME/.virtualenvs ekspor VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 sumber /usr/local/bin/virtualenvwrapper.sh
Buat lingkungan virtual python Anda
mkvirtualenv cv -p python2
beralih ke lingkungan virtual yang dibuat
sumber ~/.profile
kerja cv
Menginstal NumPy
pip install numpy
Kompilasi & Instal OpenCV
cd ~/opencv-3.3.0/
membangun mkdir
pembuatan 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/modules / -EXAMPLES=ON.
Akhirnya kompilasi OpenCV
buat -j4
Setelah perintah ini selesai dijalankan. Yang perlu Anda lakukan adalah menginstalnya.
sudo membuat konfigurasi
sudo ldconfig
Langkah 7: Menjalankan Kode Python untuk Rover
Buat file Python bernama tracker.py dan tambahkan kode berikut ke dalamnya.
sudo nano tracker.py
kode:-
#ASAR Program
#Program ini melacak bola merah dan menginstruksikan raspberry pi untuk mengikutinya. import sys sys.path.append('/usr/local/lib/python2.7/site-packages') import cv2 import numpy as np import os import RPi. GPIO as 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)#Kiri Motor Maju IO.output(22, 0) IO.output(13, 1)#Motor Kanan Maju IO.output(15, 0) def bac(): IO.output (21, 0)#Motor Kiri mundur IO.output(22, 1) IO.output(13, 0)#Motor Kanan mundur IO.output(15, 1) def ryt(): IO.output(21, 0) #Motor Kiri mundur IO.output(22, 1) IO.output(13, 1)#Motor Kanan maju IO.output(15, 0) def lft(): IO.output(21, 1)#Motor Kiri maju IO.output(22, 0) IO.output(13, 0)#Motor Kanan mundur IO.output(15, 1) def stp(): IO.output(21, 0)#Motor kiri berhenti IO.output(22, 0) IO.output(13, 0)#Right Motor stop IO.output(15, 0) ################################## ############################################################# ##################### def main(): capWebcam = cv2. VideoCapture(0) # mendeklarasikan a VideoCapture objek dan kaitkan ke webcam, 0 => gunakan webcam pertama # tampilkan resolusi asli cetak "resolusi default = " + 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) # ubah resolusi menjadi 320x240 untuk pemrosesan yang lebih cepat capWebcam.set(cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # tampilkan resolusi yang diperbarui cetak "resolusi yang diperbarui = " + str(capWebcam.get(cv2. CAP_PROP_TH)RAME_PROP_TH)) + "x" + str(capWebcam.get(cv2. CAP_PROP_FRAME_HEIGHT)) if capWebcam.isOpened() == Salah: # periksa apakah objek VideoCapture dikaitkan ke webcam berhasil mencetak "kesalahan: capWebcam tidak berhasil diakses\n\n" # jika tidak, cetak pesan kesalahan ke std out os.system("pause") # jeda sampai pengguna menekan tombol sehingga pengguna dapat melihat pesan kesalahan kembali # dan fungsi keluar (yang keluar dari program) # end if while cv2.waitKey(1) != 27 dan capWebcam.isOpened(): # sampai tombol Esc ditekan atau koneksi webcam terputus blnFrameReadSuccessf ully, imgOriginal = capWebcam.read() # baca frame berikutnya jika tidak blnFrameReadSuccessfully atau imgOriginal is None: # jika frame tidak berhasil dibaca print "error: frame not read from webcam\n" # cetak pesan error ke std out os.system ("jeda") # jeda hingga pengguna menekan tombol sehingga pengguna dapat melihat pesan kesalahan break # exit while loop (yang keluar dari program) # end if imgHSV = cv2.cvtColor(imgOriginal, cv2. COLOR_BGR2HSV) imgThreshLow = cv2.inRange(imgHSV, np.array([0, 135, 135]), np.array([18, 255, 255])) imgThreshTinggi = cv2.inRange(imgHSV, np.array([165, 135, 135]), np. array([179, 255, 255])) imgThresh = cv2.add(imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur(imgThresh, (3, 3), 2) imgThresh = cv2.dilate(imgThresh, np.ones((5, 5), np.uint8)) imgThresh = cv2.erode(imgThresh, np.ones((5, 5), np.uint8)) intRows, intColumns = imgThresh.bentuk lingkaran = cv2. HoughCircles(imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # isi lingkaran variabel dengan semua lingkaran di gambar yang diproses jika lingkaran is not None: # baris ini diperlukan untuk menjaga program agar tidak crash pada baris berikutnya jika tidak ada lingkaran yang ditemukan IO.output(7, 1) untuk lingkaran dalam lingkaran[0]: # untuk setiap lingkaran x, y, radius = lingkaran # break out x, y, dan radius print "posisi bola x = " + str(x) + ", y = " + str(y) + ", radius = " + str(radius) # cetak posisi bola dan radius obRadius = int(radius) xAxis = int(x) if obRadius>0 & obRadius100&xAxis180: print("Moving Right") ryt() elif xAxis<100: print("Moving Left") lft() else: stp() else: stp () cv2.circle(imgOriginal, (x, y), 3, (0, 255, 0), -1) # menggambar lingkaran hijau kecil di tengah objek yang terdeteksi cv2.circle(imgOriginal, (x, y), radius, (0, 0, 255), 3) # menggambar lingkaran merah di sekitar objek yang terdeteksi # end for # end if else: IO.output(7, 0) cv2.namedWindow("imgOriginal", cv2. WINDOW_AUTOSIZE) # create windows, gunakan WINDOW_AUTOSIZE untuk ukuran jendela tetap cv2.namedWindow("imgThresh", cv2. WINDOW_AUTOSIZE) # atau gunakan WINDOW_NORMAL untuk mengizinkan pengubahan ukuran jendela cv2.imshow("imgOriginal", imgOri ginal) # tampilkan windows cv2.imshow("imgThresh", imgThresh) # end while cv2.destroyAllWindows() # hapus windows dari memori kembali #################### ############################################################# ########################### jika _name_ == "_main_": main()
Sekarang tinggal menjalankan programnya
python tracker.py
Selamat! rover self-driving Anda sudah siap! Bagian navigasi berbasis sensor ultrasonik akan segera selesai dan saya akan memperbarui instruksi ini.
Terima kasih sudah membaca!
Direkomendasikan:
Micro:bit MU Vision Sensor - Pelacakan Objek: 7 Langkah
Micro:bit MU Vision Sensor - Object Tracking: Jadi dalam instruksi ini kita akan mulai memprogram Mobil Pintar yang kita buat di instruksi ini dan bahwa kita memasang sensor visi MU di instruksi ini. Kita akan memprogram mikro: sedikit dengan beberapa pelacakan objek sederhana, jadi
Pelacakan Objek Opencv: 3 Langkah
Pelacakan Objek Opencv: Deteksi objek bergerak adalah teknik yang digunakan dalam visi komputer dan pemrosesan gambar. Beberapa frame berurutan dari video dibandingkan dengan berbagai metode untuk menentukan apakah ada objek bergerak yang terdeteksi. Deteksi objek bergerak telah digunakan untuk
Micro:bit MU Vision Sensor - Pelacakan Objek: 6 Langkah
Sensor Penglihatan MU Mikro:bit - Objek Pelacakan: Ini adalah panduan keempat saya untuk sensor penglihatan MU untuk mikro:bit. Di sini saya akan membahas cara melacak objek dengan mikro:bit dan menulis koordinat ke layar OLED. Saya memiliki panduan saya yang lain melalui cara menghubungkan mikro: bit ke
Pelacakan Objek Berbasis Deteksi Warna: 10 Langkah
Pelacakan Objek Berbasis Deteksi Warna: Cerita Saya melakukan proyek ini untuk mempelajari pemrosesan gambar menggunakan Raspberry PI dan membuka CV. Untuk membuat proyek ini lebih menarik saya menggunakan dua motor Servo SG90 dan memasang kamera di atasnya. Satu motor digunakan untuk bergerak horizontal dan motor kedua digunakan untuk bergerak vertikal
Slider Kamera Pelacakan Objek Dengan Sumbu Rotasi. 3D Dicetak & Dibangun di RoboClaw DC Motor Controller & Arduino: 5 Langkah (dengan Gambar)
Slider Kamera Pelacakan Objek Dengan Sumbu Rotasi. 3D Dicetak & Dibangun di RoboClaw DC Motor Controller & Arduino: Proyek ini telah menjadi salah satu proyek favorit saya sejak saya menggabungkan minat saya membuat video dengan DIY. Saya selalu melihat dan ingin meniru bidikan sinematik dalam film di mana kamera bergerak melintasi layar sambil menggeser untuk melacak