Merhabalar herkese kolay gelsin. 4. sınıf elektrik elektronik öğrencisiyim ve bitirme projesi olarak hareketli kapılardan geçen bir araç yapacağım. Demo olarak engel algılayan ve motoru durduran bir araç tasarladım ancak bu aracın hareketli engelde durmasını nasıl sağlayacağımı bilmiyorum. Engeli önünden çektiğim anda motorlar çalışmaya başlıyor ve araç hareketleniyor. Bu şekilde olursa kapıya çarpacak. Algoritması hakkında yardımcı olacak birisi varsa çok sevinirim. Şimdilik araştırmalarıma göre Arduino UNO ve Hc-Sr04 kullanarak yapacağım.
Tam olarak yapmayı planladığım araç videodadır. Yardımlarınız için şimdiden teşekkür ederim.
Ben olsam önce kapının periyodik bir biçimde açılıp açılmadığına karar vermekle başlardım algoritmaya. Bu işlemi de şöyle yapmak gerekiyor;
robot kapının önüne geldikten sonra ilk kapalı/açık olma durumunu değerlendirmemeli, çünkü robot oraya ulaştığında kapı kaç saniyedir kapalı ve kaç saniye sonra açılacak bunu tahmin edemezsin. O yüzden, kapının açık olduğu ilk durumun hemen sonrasındaki süreç değerlendirmeye alınmalı. Kapı açık konumundan kapalı konumuna kaç saniyede geçiyor ilk döngüde bunun tespiti yapılmalı. Ardından bir döngü daha beklenerek kapı ikinci seferde açık durumundan kapalı durumuna kaç saniyede geçiyor bu saptanmalı. Eğer birinci ve ikinci döngüdeki süreler eşit ise program robota kapının periyodik olarak açıldığını bildirmeli. Bu süre senin motorların içerisindeki ramp current'ı ve motorların aktif hale geçme süresini de hesaba katarak kapı açılır açılmaz robotun engeli geçmesi için gereken toplam zamanı hesaplamana yardım edecektir.
Bir çok yolu olabilir ama benim aklıma ilk şu geldi:
Kapıya geldiğini anlamak için kapının biraz gerisine beyaz bir çizgi koyup robotun çizgiyi algılamasını sağlayabilirsiniz.
Bu tarz yakın mesafe engel tespitlerinde genellikle basit bir kızıl ötesi veya akustik sensörler kullanılır. Maliyet açısından benim tavsiyem kızıl ötesi sensör koymandır.
Bir çok yolu olabilir ama benim aklıma ilk şu geldi:
Kapıya geldiğini anlamak için kapının biraz gerisine beyaz bir çizgi koyup robotun çizgiyi algılamasını sağlayabilirsiniz.
Bu tarz yakın mesafe engel tespitlerinde genellikle basit bir kızıl ötesi veya akustik sensörler kullanılır. Maliyet açısından benim tavsiyem kızıl ötesi sensör koymandır.
Şuan elimde MZ80 ve HCSR04 sensörleri var. Demoyu HCSR ile hazırladım ancak MZ80 in tepkime süresi daha yüksek olduğu için onu kullanmayı düşünüyorum. Kodlamamı değiştirip birde MZ80 kızılötesi sensörle deneyeceğim.
Hareketli engeli algılayıp önünde durması için önerileriniz varsa yardımınızı alabilirim. sansar2564'ün söylediğine ek olarak, benimde aklıma kapının kenarındaki tahtaları görüp ona göre durdurmak geliyor. Ancak kapının kenarındaki tahtayı görüp durduktan sonra engeli algılayıp tekrar hareket ettirmek sorun olur mu onda biraz tereddütteyim.
Sen kızıl ötesi bir sensörü öncelikle robota dahil etmeden kapıya belli bir mesafede yerleştir. Sonra sensörün kapı açıkken ve kapalıyken verdiği cevapları analiz et. Arada mutlaka bir fark göreceksin. Bu fark yoğunluk olabilir, intensity olabilir, diversity olabilir ama mutlaka bir fark göreceksin. Gördüğün farktan sonra yazılım üzerinde gerekli algoritmayı hazırla. Zor olmadığını göreceksin. Öte yandan, alternatif bir metot istersen LabVIEW ile basit bir görüntü işleme programı yazıp kapının açık/kapalı durumunu algılayıp ona göre de bir algoritma geliştirebilirsin. Bir yerden başlaman gerekiyor.
Algoritmayı kafamda oluşturdum ve kapının önünde durma meselesini şöyle çözmeye karar verdim;
İki mod olacak, arayış ve geçiş modu. Arayış modundayken karşıda bir engel olup olmadığını araştıracak. Ses dalgası bir engele çarparsa mesafeyi hesaplayıp (örneğin 45cm), ona göre bir mesafeden sonra duracak (42cm gibi). Eğer öndeki engeli görmeyip onun yerine arkadaki engeli görürse diye engel aramayı sürekli devam ettirecek ve en kısa mesafeyi hafızasında tutup orada duracak.
Durduktan sonra maksimum hızda araba boyu+3cm kadar gidip tekrar duracak ve arama moduna tekrar dönecek.
Algoritma şeması bu şekilde;
Tekrar merhabalar.
Projemi hayata geçirmek için malzemeleri alacağım. Ancak kafama bir soru takıldı. Demo aracım şuan düz gitmiyor, sağa çekiyor biraz. Aracın düz gitmesi için encoder şart mı acaba? Pusula sensörüyle aracımı düz bir doğrultuda götürebilir miyim?
Motorların çektiği akımları ve voltajlarını ölçtüğümde aralarında güç farkı var. Bu yüzden bir teker daha hızlı dönüyor. Bunu enkoderle giderip tekerlere tur saydırıyorlar genelde ancak ben bunu sadece pusula sensörüyle yapabilir miyim diye merak ediyorum.
İlgili tarihte otomatik birleştirildi:
Düz gitme işini halletmek için encoder kullandım ancak aracım yinede düz gitmiyor. Kodun herhangi bir yerinde eksik gören var mı acaba? Yardımcı olabilir misiniz?