Microsoft Robotics Studio etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Microsoft Robotics Studio etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

25 Mayıs 2008 Pazar

Microsoft Robotics Studio, C#, Servo ve IR Sensör ile Engel Tanıma

En son makalemde açı mesafe arasındaki ilişkiden bahsetmiş rota planlama için nasıl kullanılabileceğine değinmiştim. Basit trigonometriden faydalandığımız bir diğer konuda engel tanıma. Bildiğiniz üzere mesafe ölçümü için sharp ir mesafe sensörleri kullanıyorum. Bu yazımda C# ve Microsoft Robotics Studio ile sabit olarak duran robotun çevredeki engelleri olan algısından bahsedeceğim.
Engel tanıma için bu testimde robot durağan iken etrafındaki engelleri nasıl algılıyor bunu merak ettim. Video da daha iyi görebileceğiniz gibi robotumun üzerinde servo üzerine monte edilmiş 3 adet Sharp IR mesafe sensörü var. Aslında burada basit olarak yaptığım 20 derece lik hareketlerle sensöre ait okumaları alıp bunları bir kartezyen koordinat sisteminde göstermek. "+" işaretleri algıladığı engelleri belirtiyor. Aslında robotun yaptığı işlemler basit ve şu şekilde.
  1. Son dereceye 20 derece ekle ve servoyu hareket ettir.
  2. 500 ms bekle (daha doğru bir okuma için)
  3. Sharp IR sensörden gelen mesafeyi oku.
  4. Mesafe ve açıdan gelen bilgilere göre merkez nokta kendin olmak üzere bunu kartezyen koordinat sitemine çiz.

Bahsi geçen adımlar için bir timerdan faydalanıp son okuma derecesini integer olarak tuttum. Timer tick fonksiyona ise yukarıdaki işlemleri ekledim oldukça basit.

Microsoft Robotics Studio C# ve IR Sensör ile Engel Tanıma Bu tarz bir tarama işleminin en kötü yanı tarama işleminin aldığı süre zira okuma derecesini düşürürseniz tarama çok uzun sürüyor ama aldığınız veriler daha detaylı oluyor. Dereceyi arttırırsanız ise doğal olarak o açı aralığındaki bir nesneyi kaçırma ihtimaliniz oldukça artıyor.
Okumalarda yaşadığım bir diğer sıkıntı ise ortamın ısısı, ışık, parlaklı ve matlık gibi etkenlerin sharp ir mesafe sensörü üzerindeki etkisi. Sharp IR sensörün gönderdiği ışın ve çarptığı yüzeyin açısı sanki algılamada hata payını arttırıyor. Video da izleyeceğiniz gibi eğimi düşük yani ışını daha küçük bir açıyla çarptığı noktalar algılanan mesafede değişimlere sebep oluyor. Geniş açıdan baktığımızda ise turret'ın dönme hareketi ile okumalar arasında bir ilişki olduğunu söyleyebilirim. Duvar gibi düz bir yüzeyi çizgi olarak algılamak yerine eğri olarak algılıyor. Bunun üzerine yoğunlaşmam ve ışının olası çarpma açılarını değerlendirecek bir normalizasyon algoritması üzerinde çalışmam gerekecektir. Yoksa robot olduğunu düşündüğü yerde hiçbir zaman olamayacak ve engel olmadığını düşündüğü yerde bir engel ile karşılaşacaktır. Bunların hepsi ayrı bir dalın uzmanlık alanı bu sebeple ileride odometri ve slam algoritmaları üzerine biraz daha yoğunlaşacağım.

Bir sonraki denememde servoyu sadece gerekli olduğu zamanda kullanarak okuma yapmak ve hareketli olarak yapılan algılamalar üzerinde yoğunlaşacağım. Bu durumda önümde SLAM algoritamaları, odometri gibi kavramlar beni bekliyor olacak. Engellere takılmamanız dileğiyle.

4 Nisan 2008 Cuma

C# .Net ve Microsoft Robotics Studio ile Harita Çıkaran ilk Robotum

Robot Şasi Tasarımı Çok uzun zamandır kendi robotumu yapmak istiyordum ve bir miktar yatırımla donanım üzerinde karar kıldım. Mekanik aksamı hazır almak fiyat üzerinde oldukça fark yaratacağından bu aksamı kendim yapmaya karar verdim.

Sensörler, motor, servo ve kontrol kartı için .Net ve C# üzerinden bu devre elemanlarını kontrol etmeyi sağlayan Serializer.Net platformunu tercih ettim. Oldukça yeni Microsoft Robotics Studio desteği olan bu platform .Net üzerinden devre elemanlarına oldukça kolay erişim sağlıyor. Robotics Connection tarafından üretilen ve tasarlanan parçaları sipariş ettim ve yüklüce bir kargo parası vermeyi de ihmal etmedim. Tabiki verdiğim siparişin 100$'ı aşması sebebiyle gümrüğü takılması kaçınılmazdı bu sebeple Türkiye'ye girişte yüklüce gümrük ödemeyi de kabullendim.

Siparişini verdiğim parçalar şu şekildeydi.
  1. Sharp IR Sensor Cable 3 adet 8,97$
  2. Serializer .NET Robot Controller 1 adet, 3 Sharp GP2D12 Infrared Sensors & Cables, +1 Pack of 5, 12" Female-to-Female Jumper Wires, 186,84$
  3. Optical Encoder Modules & Disks 1 adet 29,95 $
  4. DC Gearhead Robot Motor 37,97 $
  5. Hitec HS-322HD Servo 9,99$
  6. Kargo 38,13$

Toplam 311,83$ tuttu, ancak gümrüğe girmesiyle beraber tam hatırlamamam ile birlikte yaklaşık 100 YTL de gümrük ödemek durumunda kaldım.

Yüklü bir para vermeme rağmen bu parçaların ilerideki projelerim için yeniden kullanabilme fırsatım bunu uzun vadeli ve mantıklı bir yatırım olarak görmemi sağladı. Eşimin bu konuda bana desteği olmasaydı böyle bir parayı vermem imkansıza yakındı. Kadınlar çok ikna edici oluyorlar.

Bu parçaların tamamını ilk robotum da kullanmayacak olsamda ilerideki projelerim için satın almayı tercih ettim zira kargo ücreti oldukça yüklü tutuyor. Bu projemde Optical Encoder kullanmayı düşünmüyorum zira motorun üzerinde zaten bu encoder lardan bir tane geliyor.

Parçalarım gelmesi yaklaşık olarak 3 hafta sürdü ve inanın bana beklediğim her saniyeye değerdi. Kargo küçük bir kutuda gelmesine rağmen çok iyi paketlenmişti. Robotics Connection bu konuyu oldukça ciddiye alıyor zira kutunun içinde daha önce hiç bir kutuda görmediğim hava yastıkları vardı. Bu yastıklar büyük olasılıkla parçalara düşme çarma anında bir hasar gelmemesi sebebiyle özenle yerleştirilmişti.

Bu parçaların gelmesiyle birlikte bir hayalime daha yaklaşmış oldum. Bir sonraki yazımda projemle ilgili ilk denemeleri aktaracağım ayrıca yapacağım robot ile ilgili daha ayrıntılı bilgi vermeye çalışacağım.