Mündəricat:

Hawking Bot: 5 addım
Hawking Bot: 5 addım

Video: Hawking Bot: 5 addım

Video: Hawking Bot: 5 addım
Video: Hawking's Bot - Tutorial 2024, Iyul
Anonim
Image
Image
Hawking Botunuzu qurun
Hawking Botunuzu qurun

Hawking Bot, mərhum Stephen Hawkingdən ilhamlanan Lego MINDSTORMS EV3 Layihəsidir. Stephen Hawking yaxşı bir yumor anlayışına sahib idi, buna görə də əminəm ki, bu layihəni təsdiq edərdi. Hawking Bot, maneələr ətrafında gedə bilər və hərəkətlərə cavab verə bilər və sonra Stephen Hawking'in məşhur soundbitesindən birini söyləyir və hərəkət edən obyekt istiqamətində hərəkət edir. Başını tərpətməklə ətrafını tarayan ultrasəs sensorundan istifadə edir.

Addım 1: Hawking Botunuzu yaradın

Lazım olan bütün parçalar, ayrıca satın alınması lazım olan ultrasəs sensoru (gözləri) istisna olmaqla, əsas EV3 Lego MINDSTORMS dəstindədir.

Addım 2:

Şəkil
Şəkil

Hawking Bot kodunun hamısı python 3 -də yazılmışdır. Hawking Bot -da Debian Linux mühitində python çalıştırmak üçün önyüklenebilir bir şəkil faylı ev3dev veb saytından yüklənə bilər. Hawking Botu işlədəcək kodu buradan yükləyə bilərsiniz. Bütün kodlar bir sinif faylının içərisindədir, buna görə də mövcud metodlardan istifadə edə və ya istəsəniz dəyişdirə bilərsiniz.

Zəhmət olmasa robotunuzda Debian Linux və Python3 -ün necə qurulacağına dair ətraflı təlimatla bu videoya baxın. Xüsusilə bir Mac quruluşu üçün olsa da, proses haqqında ümumi bir anlayış əldə etmək hələ də faydalı olacaq. Bu işlər davam edir. Ultrasonik sensor bəzən etibarsızdır və bunun üçün 'kənarları' aşkar etmək üçün daha ağıllı kod tələb olunur. Kodun daha səmərəli və daha az xətaya meylli olması üçün başqalarının töhfələrini görmək istərdim.

Addım 3: Öz Hawking Soundbites olun

Tamam indi Prof Hawkingdən bəzi məşhur sitatlara və ya bəzi sadə ifadələrə sahib olmaq istəyirsən. Danışıqlarını eşidə biləcəyiniz bir çox video var, sonra müdriklik və faydalı səs dişləmələri xəzinəsi olan mühazirələri var.

Sevdiyiniz səs parçalarını seçmək və kəsmək üçün bir çox platformada işləyən Audacity kimi bir proqrama ehtiyacınız var.

Soundbite'inizi SH6, SH7,… SH11, SH12 və s kimi bir wav mono fayl olaraq qeyd edin.

Aşağıda yuxarıda göstərilən üsula görə yaratdığım bir neçə nümunəni tapa bilərsiniz.

Addım 4: Məsləhətlər və fəndlər

Məsləhətlər və fəndlər
Məsləhətlər və fəndlər
Məsləhətlər və fəndlər
Məsləhətlər və fəndlər

Hawking Bot, bütün kabellərin bağlı olduğunu və batareya gücünün kifayət qədər olmasını təmin etmək üçün özünü yoxlama modulu ilə gəlir. Boş, itkin və ya hətta zədələnmiş əlaqələr asanlıqla yarana bilər. Beləliklə, bu modul çox faydalıdır. 'CheckConnection' metodu yalnız elektrik bağlantısının olub olmadığını yoxlayır. Mühərriklərin düzgün porta qoşulduğundan əmin olmalısınız.

Sürüşmə baş hərəkəti, Hawking Bot -un ərazisini taraması və qabaqda ən uzun maneəsiz yolu tapması üçün vacibdir. Kabellərin baş hərəkətlərini yerinə yetirmək üçün kifayət qədər yerə ehtiyacı var; buna görə də fotoşəkildə göstərildiyi kimi onları bir -birinə bağlamaq məsləhətdir.

Hawking Bot, böyük maneələrlə və düz və hamar bir səthdə ən yaxşı şəkildə işləyir. Xalçalar mühərriklər üçün daha çətindir və fərqli səthlərin davranışını tənzimləmək üçün parametrləri tənzimləməli ola bilərsiniz.

Hawking Bot heç də mükəmməl deyil və bu, daha da təkmilləşdirmələrdən faydalanacaq bir prototipdir. Kod tam şərh edilmişdir və müxtəlif metodların nə etdiyini öyrənmək sizin üçün asan olmalıdır. Müxtəlif bitlər # ilə şərh edilmişdir, əgər "çap" ın önündəki # rəqəmini çıxarsanız, çalışan proqram sizə müxtəlif sensor oxunuşlarını və hesablamalarını göstərəcəkdir.

Addım 5: Təklif olunan Təkmilləşdirmələr, Yeniləmələr və Gələcək Fikirlər

