Star Wars Haftası -2 >> 7 Adımda Akıllı Robot BB8 Yap
|Yıldız Savaşları Güç Uyanıyor şerefine düzenlediğimiz Star Wars haftası tüm hızıyla devam ediyor ve kutlamalar için hazırladığım ikinci bölümde size kendi BB8 robotunuzu yapmayı göstereceğim. Hemen başlayalım!
Eric Boehlke, Kendin Yap (DIY) akımının sıkı takipçilerinden biri ve geçen bölümde cevapladığımız BB8 nasıl çalışıyor? sorusunu yeterli bulmayarak kendi robotunu yapmaya karar verdi.
Özellikle de robotu ağırlaştıran iç iskelet sorununu çözmek amacıyla iskelet kullanmayan sade bir tasarıma odaklandı. Peki, gerçek BB8 boyutunda imal edilen bu robot çalışır mı? Eric çalıştırmayı başardı. İşte size ev yapımı BB-8 rehberi:
Bir robot değil, iki robot
Eric’in dahice çözümü bu: Bir robot yerine iki robot yapmak, yani BB8’in kafasını bir robot ve top şekilli yuvarlak gövdesini de ayrı bir robot olarak tasarlamak ve sonra bunları birleştirmek. Kendi ifadesiyle:
“Star Wars Güç Uyanıyor’un ilk fragmanını gördükten sonra sıradaki robot projem için ne yapacağımı anladım. Tam ölçekli çalışan bir BB8 yapmak istiyordum. İşe BB8’in nasıl çalışacağını düşünerek başladım ve iki robot yapmaya karar verdim.”
Bu sayede BB8’in kafasını taşıyan robot BB8’in yuvarlak gövdesinin üzerinde serbestçe gezinecek ve gövdede delik açıp kafayı gövdenin içinde bulunan ikinci robota bağlamaya gerek kalmayacak. Gövdenin içinde duran ikinci robot ise yuvarlak gövdeyi tıpkı hamster tekerleği gibi içeriden döndürecek.
İlgili yazı: 3D printer için kendi Arduino lazer tarayıcını yap
1. Parçaları seçelim
Her iki robotun da her yöne hareket edebilen üç tekerlekli ve üç motorlu bir hareket mekanizması var. Ayrıca gövdeyi içeriden hareket ettiren robot, BB8’in hep dik durması için karşı ağırlık işlevi görüyor.
Sistemin çalışması için tekerleklerin her biri tekerlek kollarındaki küçük birer DC motora bağlı. Robotun şasesini oluşturan tekerlek göbeğinin üzerinde ise üç elektrikli motoru çalıştıran piller bulunuyor.
Ancak, pillerin ve tekerlek göbeğinin ağırlık yaparak tekerlekleri topun üstüne veya içine bastırması yeterli değil. Kavrayışı artırmak için tekerlek kafalarında döner eklemler kullanmak ve tekerleklerin serbestçe hareket etmesini sağlamak gerekiyor. Tekerlekler eğimli küre yüzeyine açılı olarak oturunca kavrayış artıyor ve topu içeriden döndürmek kolaylaşıyor.
Donanım
Eric, BB8’i çalıştırmak için iki adet BeagleBone Black mini bilgisayar kartı kullandı (her robota bir tane) ve bu kartlara kademeli motorlar takmaya karar verdi. 3D printerlarda kullanılan kademeli motorlar, tekerleklerin aniden durmasına ve kısa aralıklarla hızla dönmesine izin veriyor. Bu da hacıyatmaz robot BB8’i süper çevik ve hızlı yapıyor.
Geriye sadece motor sürücüleri ve robotun konumunu bilmesi için lokasyon sensörleri kalıyor. Eric sensörler için 10 eksenli bir ölçüm ünitesi seçti.
Öyleyse ihtiyacınız olan parçalar:
- Kademeli motorlar
- Motor sürücüleri
- Lokasyon sensörleri
2. Elektronik bağlantılar
Önce motor sürücüsünün uçlarını breakout karta lehimliyoruz. Ardından bu kartı ve kademeli motoru BeagleBone Black’e bağlıyoruz.
Sonra Adafruit.com sitesindeki talimatları uygulayarak Python ile programlıyoruz. Multimetre kullanarak bağlantıları kontrol ediyor ve motora kaç volt enerji gittiğine bakıyoruz. Örneğin, 5 volt güç sağlayan bir pinin sadece DC barrel jack ile bağlandığı zaman motora 5 volt güç verdiğine dikkat ediyoruz.
Üç motoru döndürmek
Her robotta üç tekerlek ve üç motor var: Üç motoru döndürmek için uçlarını kartlara lehimliyoruz; ama bunun için daha büyük bir breadboard gerekiyor.
Yalnız bu boardlar robota sığmayacak kadar büyük. En iyisi her robot için 4 küçük breadboard kullanıyoruz ve bunları kare şeklinde birleştiriyoruz. Ardından motorları BeagleBone Black’e takıp programlamaya başlıyoruz.
Python özellikle yeni başlayanlar için çok kullanışlı bir dil. Ayrıca motorları maksimum 50 RPM’de döndürmek için yeterince hızlı bir dil (JavaScript ile bunu yapamıyorsunuz). Python tüm motorları tam hız döndürüyor.
Eric bu noktada motorları tam kademe ve yarım kademe ile çalıştıran bir program yazdığını söylüyor. Yarım kademe robotun daha hassas hareket etmesini sağlıyor (durma mesafesinde ince ayar gibi). Dediğimiz gibi, kare şeklinde düzenlenen 4 küçük breadboard bütün işimizi görüyor.
Böylece telleri breaboard’un altından geçirmeye başlayarak nihayet kartların ortasındaki delikten geçiriyoruz ve böylece kablolarımız Arap saçı gibi dağılmıyor.
İlgili yazı: 100 dolardan ucuza 3D printer yap
3. Çerçeveyi hazırlayalım
Şimdi sıra motorları, tekerlekleri ve kartları robotun içine oturtacak olan çerçeveyi tasarlamakta. Çizim işi bitince plastik parçaları kesiyoruz, sıcak tutkal ve vida kullanarak parçaları birbirine yapıştırıyoruz.
İpucu: Bunun için önce SketchUp ve Omnigraffle ile çizim yapın. Sonra karton maket yaparak parçaların birbirine oturup oturmadığını test edin. Unutmayın, bir robot topun içinde duracak. Diğer robot da kafanın içinde ve topun üzerinde duracak.
Bu nedenle tekerlek ve motor kasasının topun üzerine dik açıyla yerleştirilmesi gerekiyor. Bu aşamada tekerleklerin serbestçe dönmesini sağlayarak robotu test edin. Ardından asıl robotları yapabilirsiniz.
4. Ana montaj
Eric, motorları ve kartları taşıyan çerçeveleri 2,26 cm kalınlığındaki akrilik levhalarla imal etti. Çerçeve parçalarına şeklini verecek olan karton şablonları akrilik levhaların üstüne Pritt kullanarak yapıştırdı. Ardından parçaları şerit testereyle kesip matkapla montaj delikleri açtı.
Plastik parçaları Loctite 2 tutkalla yapıştırıyoruz. Bu tutkal plastiği eritip parçaları birbirine kaynatıyor. Ancak çerçevenin dağılmaması için ana parçaları birbirine vidalıyoruz.
Sonraki adım elektronik parçaları takmak. Tekerleklerin jant kapaklarını istediğiniz renkle boyayıp kodlayabilirsiniz. Örneğin, mavi motora mavi kılıflı kablolar takıp bunları mavi breadboarda bağlayabilirsiniz. Ardından bu kablolar BeagleBone Black’e bağlanır.
İpucu: Böylece hem elektrik devrelerini test edersiniz hem de sistemi programlamak çok kolaylaşır. BeagleBone Black kartını robotun üstüne iki yüzlü köpük bantla yerleştirebilirsiniz.
5. Piller
Öncelikle BeagleBone Black ile motorlar için ayrı birer güç kaynağı kullanıyoruz. BeagleBone Black için 5V ve 1A gerekli. Bunun için aynı boyutlarda telefon şarj aleti kullanabilirsiniz; yani pile gerek yok. Ancak motorlar için pile gerek var.
Aslında 6-12 Volt ve 1A piller gerekiyor. Bunlar saatte 2 amp kapasiteye sahip olmalı. Ancak bu pilleri robotun en altına yerleştirmek imkansız. Çünkü yer çok dar. Bunun yerine akıllı telefonlar için USB ile şarj olan 5V, 1A ve 2600 mAH sağlayan 4 telefon pili satın alabilirsiniz. Her robot için iki tane alacaksınız.
İpucu: Bu piller çakma pil olmasın. Piyasadaki en kaliteli piller olsun. Unutmayın, robotu yukarıdaki özelliklere göre 2 saat çalıştırabilmeniz gerek. Ayrıca robotu kablolu şarj adaptörüne de bağlayabilirsiniz (en azından test için). Bu sistem 9V ve 2,5A güç sağlar.
6. Robotun gövdesini yapalım
Robotun gövdesini (büyük topu) ve kafayı yapay köpükten (strafor) imal edebilirsiniz. Gövde için 50 cm küre ve kafa için 30 cm küre kullanabilirsiniz. Ardından bunları model uçak gibi çizip boyayacaksınız.
Önce üstüne iki kat astar sürün ve kurutun. Ardından Google’da arayarak ve BB8 Anaheim Star Wars Celebration videosuna bakarak robotun üstündeki desenleri çizin. Sonra da konturların içini boyayın. Bunun için akrilik boya ile doğru tonları üretip fırçayla boyayabilirsiniz.
İpucu: Bir Lego parçasını boyaya batırıp topun etrafındaki perçin noktalarını yapabilirsiniz. Eric, robotun gözünü plastik Noel ağacı süslemesinden yaptı (siyaha boyayarak).
7. Programlama
Robotun devrilmeden dengeli gitmesi için üstündeki jiroskopları kullanması gerekiyor. Bunun için iki sensöre gerek var: Bir ivmeölçer ve bir jiroskop. İvmeölçer robotun hareketini ölçecek ve örneğin ne kadar yana yattığına bakacak. Jiroskop da yön tayini yapacak.
Aslında ivmeölçer robotun kendi hareketinden etkilendiği için kesin veri sağlamıyor, ama her zaman nerenin yukarı ve nerenin aşağı olduğunu biliyor. Jiroskop da robotun açısal hızını çok kesin olarak ölçüyor, ama sadece açısal hızını ölçüyor. Yalpalama ile yuvarlanmayı ölçmüyor. Bu yüzden de jiroskopları ivmeölçerle birlikte kullanıyoruz (her robot için bir ivmeölçer ve bir jiroskop).
İlgili yazı: Gerçek Demir Adam
Hacıyatmaz olmak zor
Ancak ivmeölçer ve jiroskopların bir arada güvenilir bir şekilde çalışmasını sağlamanız lazım. Örneğin robotun açısal hızını, yalpalamasını ve yuvarlanmasını aynı anda ölçmeliler. Yoksa robot dengesini kaybedip devriliyor. Bunu ancak cihazları programlayarak yapabilirsiniz. En iyisi de Kalman filtresi kullanmak.
Kalman filtresi, jiroskop ve ivmeölçer verilerini ölçüp bunların bir arada uyumlu çalışmasını sağlıyor. Böylece ivmeölçer ile jiroskop robotu devirmeden hareket ettiriyor. Kısacası Kalman filtresi her robottaki üç tekerlek motorunu sadece gereken ölçüde döndürüyor.
Robotun hızı da önemli
Gövdeyi ve kafayı döndüren robotların topun üstünde veya içinde ne kadar hızlı gittiklerini de bilmeleri lazım. Örneğin robotun kafası top şekilli gövdenin ekvator hizasına yaklaşırken yere düşmemek için yavaşlamalı.
Robotun hareket etmesi için gereken matematik işlemlerini yapmak, yani robotun hızını ölçmek için en iyi çözüm PID (Orantılı Entegral Türev) kontrolörü kullanmak. Böylece robotu merkezden orantılı olarak uzaklaştırabilir veya orantılı olarak merkeze yakınlaştırabilirsiniz. Robot da aniden dönüp yön değiştirince kafası yere düşmez. :p
İlgili yazı: Robotlarda Ultron Çağı
Sürüş açısı ve sürüş hızı
Bunlar robotun istediğimiz yönde ve istediğimiz hızda gitmesi için her bir tekerleğin ne kadar hızla döneceğini söylüyor. Bunları motor sürücüsüne motor kontrol yazılımıyla programlıyoruz.
Motor kontrol programı, motorları kontrol eden breakout boardlara uygun elektrik sinyalleri gönderiyor ve tekerlekleri programladığımız parametrelere göre döndürüyor.
İpucu: Robotun hareketlerini test etmek için tam kademeli devirle başlayıp sonradan bunu yarım kademeye düşebilirsiniz. Ancak bu bile yeterince hassas olmayabilir. Bu nedenle PWM modülasyonu kullanabilirsiniz (pulse-width modulation).
Burada motorları mikro kademeli olarak çalıştırmaktan bahsediyoruz. Peki, mikro kademe için her motora ne kadar şiddette sinyal göndereceğinizi nasıl hesaplayacaksınız? Sinüs ve kosinüs ile trigonometri hesaplamaları yaparak. 😀
Paniklemeyin!
Blogda size öncelikle bir işin mantığını anlatmaya çalışıyorum, ama bunun için oturup üniversitelerin bilgisayar bölümünden mezun olmanız gerekmiyor. Eric’in BB8 Python kodunu burada bulabilirsiniz. Bunu robotun bilgisayarına yüklemeniz yeterli.
Siz de kasıp kendi BB8 robotunuzu yaparsanız lütfen Eric’e bir teşekkür edin. Kendisi Dakota Belde Fuarı ve Minnesota Eyalet Fuarı’nda BB8 robotuyla birincilik aldı ve ben de yazıya bu çalışkan delikanlının web sitesini ekledim.
İlgili yazı: Robot astronot Robonot
Proje adımları
Buraya kadar işin mantığını anlattık ve genel talimatları verdik. Şimdi de “Adım Adım Nasıl Yapılır?” kılavuzuna geçelim:
Adım 1: Çerçeve parçalarını keselim
- Plastik çerçeve parçalarını birleştirmek için şu şablonu kullanın ve parçaları birleştirin. İpucu: Parçaların kenarlarının çatlamaması için vida deliklerini parçaları kesmeden önce açın!
- Parçaları şerit testere ile kesin.
- Yapıştırırken tutkalın tutması için kenarları iyice zımparalayın.
Adım 2: Motor çerçevesinin çıkmalarını takalım
- Her motor bağlantı plakasına iki yan çıkma yapıştırın.
- Not: Tutkal kullanırken parçaları aktivatör ile hazırlayın ve tutkal öncesinde etkisini göstermesi için 1 dakika bekleyin.
- Bağlayıcı maddeyi parçalardan birine sürün ve ardından bunu dikkatle yerleştirin. Aman dikkat! Tutkal çabuk kuruyor. Bir daha yerinden oynatamazsınız.
Adım 3: Alt rafa destek çıkmalarını yapıştıralım
- Destek çıkmalarını alt rafa yapıştırmak için önce bunları motor çıkmalarına bağlayın. Böylece vida delikleri düzgün hizalanır.
- Şimdi çerçeve şablonunu kullanarak destek çıkmaları alt rafa yapıştırın.
- İpucu: Az tutkal genellikle yeterli olur, ama tutkalı biraz kaçırsanız bile yapıştırabilirsiniz. Tabii taşan tutkalı silmek istemiyorsanız.
Adım 4: Motorları takalım
- Her motoru motor çıkmasının içine kaydırın ve vidayla sıkıştırın. İpucu: Kabloların alt rafa olabildiğince yakın olmasını sağlayın.
- Motor kablolarını alt rafın ortasındaki delikten geçirin. İpucu: Kabloları ayırmak için renk kodlu kılıflar kullanın.
Adım 5: Motor pillerini takalım
- İki USB pili alt rafın alt tarafına yerleştirebilirsiniz (çift yüzlü köpük bantla). Not: USB çıkış portunun motora ters yönde olmasına dikkat edin.
- Pilleri seri bağlamak için özel kablo gerek. Pillerle gelen 2 USB kablosunu alın ve küçük ucunu kesip dış kılıfı 7,6 cm sıyırın. Böylece biri siyah ve biri kırmızı iki kablo göreceksiniz. Birinde siyah kabloyu ve diğerinde kısa kabloyu kısa kesin.
- Dört kablonun uçlarını bağlayın ve kısa kırmızı kablo ile kısa siyah kabloyu birbirine lehimleyerek bağlantıyı izole bantla sarın. İki 17,78 cm’lik kabloyu da (uzun kablolar) birbirine bağlayıp izole banda sarın.
- Kabloları döşedikten sonra 17,78 cm’lik kabloları alt rafın orta deliğinden geçirin.
Adım 6: Elektronik parçaları bağlayın
- Dört mini breadboardu kare şeklinde birbirine bağlayın. Her birini breakout kartlarını tek tek bağlamakta kullanacaksınız.
- Üç adet motor sürücü kartını ve IMU kartını resimdeki kablolama şablonuna göre birbirine bağlayın.
- İpucu: Her boarda giren ve çıkan kabloları renkli kılıflarla kodlayın ki bağlantılar karışmasın ve test etmek kolay olsun.
Adım 7: Üst rafı takın
- Pili üst levhaya yerleştirmek için iki yüzlü köpük bant kullanın.
- BeagleBone Black’i pilin üstüne yine iki yüzlü köpük bantla bağlayın.
- Kabloları üst rafın ortasındaki delikten geçirin.
Adım 8: Son kablolama
- Kablo şablonuna bakarak kabloları BeagleBone Black üzerinde doğru pinlere bağlayın.
Adım 9: BeagleBone pil kablosu
- Beaglebone Black’i USB pile bağlamak için USB 5,5 mm barrel jack kabloya gerek var. Bunu yapmak için önce barrel jack’li olan ve Beaglebone Black’e sığan kesebileceğiniz bir kablo bulun.
- Ardından USB kablosunu ve barrel jack’i keserek doğru bir şekilde hizalayın ki pilden Beaglebone Black’e ulaşsın.
- Kabloları soyup kırmızı-kırmızı ve siyah-siyah olarak bağlayın.
- Bunları izole bantla sarıp ayrıca kablo sarıcıdan geçirin.
Adım 10: Aynı işlemleri öbür robot için de tekrarlayın
- Unutmayın hem kafayı dengeleyen robot, hem de gövdeyi döndüren robot aynı model. Aradaki tek fark, tekerleklerin açısının topun üzerindeki kafayı hareket ettiren robotta ve topun içindeki robotta farklı olması.
Adım 11: Robotu boyayalım
- 7,62 cm Gesso fırça ile 50 cm’lik köpük topun üzerine iki kat Süper Kalın Astar atın. Aynısını 30 cm’lik top için de yapın ama unutmayın: Bunun sadece bir yarısına ihtiyacınız var. İki kat astarın kuruması 24 saat alıyor. Böylece toplar boyaya hazır hale geliyor.
- Desenler için karton kalıplar keseceksiniz. Bunun için şu şablonu kullanın. Ardından bunları topların üstüne koyup desen konturlarını çizin.
- İpucu: Çizimlerde kafanız karışmasın diye kendinize kağıttan küp şekilli bir mini BB8 maketi yapın ve hangi yüzüne ne desen gelecek bakın. Yuvarlak yüzeyli olduğu için desenlerin konumunu kaydırmamaya dikkat edin. Bunu printerda basıp katlayarak kullanabilirsiniz.
Adım 12: Robotu programlıyoruz
- BeagleBone Black kartları Debian OS son sürümüyle güncelleyin.
- Kernel’i güncelleyin.
- Adafruit kılavuzuna bakarak her robota Wi-Fi kurulumu yapın.
- Not: Kernel sürümüne bağlı olarak bazı pinlerde yukarıda sözü geçen PWM’yi etkinleştirmeniz gerekebilir. Bunu da /boot/uEnv.txt dosyasını düzenleyerek yaparsınız. Şöyle:
withcape_enable=capemgr.enable_partno=
ile başlayan satırı
cape_enable=capemgr.enable_partno=am33xx_pwm,bone_pwm_P8_13,bone_pwm_P8_19,bone_pwm_P9_16,bone_pwm_P9_22,bone_pwm_P9_28,bone_pwm_P9_42
olarak değiştirin
- Eric’in Github’da paylaştığı Python kaynak dosyalarını SFTP ile her robota kopyalayın. Bunları cloud9 klasörüne koyun.
Adım 13: BB8 montajını yapın
Bir robotu kürenin içine yerleştirin. Küre gövdenin iki yarısını cırt cırtlı bantla birleştirip kapatın. Diğer robotu da topun üzerine yerleştirip robotun kafasını oluşturan şapkayı üstüne geçirin.
Bonus: NASA sevmedi
NASA Jet İtki Laboratuarı’nda çalışan Brett Kennedy, “BB8 sadece düz yüzeylerde çalışır, ama yokuş tırmanamaz ve engebelerin üzerinden atlayamaz” dedi. Kennedy’ye göre bunun için en iyi çözüm, ilk Star Wars filmlerindeki R2D2 tasarımlarını kullanmak.
“İlk robotların tasarımı BB8 kadar havalı değil ama işimizi görüyorlar. Örneğin, R2D2’nun yapabildiği hemen bütün hareketleri elimizdeki teknolojiyle yapabiliriz. Aynısı C-3PO için de geçerli. C-3PO hantal bir robot ve NASA’nın geliştirdiği yeni robot astronot Valkyrie ondan daha esnek. Sadece omurga bölgesinde C-3PO kadar esnek değiliz.”
İlgili yazı: Makinedeki hortlak, yahut robotlar aşık olur mu?
Bonus 2: Oyuncak BB-8
Evet, herkes bu kadar uğraşıp kendi robotunu yapmak istemez. Hele evde her şeyi kıran yaramaz çocuklar varsa. Ancak tam boy BB-8 yapmak yerine, oyuncak BB8 alabilirsiniz. Sphero’nun geliştirdiği akıllı oyuncak robot BB-8 Amazon’da 149,99 dolar.
Ev yapımı BB8
1http://makezine.com/projects/build-full-size-working-bb-8-using-beaglebone/