İçindekiler:

Hawking Botu: 5 Adım
Hawking Botu: 5 Adım

Video: Hawking Botu: 5 Adım

Video: Hawking Botu: 5 Adım
Video: Stephen Hawking'in yaptığı korkunç şaka 👀 2024, Temmuz
Anonim
Image
Image
Hawking Botunuzu Oluşturun
Hawking Botunuzu Oluşturun

Hawking Bot, merhum Stephen Hawking'den ilham alan bir Lego MINDSTORMS EV3 Projesidir. Stephen Hawking'in iyi bir mizah anlayışı vardı, bu yüzden bu projeyi onaylardı eminim. Hawking Bot engellerin etrafından dolaşabilir ve hareketlere tepki verebilir ve ardından Stephen Hawking'in ünlü seslerinden birini söyleyerek hareket eden nesnenin yönünde hareket eder. Süpürme kafa hareketi ile çevresini tarayan ultrasonik sensör kullanır.

Adım 1: Hawking Botunuzu Oluşturun

Ayrı olarak satın alınması gereken ultrasonik sensör (gözleri) hariç, gerekli tüm parçalar temel EV3 Lego MINDSTORMS setindedir.

Adım 2:

resim
resim

Hawking Bot kodunun tamamı python 3'te yazılmıştır. Python'u Hawking Bot'ta bir Debian Linux ortamında çalıştırmak için önyüklenebilir bir görüntü dosyası ev3dev web sitesinden indirilebilir. Hawking Bot'u çalıştırma kodu buradan indirilebilir. Tüm kodlar bir sınıf dosyasında bulunur, böylece mevcut yöntemleri kullanabilir veya isterseniz bunları değiştirebilirsiniz.

Lütfen robotunuzda Debian Linux ve Python3'ü nasıl kuracağınızla ilgili ayrıntılı talimatlar içeren bu videoyu izleyin. Bu özellikle bir Mac kurulumu için olsa da, süreç hakkında genel bir anlayış elde etmek yine de faydalı olacaktır. Bu devam eden bir çalışmadır. Ultrasonik sensör bazen güvenilmezdir ve bu, 'aykırı değerleri' tespit etmek için daha akıllı kod gerektirir. Kodu daha verimli ve daha az hataya açık hale getirmek için başkalarının katkılarını görmek istiyorum.

3. Adım: Kendi Hawking Soundbit'lerinizi Yapın

Tamam, şimdi Prof Hawking'den bazı ünlü alıntılar veya sadece bazı basit ifadeler almak istiyorsunuz. Onun konuşmasını duyabileceğiniz tonlarca video var ve bir de bilgelik hazinesi ve faydalı ses parçaları olan dersleri var.

En sevdiğiniz ses parçalarını seçmek ve kesmek için birçok platformda çalışan Audacity gibi bir programa ihtiyacınız var.

Soundbite'ınızı bir wav mono dosyası olarak SH6, SH7, …SH11, SH12 vb. olarak kaydedin.

Aşağıda, yukarıdaki yönteme göre oluşturduğum birkaç örneği bulacaksınız.

4. Adım: İpuçları ve Püf Noktaları

Ipuçları ve Püf noktaları
Ipuçları ve Püf noktaları
Ipuçları ve Püf noktaları
Ipuçları ve Püf noktaları

Hawking Bot, tüm kabloların bağlı olduğundan ve pil gücünün yeterli olduğundan emin olmak için bir otomatik kontrol modülü ile birlikte gelir. Gevşek, eksik ve hatta hasarlı bağlantılar kolayca oluşabilir. Dolayısıyla bu modül çok kullanışlıdır. 'checkConnection' yöntemi yalnızca elektrik bağlantısı olup olmadığını kontrol eder. Yine de motorların doğru bağlantı noktasına bağlı olduğundan emin olmalısınız.

Hawking Bot'un araziyi taraması ve önündeki engelsiz en uzun yolu bulması için kafayı kaydırma hareketi çok önemlidir. Kablolar, kafa hareketlerine uyum sağlamak için yeterli alana ihtiyaç duyar; bu nedenle, fotoğrafta gösterildiği gibi bunları birbirine bağlamanız tavsiye edilir.

Hawking Bot, büyük engellerle ve düz ve pürüzsüz bir yüzeyde en iyi şekilde çalışır. Halılar motorlar için daha zorludur ve farklı yüzeyler için davranışı ayarlamak için ayarları yapmanız gerekebilir.

Hawking Bot hiçbir şekilde mükemmel değil ve bu, daha fazla iyileştirmeden faydalanacak bir prototip. Kod tamamen yorumlanmıştır ve çeşitli yöntemlerin ne yaptığını anlamanız sizin için kolay olacaktır. # ile çeşitli bitler yorumlanmıştır, eğer 'yazdır'ın önündeki #'yi kaldırırsanız, çalışan program size çeşitli sensör okumalarını ve hesaplamalarını gösterecektir.

Adım 5: Önerilen İyileştirmeler, Güncellemeler ve Gelecek Fikirler

Artık robotunuzu başarıyla inşa ettiğinize göre, onu bir sonraki seviyeye taşımak istiyorsunuz. MotionDetector yöntemini geliştirebilirsiniz. Şu anda çok sık yanlış bir okuma alıyor. disA ve disB'yi (yöntem bloğunun alt kısmında) yorumlayarak gerçek okumaları görebilirsiniz. Yanlış okuma genellikle diğer okumalardan farklıdır, böylece robotun yanlış bir okumaya yanıt vermesini durdurmak için bir algoritma yazabilirsiniz.

Belki de robotun tam kontrolünü almak ve sadece çeşitli işlevlerini uzaktan kontrol etmek istiyorsunuz. Bunu Bluetooth üzerinden yapabilir ve robotla iletişim kurmak için bir Android programı yazabilirsiniz. Bununla birlikte, kızılötesi sensörün Hawking Bot'un kontrolünü ele geçirmesi için bir yer bulmak çok daha kolay bir yaklaşım olacaktır.

Robotun çevresi hakkında bilgi edinmesini sağlamaya ne dersiniz? Bu, bir k-en yakın komşu yaklaşımı veya muhtemelen bir sinir ağı ile gerçekleştirilebilir. EV3 tuğlası, Numpy'yi desteklemesine rağmen sınırlı işlem gücüne sahiptir. Bir alternatif, Tensorflow gibi bir AI kitaplığı çalıştırmanıza izin verecek bir BrickPi olabilir, ancak bu kılavuzun amacı, ultrasonik sensör dışında birçok pahalı ek parça satın almaya gerek kalmadan Lego EV3 MINDSTORMS kitini kullanmaktı.

Ancak, k-en yakın komşular yeniden bilgilendirme öğrenme yaklaşımı EV3 tuğlası üzerinde çalışmalıdır ve önerilen algoritma budur. Çalışan bir uygulama bulmayı veya herhangi bir sorunu tespit etmeyi size bırakıyorum:

Hawkings Bot için pekiştirmeli öğrenme

Buradaki fikir, 7 USS okumasının bir vektöre kodlanması ve son 10 kafa baskınının 70 girişlik sıralı bir vektör oluşturmak için kullanılmasıdır. İlk okumalar eksik olduğundan sıfırlarla doldurulacaktır. Her giriş USS'den olan mesafe değerini içerir. Bu durum vektörü s'dir. Sistem 1000 girişe izin vermektedir. Daha sonra en eski giriş değiştirilecek ve her bir s-r çifti için yaş girişleri birer birer azaltılacaktır.

Bot bir cisme 10 cm'den fazla yaklaşmamalıdır. Bu olumsuz bir ödül yaratır. Basitlik için; iyi eylemler 1 ile ve kötü olanlar 0 ile ödüllendirilir. Etkili olarak bu, her eylem-durum kombinasyonu için ödül için bir olasılık yaratır. İndirimli ödüller ve epsilon açgözlü politikasını kullanacağız.

Bu, sağ, dümdüz ve sol üç eylemin tümü için 3 büyük durum – ödül (s-r) tablosu oluşturur – her eylem için hızlı ve yavaş hızlara sahip olmak mümkün olabilir. Daha sonra 6 eylemimiz ve 6 arama s-r tablomuz olurdu.

Her yeni durum s kaydedildiğinde, tablolarla karşılaştırılır, en yakın komşuyu bulmak için Öklid mesafesi (veya benzer bir ölçü) kullanılır. Bu derecelendirilmeyecek, bunun yerine durumu çok benzer olarak kabul etmek, mevcut durumun üzerine yazmak ve en yüksek ödül için güncelleme yapmak ve ilgili eylemi gerçekleştirmek için bir t eşiği belirlenir. Benzer değilse (d>t) her eylem için yeni bir s-r çifti girin a. s-r için eylemler arasında bir bağ varsa (hepsi aynı ödüle sahiptir) rastgele seçin, ancak bu yaygın değildir ve atlanabilir.

t'nin deneysel olarak belirlenmesi gerekecek, eğer t çok küçükse benzer durumlar göz ardı edilecek ve her bir durum benzersiz olarak görülüyor. Çok büyük bir t, iyi eylemleri seçme yeteneğini etkileyebilecek oldukça farklı durumların bile bir araya toplandığı anlamına gelir. En iyi t'yi belirlemek için istatistiksel yöntemler kullanmak mümkün olabilir.

Tablo şuna benzer: Giriş No – Durum vektörü – 1. eylem için ödül – 2. eylem için ödül – 3. eylem için ödül.

Sanırım gerçek uygulama zor olacak ama çabaya değer olmalı. İyi şanlar!

Önerilen: