İçindekiler:

Top Takip Robotu: 8 Adım
Top Takip Robotu: 8 Adım

Video: Top Takip Robotu: 8 Adım

Video: Top Takip Robotu: 8 Adım
Video: Şerit Takip Sistemi Kaza Anı 🚘 Lane Tracking System Accident ⚡️🆘⚠️⛔️ 2024, Kasım
Anonim
Top Takip Robotu
Top Takip Robotu
Top Takip Robotu
Top Takip Robotu
Top Takip Robotu
Top Takip Robotu

Bu yazıda, bir robot olan bir top takip robotunun nasıl yapıldığını anlatacağım, bir topu tanımlayacak ve takip edecek. Temelde modern dünyada kullanılabilen otomatik bir gözetleme tekniğidir. Öyleyse, sadece içeri girelim ve inşa etmeye başlayalım…

NOT: Bu, Deakin University, School of IT, SIT-210 Embedded Systems Development'a gönderilen parça ödevidir

Gereçler

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Adım 1: Giriş

Tanıtım
Tanıtım

Günümüzün gözetimi, hepimizin bildiği gibi, dikkati kolayca dağılabilen insanların katılımına dayanması gibi büyük bir dezavantaj sağlıyor, bu nedenle bölgeleri özerk ve sürekli olarak izleyebilen bir sistem keşfetmek bizim için büyük önem taşıyordu. Ayrıca, aynı anda kararlar alırken ve buna göre yanıt verirken, iğrenç veya istenmeyen şeyleri ve tehlikeleri belirlemek istiyoruz. Bu nedenle, akıllı sistemlerin ve bilgisayarların kullanımıyla nesne takibi, otomatik gözetim sağlamak için çok önemlidir ve çok önemlidir.

Herhangi bir dış mekan gözetim sistemi, görüş alanında hareket eden nesneleri izleyebilmeli, bu nesneleri sınıflandırabilmeli ve bazı faaliyetlerini tespit edebilmelidir. Bu nesneleri gerçekçi senaryolarda izlemek ve sınıflandırmak için bir yöntem geliştirdim. Tek bir kamerada nesne takibi, arka plan çıkarma ve ardından bölge yazışması kullanılarak gerçekleştirilir. Bu, sınırlayıcı kutuların hızları, boyutları ve mesafeleri dahil olmak üzere birden fazla ipucunu hesaba katar.

Adım 2: Bu Projede Kullanılan Malzemeler ve Yazılımlar

Bu Projede Kullanılan Malzemeler ve Yazılımlar
Bu Projede Kullanılan Malzemeler ve Yazılımlar
Bu Projede Kullanılan Malzemeler ve Yazılımlar
Bu Projede Kullanılan Malzemeler ve Yazılımlar
Bu Projede Kullanılan Malzemeler ve Yazılımlar
Bu Projede Kullanılan Malzemeler ve Yazılımlar

Kullanılan Donanım Bileşenleri:

  • Ahududu Pi (x1)
  • Raspberry Pi Kamera Modülü (x1)
  • Ultrasonik Sensör (x3)
  • SparkFun Dual H-Bridge motor sürücüleri L298 (x1)
  • DC Motor (x1)
  • Breadboard (x1)
  • Bağlantı Telleri

Kullanılan Yazılım:

OpenCV

El aletleri:

piton

Adım 3: Ne Yapmalı?

Herhangi bir dış mekan gözetim sistemi, görüş alanında hareket eden nesneleri izleyebilmeli, bu nesneleri sınıflandırabilmeli ve bazı faaliyetlerini tespit edebilmelidir. Bu nesneleri gerçekçi senaryolarda izlemek ve sınıflandırmak için bir yöntem geliştirdim. Tek bir kamerada nesne takibi, arka plan çıkarma ve ardından bölge yazışması kullanılarak gerçekleştirilir. Bu, sınırlayıcı kutuların hızları, boyutları ve mesafeleri dahil olmak üzere birden fazla ipucunu hesaba katar.

Görüntüleri kare kare tespit ederken önemli olan şey, herhangi bir kare düşmesinden kaçınmaktı, çünkü bot, kare düşüşleri nedeniyle topun hareket yönünü fark edemezse, bot bir limbo durumuna geçebilir. Top kameranın menzilinden çıkarsa, limbo durumu dediğimiz duruma geçer, bu durumda bot, top çerçeveye geri gelene kadar etrafındaki boşluğu görmek için 360 derecelik bir dönüş yapar. ve ardından kendi yönünde hareket etmeye başlayın.

Görüntü analizi için her kareyi alıyorum ve ardından gereken renkle maskeliyorum. Sonra tüm konturları bulup aralarından en büyüğünü bulup bir dikdörtgene bağlıyorum. Ve dikdörtgeni ana resimde gösterin ve dikdörtgenin merkezinin koordinatlarını bulun.