Robotunuzu uğurla qurduqdan sonra onu növbəti səviyyəyə qaldırmaq istəyirsiniz. MotionDetector metodunu təkmilləşdirə bilərsiniz. Hal -hazırda çox vaxt səhv oxunur. Əsl oxunuşları disA və disB -ni şərh etmədən görə bilərsiniz (metod blokunun altındakı). Səhv oxunuş ümumiyyətlə digər oxunuşlardan fərqlənir, buna görə də robotun yanlış oxuya cavab verməsini dayandırmaq üçün bir alqoritm yaza bilərsiniz.

Yəqin ki, robotu tam idarə etmək və onun müxtəlif funksiyalarını uzaqdan idarə etmək istəyirsiniz. Bunu Bluetooth vasitəsilə edə və robotla ünsiyyət qurmaq üçün bir Android proqramı yaza bilərsiniz. Bununla birlikdə, infraqırmızı sensorun Hawking Botu idarə etməsi üçün bir yer tapmaq daha asan bir yanaşma olardı.

Bəs robotun ətraf mühiti haqqında öyrənməsinə nə demək olar? Bu, ən yaxın qonşu yanaşması və ya bəlkə də bir neyron şəbəkəsi ilə edilə bilər. EV3 kərpicinin Numpy -ni dəstəkləməsinə baxmayaraq məhdud emal gücü var. Tensorflow kimi bir AI kitabxanasını işə salmağa imkan verən bir BrickPi alternativ ola bilər, lakin bu təlimatın məqsədi ultrasəs sensoru xaricində bir çox bahalı əlavə hissələr almadan Lego EV3 MINDSTORMS dəstini istifadə etmək idi.

Bununla birlikdə, k-ən yaxın qonşuları yenidən məlumatlandırma öyrənmə yanaşması EV3 kərpicində işləməlidir və bu təklif olunan alqoritmdir. İşləyən bir tətbiq tapmağı və ya hər hansı bir problemi həll etməyi sizə həvalə edirəm:

Hawkings Bot üçün möhkəmləndirmə öyrənilməsi

Fikir, 7 USS oxunuşunun bir vektora kodlanması və son 10 baş əyilməsinin 70 girişdən ibarət ardıcıl bir vektor yaratmaq üçün istifadə edilməsidir. İlk oxunuşlar yarımçıq olduğundan sıfırlarla doldurulacaq. Hər bir giriş USS -dən olan məsafə dəyərini ehtiva edir. Bu vəziyyət vektoru s. Sistem 1000 girişə icazə verir. Bundan sonra ən köhnə giriş dəyişdiriləcək və hər bir s-r cütü üçün yaş qeydləri bir azaldılacaq.

Bot bir obyektə 10 sm -dən çox yaxınlaşmamalıdır. Bu mənfi bir mükafat yaradır. Sadəlik üçün; yaxşı hərəkətlər 1, pislər 0 ilə mükafatlandırılır. Bu, hər bir hərəkət-vəziyyət birləşməsi üçün mükafat alma ehtimalını yaradır. Endirimli mükafatlardan və epsilon açgözlü siyasətindən istifadə edəcəyik.

Bu, hər üç hərəkət üçün sağda, düz və solda 3 böyük vəziyyət-mükafat (s-r) cədvəli yaradır-hər bir hərəkət üçün sürətli və yavaş sürətə sahib olmaq mümkündür. Daha sonra 6 hərəkət və 6 axtarış s-r cədvəlimiz olardı.

Hər dəfə yeni bir vəziyyət qeyd edildikdə cədvəllərlə müqayisə edilir, ən yaxın qonşunu tapmaq üçün Evklid məsafəsi (və ya oxşar ölçü) istifadə olunur. Bu sıralanmayacaq, əksinə vəziyyəti çox oxşar olaraq qəbul etmək, mövcud vəziyyəti yenidən yazmaq və ən yüksək mükafat üçün yeniləmək və əlaqəli hərəkəti həyata keçirmək üçün bir eşik t təyin edilir. Əgər oxşar deyilsə (d> t) hər bir hərəkət üçün yeni bir s-r cütü daxil edin a. S-r üçün hərəkətlər arasında bir əlaqə varsa (hamısı eyni mükafata sahibdir) təsadüfi seçim edin, lakin bu çox yayılmış deyil və buraxıla bilər.

t çox kiçik olarsa, bənzər vəziyyətlər nəzərə alınmayacaq və hər bir vəziyyət unikal olaraq görüləcək. Çox böyük bir t, yaxşı hərəkətləri seçmə qabiliyyətinə təsir edə biləcək daha fərqli vəziyyətlərin bir araya gəldiyini bildirir. Ən yaxşı t -ni təyin etmək üçün statistik metodlardan istifadə etmək mümkün ola bilər.

Cədvəl belə bir şeyə bənzəyir: Giriş No - Dövlət vektoru - 1 hərəkət üçün mükafat - 2 hərəkət üçün mükafat - 3 hərəkət üçün mükafat.

Düşünürəm ki, həqiqi tətbiq çətin olacaq, amma səy göstərməlidir. Uğurlar!

Tövsiyə: