Netbook’a Windows XP Kurmak
Eğer optik sürücüsü olmayan bir Netbook'unuz var ise, Windows XP kurma konusunda sorun yaşayacağınız aşikar. Genelde uygulanan yöntem, bir USB Flash disk'e Windows kurulum dosyalarını hazırlayıp, diski boot edilebilir hale getirme şeklinde oluyor. Internet'te ufak bir arama ile bulabileceğiniz usb_prep8 adı verilen bir araç ile bu disk'i oluşturabilirsiniz. Fakat, eğer hali hazır bölümlenmiş bir hard disk'iniz var ise (oluşturulmuş Linux bölümleri), Windows kurulum dosyaları kopyalandıktan sonra, bilgisayarınız tekrar boot edilmeye çalışılırken, hal.dll'nin bulunanaması ile ilgili bir hata alabilirsiniz.
Bu konuda WinToFlash adında, USB disk'i otomatik olarak oluşturup, Windows kurulum disk'i olarak hazırlayan bir yazılım mevcut. Bu yazılım, eğer bölümlendirilmiş bir hard disk'iniz var ise, yukarıda bahsettiğim sorunu çözecek şekilde, istediğiniz bir hard disk bölümünden boot edebilmenizi de sağlıyor. Her ne kadar grub gibi bir önyükleyici ile bu sorunu aşabileceğinizi düşünsem de, hazır ve zahmetsiz bir şekilde işinizi halledebilmesi açısından kayda değer bir araç.
BeagleBoard
TI Omap3530 işlemcili bir geliştirme kartı olan Beagleboard, genellikle onboard görüntü/video işleme gibi işlem yükü fazla olan ve SIMD, FPU gibi donanım hızlandırıcıları gerektiren uygulamalarda kullanılıyor. 700 Mhz civarında saat hızı, ARM Cortex A8 ve C6x DSP'den olan çift çekirdekli mimarisi, 256MB DRAM'i ile bu açıdan denemeye değer bir platform.
Bir süredir üzerinde uğraşma fırsatı bulamadığım Beagleboard geliştirme kartımda deneme amaçlı olarak Angstrom Linux dağıtımını çalıştırdım. Bunun hakkında yeni başlayanlar için ufak bilgiler vereceğim.
Normalde aygıt üzerinde TI'ın X-Loader adındaki bir önyükleyicisi çalışıyor, bu da NAND flash içerisinde yer alan U-Boot önyükleyicisini yüklüyor. Eğer SD kart üzerinden boot etmek istiyorsanız, SD kartınızı uygun şekilde hazırladıktan sonra, kart üzerindeki User tuşuna basılı tutmanız gerekmekte. Bu tuşa basılı tuttuğunuzu gösteren 40.W metni işleminizi doğrulayacaktır.
SD Kartın nasıl hazırlanması gerektiği ile ilgili Beagleboard'un destek sitelerinde bilgi bulabilirsiniz.
Seri port üzerinden alacağınız çıktı yaklaşık olarak şu şekilde olabilir, örnek olması açısından koyuyorum:
.Texas Instruments X-Loader 1.4.4ss (Apr 13 2010 - 22:36:28) .Beagle Rev C4 .Reading boot sector .Loading u-boot.bin from mmc . . .U-Boot 2010.03-rc1 (Apr 14 2010 - 12:28:02) . .OMAP3530-GP ES3.1, CPU-OPP2, L3-165MHz, Max clock-720Mhz .OMAP3 Beagle board + LPDDR/NAND .I2C: ready .DRAM: 256 MB .NAND: 256 MiB .*** Warning - bad CRC or NAND, using default environment . .In: serial .Out: serial .Err: serial . .Probing for expansion boards, if none are connected you'll see a harmless I2C error. .timed out in wait_for_pin: I2C_STAT=0 .I2C read: I/O error .Unrecognized expansion board: 0 .Beagle Rev C4 .Die ID #14ea000400000000040365fa17017018 .Hit any key to stop autoboot: 10 ... 9 ... 0 .OMAP3 beagleboard.org #
Buradan sonra U-Boot linux kernel'i yükleyecektir.
/proc/cpuinfo içeriği şu şekilde:
.Processor.: ARMv7 Processor rev 3 (v7l) .BogoMIPS.: 500.97 .Features.: swp half thumb fastmult vfp edsp thumbee neon vfpv3 .CPU implementer.: 0x41 .CPU architecture: 7 .CPU variant.: 0x1 .CPU part.: 0xc08 .CPU revision.: 3 . .Hardware.: OMAP3 Beagle Board .Revision.: 0020 .Serial..: 0000000000000000
Angstrom dağıtımı, bu platform için özel hazırlanmış bir embedded dağıtım olduğu için özelliştirilmek için tercih edilebilir. Debian dağıtımının da Beagleboard için hazırlanmış disk kalıplarını bulmak mümkün. Minimum yer kaplayacak şekilde (NAND Flash için), en az baş ağrıtacak dağıtımı bulma çabalarım devam etmekte.
Unetbootin
Optik sürücüsü olmayan bir bilgisayarınıza (netbook gibi) bir işletim sistemi yüklemek istiyorsunuz, ya da Windows'unuzu bilgisayarınıza tekrar kurduktan sonra MBR kaydınızdaki Linux önyükleyiciniz (örneğin grub) silindi. Bu gibi senaryolar için hızlı bir şekilde bilgisayarınızı boot edebileceğiniz bir USB flash bellek oluşturmak istiyorsanız doğru yazıyı okuyorsunuz demektir.
ISO kalıbı olarak internet'ten ya da başka bir kaynaktan temin ettiğiniz boot edilebilen bir işletim sistemini, USB Bellek ya da bir hafıza kartına bootable olarak yazmak için hayat kurtarıcı bir yazılım olan Unetbootin'in, Windows ve Linux sürümleri bulunuyor. Özellikle bilinen Linux dağıtımlarının kurulum kalıplarını (netinstall ya da tam şekilde) otomatik olarak FTP arşivlerinden indirip, flash belleğinize yazabiliyor.
Yazılımın açık kaynak kodlu ve web sitesi: http://unetbootin.sourceforge.net/
Stereo Kamera Duzenegi
Uzun süredir devam eden CCD sensörlü ve uygun fiyatlı kamera arayışlarım, birkaç ay önce hepsiburada.com alışveriş sitesinde indirimli bulduğum Creative Webcam Live Ultra ile sonlanmıştı. Stereo kamera düzeneği için düşündüğüm bu kameraları görüntü işleme ve bilgisayar ile görü projeleri için kullanacağım.
Çarşamba ve Pazar günlerimi ayırarak mekaniği üzerinde uğraştığım stereo kamera düzeneğimi tamamladım. İki kamera arasında 90 mm mesafe bırakarak kameraların ayaklarını bir tahta çubuk üzerine yapıştırdım. Tahta çubuğun ortasına tripot vidasının girebilmesi için çubuğun merkezine 6 mm çapında bir ahşap somunu monte ederek, çubuğu elimdeki ucuz bir tripot üzerine vidaladım. Şu an düzenek üzerindeki kameralar ile birlikte stabil şekilde durabiliyor.
Montajdan ve tripot ile kameraların duruşlarından gelen idealsizlikleri kameraları kalibre ederek çözebileceğimi umuyorum. Şu an tek sorun kameraların baktığı çizginin yere paralel hale getirilmesinde. Su terazisi ile biraz ayarlama yapmayı başarsam da sanırım en uygun çözüm kameradan aldığım görüntüyü kullanarak bir hedef noktası ile (örneğin duvar) tripot ve kamera açılarına elle müdahale etmek gibi gözüküyor.
Otonom Audi TTS
Otonom araçlar, günümüzde daha çok üniversiteler ile birlikte çalışan laboratuvarlarda ciddi anlamda bilimsel araştırma haline gelmiş geniş bir konu. Otonom sürüşlü bir otomobilin tek başına piyasaya sürülüp satılması biraz zor gibi görünse de, bu tür araştırmalardan çıkarılan sonuçlar ile otomobiller üzerindeki kaza engelleyici sistemler geliştirilebilir, otomobiller üzerinde daha kapsamlı deneyler yapılabilir. Stanford üniversitesi'nin VW ile ortaklaşa yürüttüğü bir proje de tam olarak bunu amaçlıyor. Araştırma ile ilgili video da Audi TTS modelindeki bir otomobilin otonom sürüşünü konu alıyor.
Araştırma ile ilgili merak ettiğim noktalardan biri tekerlek kayması etkisinin nasıl modellendiği ve gerçek zamanlı olarak nasıl kestirildiği.. Konu ile ilgili bir sitede araç üzerinde çok hassas bir GPS ile IMU olduğu söyleniyor. Eğer GPS hassasiyeti yeterli ise zannedersem -ayrıca deneyin açık bir çölde yapıldığı düşünüldüğünde GPS sinyali de oldukça yüksek doğrulukta gelmeli- aracın konumunu doğru kestirebilmek için bu sensörler yetiyor.
Buna karşın, Darpa Urban Challange gibi yarışmalardaki araçlar daha çok şehir içinde ya da bilinmeyen engelli ortamlarda aracın otonom sürülüşünü konu alıyor. Yani bu yarışmadaki asıl amaç aracın sensör belirsizlikleri göz önüne alınarak karmaşık bir çevrede hareket etmesini sağlamak.
Proje ile ilgili siteye buradan ulaşabilirsiniz.
Acik Kaynak Kodlu Projeler
R/C helikopterler, uçaklar, arabalar gibi herkesin temin edebileceği platformların artması, hatta son kullanıcı için üretilen kara taşıtlarının modifiye edilmesi, sensörlerle otonomlaştırılması gibi uygulamaları konuyu biraz takip ediyorsanız çevrenizde ya da internet üzerinde görmeniz mümkün. Hatta bu konularda yapılan, DARPA Urban Challenge türünde insansız araçların ön plana çıktığı, üniversite ve endüstrinin katıldığı çeşitli yarışmalara tanıklık ettiğimiz bir dönemde yaşıyoruz. Robot ve insansız araçlarla ilgili teorinin uygulama aşamasına çoktan geçtiği bu dönem, artık bu tür projelerde çoğunluk tarafından uygulanmış ve kabul görmüş bazı kısımların meraklıların ve konuyla ilgilenen araştırmacıların kullanımına açılmasını beraberinde getirmekte.
Internet üzerinde bu tür eğitim amaçlı olarak kaynak kodu, çizimleri ve yazılımı yayınlanan projeler bulmak mümkün.Bu konuda yazılmış genel bir makaleye şu adresten ulaşabilirsiniz.
Haber beslemelerimden birinde ilgimi çeken açık kaynak kodlu donanım ve yazılım projelerin derlendiği bir çalışmadan esinlenerek bu yazıyı yazdım. Yazının aslını kaynaklarda bulabilirsiniz. Bu projelerden robotik ve otonom sistemler ile ilgili olanlardan bahsedelim:
- Robotik alanında açık kodlu servo donanım ve yazılımından, motor sürücülere ve robot tasarımlarına kadar çeşitli projeler bulmak mümkün:
http://blog.makezine.com/archive/2009/12/robotics_open_source_hardware_2009.html
http://www.robotcub.org/
http://www.robotpower.com/products/osmc_info.html
http://blog.makezine.com/archive/2010/01/open_source_swarm_robot_project.html
- Ayrıca otonom araçlardan UAV'ler için açık kaynak kodlu otopilot devre ve yazılımları:
http://blog.makezine.com/archive/2009/12/unmanned_aerial_vehicles_open_sourc.html
http://autopilot.sourceforge.net/
http://blog.makezine.com/archive/2009/12/open_source_hardware_2009_-_the_def.html
Manyetik Encoder
Bir motora hız ya da konum kontrolü yapılması için gereken temel ve pratikte çokça kullanılan sensörlerden biri encoder'dir. Bir süredir planladığım ve iskeleti üzerinde çevre birimlerini tasarlamaya başladığım diferansiyel sürüşlü mobil robotum için bir çift encoder'e ihtiyacım oldu. Hız kontrolü yapacağım ve üst seviyede yörünge kontrolü için kontrol ve durum kestirimi algoritmaları çalıştıracağım için encoder çözünürlüğünün yüksek olması temel gereksinimlerimden biri.
Eğer projenizin bütçesi yeterli ise; Dunkermotor, Faulhaber ya da Maxon gibi motor üreticilerinden özel olarak temin ettiğiniz motorlara uygun istediğiniz çözünürlükte encoder modülleri de satın alabiliyorsunuz. Fakat düşük bütçeli bir proje için fiyatlar biraz yüksek çıkabiliyor, ki gümrükte yaşayacağınız sorunlardan bahsetmiyorum.
Bu gibi nedenlerden ötürü bir hobicinin kendi motoruna encoder sensörünü kendi tasarlayabilmesi en uygun yaklaşımlardan biri olmakta.. Encoder'ler arasında hobi olarak robotik ile uğraşanlar için CNY70 ya da biraz daha küçüğü olan TCRT1000 entegreleri optik encoder oluşturmak için yaygın olarak kullanılıyor. Bu yöntem yansıtıcı (reflective) bir kağıt üzerinde kodlanmış siyah ve beyaz geçişlerini algılayarak, motorun bir turundaki atma sayısını bulmaya dayalı. Ucuz bir çözüm olmasına rağmen, küçük motorlarda motor milinden doğrudan çıkış alamamanız, redüktör ucuna takılan sensörün ise yeterli çözünürlüğü sağlayamaması nedeniyle benim uygulamamda bana pratik bir sonuç verebilecek bir yöntem değil.
Bir diğer yöntem olan transmissive yani deliklerden ışık geçirme yöntemine göre çalışan kodlayıcılarda ise fiziksel olarak üzerinde delikler olan bir disk üzerinde çalışmak gerekiyor. Bu diskin kendi motorunuza uygun olması ve yeterli çözünürlüğü sağlayabilmesi için üzerindeki delik sayısını düzgün seçmeniz tasarım kriterlerinizi oluşturuyor. Kullandığım motor ve çalıştığı ortam boyut olarak küçük olduğundan bu tür bir diski üretmek zor ve maliyeti yüksek. Örnek bir çizim yapıp yurtdışındaki bir iki firmadan fiyat teklifi almam sonucunda, el yakan fiyatlarla karşılaştım. Ayrıca delik sayısını yüksek seçerseniz, diski ürettireceğiniz yerdeki kesim hassasiyetinin yüksek olması gerekiyor, kimi firmalar bir takım kimyasal ve ışığa dayalı prosesler ile kimileri ise kesme yöntemleri ile çalışıyor, bunlar da doğal olarak maliyet problemini doğuruyor. Daha basit bir çözümü olmalı diye düşünmeden edemiyorsunuz.
İşte şu ana kadar encoder konusunda karşılaştığım çözümlerden en iyisi ve basiti manyetik sensörler kullanma mantığına dayanıyor. Austriamicrosystems firması, 10 bit ya da daha yüksek çözünürlükte pozisyon algılamayı mümkün kılan encoder entegreleri üretiyor. Tek yapmanız gereken bu entegrenin çalışacağı uygun kutuplanmış ve uygun boyutlarda bir mıknatıs seçmek ve motorunuzun miline yerleştirmek. Bir turda 10 bit için 1024 atma verebilen bu sensör için Amazingmagnets sitesinden mıknatıs siparişi verebilirsiniz. Türkiye'de bu özel mıknatısı bulmak zor, distribütorler bazı standart mıknatıslar dışında mıknatıs türlerini getirmeye pek sıcak yaklaşmıyor.
İlerleyen yazılarımda manyetik sensör için hazırlayacağım devreler ve sensörün çalışması ile ilgili sonuçları koyabilirim.
Yorunge Planlayici – 2
Önceki bir yazımda bahsettiğim RRT tabanlı yörünge planlayıcımın geliştirme aşamasında olduğunu söylemiştim. Gerçek zamanlı Spline polinomları ile entegre ettiğim algoritma artık sürekli ve ivmeye kadar türevlenebilir yörüngeler üretebiliyor. Algoritmayı hızlandırma ile ilgili çalışmalarım ise devam etmekte.
Üretilmiş örnek yörüngelerden ikisi şu şekilde:
Yagi-Uda Anteni
Elektromagnetik Alan Teorisi dersini aldığım dönemlerde kablosuz ağların özel antenlerle çekim alanının artırılması konusu ilgimi çekmişti ve bu konuda bir miktar araştırma yapmıştım. Pringles kutusunu içine dizilen yansıtıcı, yönlendirici ve bir dipol ile bir Yagi-Uda anteni tasarlamanın mümkün olduğu internet üzerinde dolaşan yazılardan anlaşılabiliyordu. Bu bağlantıdan bu bahsettiğim amatör anten ile ilgili bilgilere ulaşılabilir. Ayrıca buradan ulaşabileceğiniz bir forum gönderisinde anten yapımı ile uğraşan bir kullanıcının yaptığı Yagi anteni tasarımı hakkında da bilgi edinilebilir.
Biraz antenin çalışma prensibinden bahsetmek gerekirse; bir yönlü anten olup, üzerinde bulunan pasif parçalar ile bir yöndeki anten kazancını yüksek tutmayı amaçlamaktadır. Antenin yöne bağlı ışımasının bir ölçüsü olarak ışıma deseni adı verilen bir grafik kullanılmakta, fakat uğraş alanım olmadığı için bu konuya daha ayrıntılı girmiyorum.
Antendeki aktif olan tek kısım, dipol adı verilen bir iletken ile kuvvetlendirici ya da sürücü devreye bağlanmış olan kısımdır. Bunun dışındaki parçalar işareti yansıtmaya ya da yönlendirmeye yaramaktadır. Ayrıca Yagi anteni her antende olduğu gibi bir band genişliğine sahiptir, antenden en iyi verimin alınabilmesi için bağlanacağı devrenin çalıştığı frekans bölgesi ile band genişliği uyuşmalıdır. Devre ile anten arasında işaret kaybına yol açan kablo ve konnektörlerin tasarım sırasında band genişliğine uygun ve önceden belirlenmiş kazanç kaybı ölçülerinde göre seçilmesi önemlidir. Bu amaçla geliştirilmiş, kablo modeli, frekans gibi parametreleri seçebildiğiniz koaksiyel kablo hesaplayıcılarını internet üzerinde bulmak mümkün (genellikle anten-devre arasında koaksiyel kablo kullanılmakta).
Anten ile ilgili teoriye ilişkin ayrıntılı bilgiye anten tasarımı ile ilgili kitaplardan ulaşılabilir.
Şimdi bu konuya neden değindiğime geleyim; birkaç hafta önce 2.4 GHz frekansı için düşük maliyetli bir Yagi-Uda anteni satan bir siteden aldığım antenim elime ulaştı. Antenin işçiliği iyi, parçaları sağlam ve kaliteli bir kablo ile N-tipi bir konnektör antene takılı gelmekte. Boş bir vaktimde antenin başarımı ile ilgili ölçümler almayı düşünmekteyim.
Kaynaklar ve ilgili bağlantılar:
http://en.wikipedia.org/wiki/Yagi_antenna
http://personal.ee.surrey.ac.uk/Personal/D.Jefferies/yagiuda.html
http://www.antenna-theory.com/antennas/travelling/yagi.php
http://www.timesmicrowave.com/cgi-bin/calculate.pl
RRT Yorunge Planlayici
Haftasonu uğraşlarımdan biri olarak yeni mobil robot yörünge planlayıcımın MATLAB üzerinde temellerini attım. Temelde bir arama algoritması olan ve rastlantısal örnekleme ile çalışan RRT, literatürdeki çalışmalara dayanarak söylemek gerekirse özellikle ikiden fazla boyutlu uzaylarda gerçek zamanlı olarak daha iyi sonuçlar vermekte. Bu çalışmada daha önceden de yazmış olduğum RRT'nin performansını birkaç yeni özellik ekleyerek (Spline polinomları ile entegrasyon, örnekleme sonrası yörünge filtreleme gibi) iyileştirmeye çalıştım, hala da devam ediyor.
İlk denemelerimin ekran görüntüleri:







