İçindekiler:
- Gereçler
- Adım 1: Giriş
- Adım 2: Bu Projede Kullanılan Malzemeler ve Yazılımlar
- Adım 3: Ne Yapmalı?
- Adım 4: Şemalar
- Adım 5: Nasıl Yapılır?
- Adım 6: Sözde Kod
- 7. Adım: Kod
- Adım 8: Dış Bağlantılar
Video: Top Takip Robotu: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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ş
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
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
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
İşte bir top tespit ettiğimiz OpenCV kullanan tespit kısmı için sözde kod.
7. Adım: 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:
Arduino - Labirent Çözen Robot (MicroMouse) Duvar Takip Robotu: 6 Adım (Resimli)
Arduino | Labirent Çözen Robot (MicroMouse) Duvar Takipçi Robot: Hoş Geldiniz Ben Isaac ve bu benim ilk robotum "Striker v1.0". Bu Robot basit bir Labirenti çözmek için tasarlandı. Yarışmada iki labirentimiz vardı ve robot onları tanımlayabildi. Labirentteki diğer herhangi bir değişiklik, labirentte bir değişiklik gerektirebilir
PHIL Nasıl Yapılır - Bir Işık Takip Robotu: 6 Adım (Resimlerle)
PHIL Nasıl Yapılır - Bir Işık İzleme Robotu: Bu Eğitilebilir Kitapta, Arduino Uno kullanarak bu çift eksenli ışık izleme robotunu nasıl yaptığımı göstereceğim. Tüm CAD ve kodlar dahil edilecektir, böylece herhangi bir programlama veya tasarım becerisine ihtiyaç duymadan kendiniz oluşturabilirsiniz. Tüm ihtiyacınız olacak
5'i 1 Arada Arduino Robotu - Beni Takip Et - Satır Takip - sumo - Çizim - Engelden Kaçınma: 6 Adım
5'i 1 Arada Arduino Robotu | Beni Takip Et | Satır Takip | sumo | Çizim | Engelden Kaçınma: Bu robot kontrol panosu, bir ATmega328P mikro denetleyici ve bir L293D motor sürücüsü içerir. Elbette bir Arduino Uno kartından farkı yok ama motoru sürmek için başka bir kalkana ihtiyaç duymadığı için daha kullanışlı! Zıplamaktan muaftır
Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
Küçük Dükkanlar için Takip ve Takip: Kısa mesafeli teslimatlar için e-bisiklet veya e-scooter üzerine monte edilmesi gereken küçük dükkanlar için yapılmış bir sistemdir, örneğin hamur işleri teslim etmek isteyen bir fırın. Track and Trace ne anlama geliyor?Track and Trace ca tarafından kullanılan bir sistemdir
180° Top Takip Kamerası: 5 Adım (Resimlerle)
Top İzleme 180° Kamera: İlk projeme hoş geldiniz! Yaptıklarımı paylaşmaktan ve size kendi izleme kameranızı oluşturmanın adımlarını göstermekten heyecan duyuyorum. Bu proje, Python ile birlikte OpenCV kütüphanesini kullanarak mümkün oldu