Son olarak bot, topun koordinatlarını koordinat ekseninin merkezine getirmeye çalışır. Robot böyle çalışır. Bu, bir şey algılandığında ve robotun onu takip ettiğinde veya robotun izini kaybettiğinde ve şimdi üsse geri döndüğünde bilgilendirilmenizi sağlayan bir foton parçacığı gibi bir IoT cihazı kullanılarak daha da geliştirilebilir..

Görüntü işleme amacıyla benim için oldukça zor olan ahududu pi'nize OpenCV yazılımı yüklemeniz gerekiyor.

OpenCV'yi kurmak için gerekli bilgileri bu bağlantıdan alabilirsiniz: buraya tıklayın

Adım 4: Şemalar

Image
Image
şemalar
şemalar
şemalar
şemalar

Yukarıda projem için şemaları sağladım ve bununla birlikte Baskılı Devre Kartı (PCB).

Ve işte yapmanız gereken bazı ana bağlantılar:

• Öncelikle Raspberry Pi Kamera modülü doğrudan Raspberry Pi'ye bağlanır.

• Ultrasonik sensörler VCC, GND (toprak) ile aynı ortak terminale bağlanır ve ultrasonik sensörün kalan iki portu Raspberry Pi üzerindeki GPIO pinlerine bağlanır.

• Motorlar H-Bridge kullanılarak bağlanır.

• Güç, Pil kullanılarak sağlanır.

Ultrasonik sensörün nasıl çalıştığını ve nasıl çalıştığını anlamanıza yardımcı olabilecek videoyu da ekledim.

ve ayrıca yukarıdaki videoyu bulamazsanız bu bağlantıyı takip edebilirsiniz.

Adım 5: Nasıl Yapılır?

Bu projeyi bir topu takip edebilen basit bir robotu tasvir ederek yaptım. Robot, kareler alarak ve topu takip ederek görüntü işleme yapmak için bir kamera kullanır. Topu takip etmek için rengi, boyutu, şekli gibi çeşitli özellikler kullanılır.

Robot sabit kodlanmış bir renk bulur ve ardından o rengin topunu arar ve onu takip eder. Bu projede mikro denetleyici olarak Raspberry Pi'yi seçtim çünkü kamera modülünü kullanmamıza izin veriyor ve çok kullanıcı dostu olan python dilini kullandığı için kodda büyük esneklik sağlıyor ve ayrıca görüntüleri analiz etmek için OpenCV kütüphanesini kullanmamıza izin veriyor.

Motorların dönüş yönünü değiştirmek veya durdurmak için bir H-Bridge kullanılmıştır.

Görüntü analizi için her kareyi alıyorum ve ardından gereken renkle maskeliyorum. Sonra tüm konturları bulup aralarından en büyüğünü bulup bir dikdörtgene bağlıyorum. Ve dikdörtgeni ana resimde gösterin ve dikdörtgenin merkezinin koordinatlarını bulun.

Son olarak bot, topun koordinatlarını koordinat ekseninin merkezine getirmeye çalışır. Robot böyle çalışır. Bu, bir şey algılandığında ve robotun onu takip ettiğinde veya robotun izini kaybettiğinde ve şimdi üsse geri döndüğünde bilgilendirilmenizi sağlayan bir foton parçacığı gibi bir IoT cihazı kullanılarak daha da geliştirilebilir.. Bunu yapmak için, cihazları birbirine bağlayan ve IFTTT tetikleyicileri olan belirli tetikleyiciler üzerinde belirli eylemleri gerçekleştirmelerine izin veren çevrimiçi bir yazılım platformu kullanacağız.

Adım 6: Sözde Kod

Sözde Kod
Sözde Kod

İşte bir top tespit ettiğimiz OpenCV kullanan tespit kısmı için sözde kod.

7. Adım: Kod

kod
kod
kod
kod
kod
kod
kod
kod

Yukarıda kod parçacıkları ve aşağıda kodun ayrıntılı açıklaması yer almaktadır.

# gerekli paketleri içe aktar

GEREKLİ TÜM PAKETLERİ İTHALAT EDİYORUZ

picamera.array'den içe aktar PiRGBArray #Raspberry pi'de bir çözünürlük sorunu olduğundan, VideoCapture ile kare yakalayamaz

picamera'dan içe aktar PiCamera'yı içe aktar RPi. GPIO'yu GPIO olarak içe aktar içe aktarma zamanı numpy'yi np olarak içe aktar

ŞİMDİ DONANIMI KURULUR VE RASPBERRY PI'DE BAĞLANAN PİMLERİ ATANIYORUZ

GPIO.setmode(GPIO. BOARD)

GPIO_TRIGGER1 = 29 #Sol ultrasonik sensör

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #Ön ultrasonik sensör

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #Sağ ultrasonik sensör

GPIO_ECHO3 = 35

MOTOR1B=18 #Sol Motor

MOTOR1E=22

MOTOR2B=21 #Sağ Motor

MOTOR2E=19

LED_PIN=13 #Topu bulursa led'i yakar

# Pinleri çıkış ve giriş olarak ayarla

GPIO.setup(GPIO_TRIGGER1, GPIO. OUT) # Tetikleyici GPIO.setup(GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup(GPIO_TRIGGER2, GPIO. OUT) # GPIO.setup(GPIO_ECHO2, GPIO. IN) GPIO.setup(GPIO_TRIGGER3, GPIO. OUT) # Tetikleyici GPIO.setup(GPIO_ECHO3, GPIO. IN) GPIO.setup(LED_PIN, GPIO. OUT)

# Tetiği Yanlış (Düşük) olarak ayarla

GPIO.output(GPIO_TRIGGER1, Yanlış) GPIO.output(GPIO_TRIGGER2, Yanlış) GPIO.output(GPIO_TRIGGER3, Yanlış)

BU FONKSİYON TÜM ULTRASONİK SENSÖRLERİ KULLANIR BOT'IMIZIN ETRAFINDAKİ NESNELERLE MESAFEYİ TOPLAR

# Modülün yerleşmesine izin ver

def sonar(GPIO_TRIGGER, GPIO_ECHO): start=0 stop=0 # Pinleri çıkış olarak ayarlayın ve GPIO.setup(GPIO_TRIGGER, GPIO. OUT) girişi yapın # Trigger GPIO.setup(GPIO_ECHO, GPIO. IN) # Echo # Tetiği False olarak ayarlayın (Düşük) GPIO.output(GPIO_TRIGGER, False) # Modülün time.sleep(0.01) #while mesafe > 5 ayarlamasına izin ver: #GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO'yu tetiklemek için 10us darbe gönder. output(GPIO_TRIGGER, False) start = time.time() iken GPIO.input(GPIO_ECHO)==0 ve time.time()

DC MOTORLARIN RASPBERRY PI İLE ÇALIŞMASINI ALMAK

GPIO.setup(MOTOR1B, GPIO. OUT)

GPIO.setup(MOTOR1E, GPIO. OUT)

GPIO.setup(MOTOR2B, GPIO. OUT) GPIO.setup(MOTOR2E, GPIO. OUT)

ROBOTU ÇALIŞTIRMAK VE FARKLI YÖNLERDE HAREKET ETTİRMEK İÇİN FONKSİYONLARIN TANIMLANMASI

def ileri():

GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def ters(): GPIO.output(MOTOR1B), GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH) def sağa dönüş(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def sola dönüş(): GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH)

kesin dur():

GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW)

KAMERA MODÜLÜNÜN ÇALIŞMASI VE AYARLARIN YAPILMASI

#KAMERA ÇEKİMİ

#kamerayı başlat ve ham kamera yakalama kamerasına bir referans al = PiCamera() camera. Resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray(camera, size=(160, 120)) # kameraya izin ver ısınma zamanı.uyku(0.001)

ARTIK ANA ŞEYİ BOT'UN TOPU TAKİP ETTİĞİNDE VE ÖNÜNDEKİ HERHANGİ BİR ENGELDEN KAÇTIĞINDA UYGULAMAK

while(1<10): { #ön ultrasonik sensörden gelen mesafeC = sonar(GPIO_TRIGGER2, GPIO_ECHO2) #sağ ultrasonik sensörden gelen mesafeR = sonar(GPIO_TRIGGER3, GPIO_ECHO3) #sol ultrasonik sensörden gelen mesafeL = sonar(GPIO_TRIGGER1, GPIO_ECHO1) if(distanceC=8: rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep(0.0125) #while find== 0: leftturn() time.sleep(0.00625) elif DistanceL>=8: leftturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep (0.0125) rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) else: stop() time.sleep(0.01) else: #aksi takdirde ileriye doğru hareket eder() time.sleep(0.00625) if(DistanceC>10): #topun koordinatlarını kameranın hayali ekseninin merkezine getirir if(centre_x=20): if(centre_x0): flag=1 leftturn() time.sleep(0.025) forward() time.sleep(0.00003125) stop() time.sleep(0.00625) başka: stop() time.sleep(0.01)

Başka:

#topu bulursa ve çok yakınsa ledi yakar. GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", frame) rawCapture.truncate(0) # akışa hazırlık olarak akışı temizleyin sonraki kare }

GEREKLİ TEMİZLİKLERİ YAPIN

GPIO.cleanup() #tüm GPIO pinlerini serbest bırak

Adım 8: Dış Bağlantılar

Tanıtım videosunun bağlantısı: buraya tıklayın (Youtube)

Git-hub'daki Kodun bağlantısı: buraya tıklayın (Git-Hub)

Önerilen: