robotik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
robotik etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Mayıs 2008 Salı

Robotunuzda Difransiyel Sürüş ile Köşeleri Almak

Servo ile sürüşten vazgeçmemle birlikte difransiyel sürüş ile ilgilenmem gerekti. Kınematik ve matematik bilgim oldukça temel olmasına rağmen biraz araştırınca difransiyel sürüşü ilgilendiren denklemler konusunda biraz fikir sahibi oldum. Burada gidilen mesafe açısından istenilen açıları dönmek için ne yapmak gerekir buna değineceğim. Zaman, hız ve ivmelenme burada bahsedeceklerim içersinde yer almıyor belki ileride bunlar üzerinde zaman harcama fırsatım olduğunda değinebilirim.


Sorunumuza şöyle bakalım iki tekerlekli bir aracı nasıl istediğimiz açıda döndürebiliriz? Örneğin bir tekerlekli sandalyeyi 90 derece sola döndürmek için hangi tekerleği ne kadar döndürmek gerekir? Bunun gibi basit soruların cevapları robotun hareketi ile ilgili sorularımızın da cevaplarını oluşturuyor olucak.
Konuya pivot noktasından başlayalım örneğin bir köşeyi almak istiyorsunuz ama burada 90 derecelik direk dönüşler yerine ark çizmek işimize gelecektir. O zaman bu ark'ı nereye göre çizeceğiz. Bir sütunun etrafından köşeyi sola doğru alacağımızı hayal edersek sütun bizim pivot noktamız oluyor. "r" sütun ile sol tekerlek arasındaki mesafemiz olarak ve "b" yi de iki tekerleğin merkez noktaları (şaftı) arasındaki mesafe olarak kabul edersek.


"SL" Sol tekerleğin gideceği mesafe "SR" ise Sağ tekerleğin gideceği mesafe oluyor. Böylece "Q" açısında yuvarlak bir dönüş için gerekenleri temel olarak tamamlamış oluyoruz. PID veya PWM motor kontrolü ile birlikte ilk denemelerimi yakında paylaşıyor olurum. Bir sonraki merak konum ise zaman, ivmelenme, hız gibi etkenlerin de dahil olduğu daha az hata payı barındıran modeller nedir?

8 Mayıs 2008 Perşembe

Robotik Rota Planlama. Gidilecek Açı ve Mesafe Bilinen Noktanın Koordinatlarını Bulmak.

Otonom hareket işin içine girince ne kadar sevmesemde matematik ile uğraşmak bir zorunluluk halini alıyor. Robotumun hareketlerini kendi başına yapabilmesi için Kartezyen koordinat sistemi üzerinden rotaların(waypoint) hesaplanması temel trigonometri kullanımını mecburi kılıyor. Örneğin robotumun a(0,0) bilinen noktasından Q açısında c mesafe ilerlemesi istendiği zaman b(x,y) varış koordinatı ne olur? Bu soruyu cevaplamak için ezber halinde verilen ama ne işe yaradığını öğrenemediğim matematik bilgilerim üzerinde düşünmem gerekti. Zira keşke üçgenler üzerinde formüller göstermek yerine örnek kullanım alanlarını da lise de bize öğretselerdi.
SinA = a/c formülBu formül çıkış noktamız oluyor. Biz A açısını ve c yani mesafemizi biliyoruz. Böylece a = SinA x c ve b=CosA x c oluyor. Artık x ve y ekseninde kaç birim ekleyeceğimizi bildiğimiz için a(0,0) noktasından b(?,?) noktasına gidiş için a(0+a,0+b) bizim varış noktamızın yani b noktasının koordinatları oluyor. C# math class yardımıyla bu hesaplamaları basit bir kod yazarak yapabiliriz. Örnek olarak aşağıda yazdığım kodun bir bölümünü bulabilirsiniz.

double rada = double.Parse(numDirection.Value.ToString()) * (Math.PI / 180);

double sina = System.Math.Sin(rada);
double da = sina * Double.Parse(numDistance.Value.ToString());

double cosa = System.Math.Cos(rada);
double db = cosa * Double.Parse(numDistance.Value.ToString());

int x = lastx + Convert.ToInt32(da);
int y = lasty - Convert.ToInt32(db);

fncPaintChangePoint(x, y);
fncPaintDrawLine(lastx, lasty, x, y);

start = false;
lastx = x;
lasty = y;
Artık gidilecek noktamızı açı ve mesafe girerek görebildiğimize göre rotamızı planlamaya başlayabiliriz. Yazdığım ufak bir uygulama ile sonucu görebilirsiniz.


Robotik Rota Planlama ve Waypoint

Gidilecek mesafe ve açı verildikten sonra gördüğünüz gibi bu noktalar işaretleniyor. Rotanızdan şaşmamanız dileğiyle.

12 Nisan 2008 Cumartesi

Mekanik ve Robotik

Sunta şasi ile tasarladığım robot. Servo kontrolü ve tek motor ile sürmek konusundaki endişelerimi paylaşmıştım. Bunun dışında aksam olarak ilk bulduğum ahşap, kalem gibi parçaları kullanmak hata payının oldukça artmasına sebep oldu. Örneğin servo ile yön vermek bir işkence idi zira servoya gönderdiğiniz +10 derece komutu her serferinde ayrı bir etki yapıyordu sanki servo canlanmış o anki ruh haline göre takılıyordu. Bunun sonuçlarına ise "Autonoumus Navigation" açısından baktığımız zaman robotun nerede olduğunu bilmesinin imkanı yoktu zira sensörler 5 gittim derken mekanik aksam 2 gidebiliyordu(Matrix gibi algılarınız sizi acaba yanıltabilirmi).


Ayrıca aldığım eski akünrobot için küçük kru akü 12 voltün oldukça ağır ve büyük olduğunu fark ettim. Bu sebeple çok komik bir fiyata daha küçük ve hafif bir akü alıp denemek istedim. Güç konusunda bir ihtiyacım baştan beri var aslında. Single board computer kullanımından daha önce bahsetmiştim, buradaki sıkıntı ise SBC'nin 5V Serializer.NET'in ise 12V ile çalışması. Bu sebeple bir "Switching Voltage Regulator" kullanma ihtiyacı doğuyor zira enerjiyi ısı olarak kaybetmek yerine daha verimli bir şekilde kullanmak istiyorum. Ne kadar çok verim o kadar az şarj demek çünkü. Aslında robotics connection daki arkadaşlar bu konuda çok güzel küçücük bir devre hazırlamışlar ancak yurt dışından böyle bir şey için 30$ ödemek bana lüks geldi.
Gelelim fikir değişikliklerine aldığım 2 yeni motor ile birlikte servo sürüşünden vazgeçtim ve difransiyel olarak sürme konusunda karar kıldım. Boşa çıkan servo ile ise Sharp Sensörleri için bir turret yaparak dönmesini sağlamayı düşünüyorum. Ayrıca bu turret üzerine bir webcam de ileride monte edebilirim. Şimdilik ilk hedefim "Drive By Wire" konusunda bir adım atmak.

11 Nisan 2008 Cuma

Evlilik, Robotik ve Sağlık Hakkında

Bu yazının başlığını okuyanlar diğer makalelerimle karşılaştırdıklarında eşimin biyomekanik bir yapıya sahip olduğu fikrine kapılabilirler en baştan sizi temin ediyorum eşim %100 et ve kemiktendir. Günümüzde kendimizi ancak sıkıştırdığımız zamanlarda yaşıyoruz belkide bu sebeple hayatımız sevdiklerimiz arasından seçim yaptığımız anlarla dolu. Eşinizin her konuda sizi desteklemesi nasıl bir şey bir fikriniz varmı?

Kendimin bile emin olmadığı konularda beni iten. Yazı yazıyormu diye hiç kimsenin girmediği bir sayfayı bütün gün kontrol eden. Fotoğrafları aktarmadığım için yazı yazmadığımı anlayarak bozuk cardreaderlı laptop'a kartı tanıtmak için sabırla uğraşan ( ki iş kolu olarak bilgi teknolojileri alanında çalışan benim). Getireceği ekonomik, sosyal yükler ne olursa olsun bir kere bile aldırmadan her serferinde hayallerime, fikirlerime saygı duyan dünya tatlısı bir eşe sahipim. Düşündümde küçük yaşlarımdan beri bu tarz hobilerle uğraşmak istememe rağmen ancak evlendikten sonra buna başlamam zaten kendi kendine bir şeyler anlatıyor. Biz erkekler düz mantık adamlarız o yüzden özetlemek gerekirse ana fikir "Beyler robot yapmaya başlamak istiyorsanız evlenin!" gibi bir yargı olabilir.
Edindiğim parçalar ile birlikte robotumun mekanik aksamını para harcamamak için boşta bulduğum ahşap, kalem, eski printer parçalarından yapmaya çalışmıştım. Güç vermem ile birlikte aksamın kötü modifiye edilmiş bir serçe'ye benzediğini fark ettim. Zira sensörler doğru açılarla hizalanmamış, tekerlekler düz bir hat üzerinde oturmamış, servolar verilen komut dışında kendi benliğine sahipmiş gibi davranırken bütün düşüncelerimi gözden geçirmek zorunda kaldım. Birinci olarak servo ile bu aleti yönetmek konusundaki korkularım kabusa dönüştü ve bundan vazgeçtim. Sonuç olarak bütün ahşap, kalem gibi ıvır zıvırlardan vazgeçip düzgün bir başlangıç yapmak için Ankara Ulus'taki "Elektronikçiler Çarşısına" Gittim dükkandakilerin bilgisine, malzemelerin çeşitliliğine hayran kaldım açıkçası zira aradıklarımı bulmak konusunda çok umutlu değildim fakat çalışır durumda palet aksamı dahil bulmamla beraber bütün fikirlerim değişti.
Gittiğim dükandan 2 adet redüktörlü ve encoder'li motor aldım (Tek Kanal Encoder), bunun dışında şasi imalatı için plexiglass, vida, somun,ve daha küçük bir akü de temin ederek eve geri döndüm. Plexiglass çok zevkli bir malzeme ancak siz siz olun plexiglass keserken ki özellikle Dremel gibi bir rotary araç ile keserken güneş gözlüğü gibi bir korumanın yeterli olacağını düşünmeyin. Ben siz yapmadan bir deney gerçekleştirdim,saolsun eşim hastanede gözlerime ait fotoğrafı paylaşmak için çekti, düzgün korumanın önemi konusunda daha iyi bir fikir edinmek üzere inceleyebilirsiniz.

plexiglass kaçmış gözün fotoğrafı

Biz eşimle her çarşamba günü genelde oturur birlikte televizyon izleriz ancak bu çarşamba farklıydı çünkü aldığım parçaları denemek için sabırsızlanıyordum eşimde yeni oyuncaklarımı denemem konusunda bana destek oldu. Plexiglass ı kesmek için ölçtüm, biçtim, çizgileri çektim havalı kesiyim diye Matriximsi güneş gözlüklerimi de taktım ve dremel'i çalıştırdım. Bir süre kestikten sonra sıcak plastik malzemeler un ufak olup üstüme sıçramaya başladığını fark ettim, ancak sıcak plastiğin dayanılabilir ve güneş gözlüğünün gözlerimi korumaya yeterli olacağını düşündüm. Fakat yanılmışım, o sıcak plastik tozlardan bir demet yukarı doğrı fırladıktan sonra sol gözümün alt kapakçığına oturdu. Eşim bu konuya alıştığı için 5 dk içinde hazırlanmıştı (biz erkekler yaramaz çocuk gibi olabiliyoruz). Daha önce gözümle ilgili yaşadığım diğer travmalardan konuya alışkın olduğumdan(bile bile yine yaptım) gözümle hiç ama hiç oynamadan direk olarak hastaneye doğru eşimle beraber yola çıktım. Yolda gözlerim yaşarmaya başlamış ve batma hissi çok artmıştı ama yinede gözüme dokunmadım. Bu yazıyı okuyanlara bir uyarı gözünüze bir şey kaçarsa (toxic olmayan) sakın çıkarmaya veya gözünüzle oynamaya batma hissine rağmen çalışmayın, gözünüzü mümkün olduğunca hareket ettirmeden doğruca hastaneye gidin. Hastanede işlemler yapılıp acile girmemle beraber biriktirdiğim o koca göz yaşları bir anda damladı ve gözümdeki o parçalar ne ise çıkmıştı zira batma hissi bir anda geçmişti. Ancak mikrop kapmasını önlemek için doktorlar gözlerimi serum ile yıkamaya karar verdi. Bakın bir koruma neler değiştiriyor.

plexiglass ameliyat masasında gözden çıkarılırken fotoğraf

Sonuç olarak ekonomik olarak ta güneş gözlüğü ile bu işe kalkışmak mantıklı değil. Zira taxi gidiş ve dönüş 15 ytl, acilde tedavi 55 ytl, teramisin göz pomadı 1ytl ve gözünüz pahabiçilemez olarak hesaplarsak. Toplam fatura Pahabiçilemez+71 YTL ye geliyor, peki koruma gözlüğü ne kadar biliyormusunuz? Sadece 2 ytl!

Tüm hayalperestlere mutlu evlilik ve kazasız hayaller dileklerimle.

7 Nisan 2008 Pazartesi

Serializer.Net ve Sharp GP2D12 Infrared Sensör hakkında

Serializer.Net e bağlanabilir devre elemanlarının çeşitliliği konusunda Serializer.Net User Guide dan bilgi alabilirsiniz. Tekerleklerin dönmesini ve attığı tur sayısı üzerinden mesafeyi ölçebileceğiniz quadrature wheel encoder benim yapmayı düşündüğüm tasarımda bu encoderlar tekerlek yerine motor üzerinde zaten bulunuyor.

Serializer .NET Robot Kontrolorü ve bağlanan bileşenler

Bu sebeple tekerleğin çapı ile ilgili ufak bir matematik hesabıyla birlikte ne kadar mesafe katettiğine dair veri alabiliyor olacağım, tabiki teorik olarak. Zira cimriliğim yüzünden 2 motor kullanarak difransiyel olarak motoru sürmektense tek motor ve bir servo yardımıyla motor sürmek gibi bir fikire kapıldım bu bana 30$ gibi bir tasarruf sağlasada pişman olmama az kaldı. Bunun nedeni ise servo ile yön verdiğimiz zaman bu hesapların oldukça karmaşık bir duruma gelmesi. Diğer bir sıkıntı ise düzgün çalışan bir servo mekanizması yapmanın görünenden daha zor olması.

Sharp GP2D12 IR Sensor

Sürüş ve mesafe demişken duvar gibi engelleri algılamak için yine biraz cimrilik yaparak 3 tane Sharp GP2D12 IR Sensor aldım. Bu sensörler 10cm ile 80cm arasında ölçüm yapabiliyorlar ancak yüzeyin mat ve parlak olması ölçümlerde farklılık yaratabiliyor. Sensörler doğrusal olarak ölçüm yapıyor yani görünüşüne bakarak 60 derece bir açıda ne var ne yok ölçüm alacak diye bir fikre kapılmayın. 10cm 4 derece 80 cm ise 30 derece ile algılayabiliyor. Bu sensörlerden gelen verilere göre iki eksende gelen engelleri plot ederek bir harita çıkarmayı düşünüyorum. Burada önemli olan 10 cm den daha yakında bir engel olursa robotun nasıl davranacağı zira bump sensor gibi bir donanım almadım yine cimrilikten ve Gp2d12 bu mesafeden kısa olanları algılamıyor. Eğer daha fazla bir bütçem olsaydı Sonar tarzı sensörleri büyük olasılıkla tercih ediyor olurdum.

5 Nisan 2008 Cumartesi

Serializer.Net ve USB Ttl Modülü

Serializer .Net FotoğrafıSerializer.Net ve diğer devre elemanlarıyla ilgili biraz daha bilgi vermek istedim. Serializer.Net DC motorlar, servolar, analog sensörler, I2C , switchler ve diğer cihazları .NET framework ve Robotics Studio ile kontrol etmek için bize bir interface sunuyor. Üzerindeki TTL seri port'a USB, Serial, Bluetooth gibi farklı seri interface modülleri takabiliyorsunuz. Bu interface aracılığıyla Serializer.Net'i herhangi bir bilgisayar'a bağlıyabiliyorsunuz. Benim tercihim USB modül üzerinden oldu zira kablosuz modüller hem pahalı hem de ben robotumu üzerine bir Single Board Computer koymayı düşünüyorum. Böylece kablosuz aktarım benim için bir sorun olmaktan çıkıyor. Eğer ileride kablosuz veri aktarımı tercih edersem bunu direk olarak Serializer.Net'e modül takarak değil bunun yerine SBC üzerine takılan bir modül ile yapmayı düşünüyorum. Bunun nedeni ise robotumun kendi başına ihtiyacı olan her şeyi barındırmasını istemem. Zira kablosuz bir modül kullansaydım SBC nin başka bir lokasyonda bulunması gerekebilirdi. Tamamiyle tercih meselesi.
Seri Usb TTl Serial Modülü
TTL Portuna USB Modülünü oturtuktan sonra ve güç bağlantılarını yaptığınızda Serializer.Net çalışmaya hazır oluyor. USB den makinanıza bağladığınızda bunu bir seri port olarak XP de otomatik olarak tanıyor. Hyperterminal ile Baud ve parity ayarlarını yaptıktan sonra komutları göndererek led, servo pozisyonu, sensör okumaları gibi işlemleri burası üzerinden de yapabiliyorsunuz ilk denemeler için hızlı ve basit bir çözüm.



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.