Mündəricat:
Video: MATLAB ilə Roomba: 4 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bu layihə MATLAB və proqramlaşdırıla bilən iRobot Create2 robotundan istifadə edir. MATLAB haqqında biliklərimizi sınayaraq, şəkilləri şərh etmək və siqnalları aşkar etmək üçün Create2 proqramlaşdıra bilərik. Robotun funksionallığı əsasən MATLAB mobil tətbiqindən və Raspberry Pi kamera modulundan asılıdır.
Addım 1: hissələr və materiallar
1. iRobot Yarat, Sürüm 2
- Bu, Roombaya bənzəyən proqramlaşdırıla bilən bir robotdur. İRobotdan alınan bu məhsulun boşluq olmadığını unutmayın. İstifadəçi tərəfindən xüsusi proqramlaşdırma üçün nəzərdə tutulmuşdur.
2. MATLAB 2017a
- Əksər köhnə versiyalar aşağıda istifadə etdiyimiz kodla uyğun olacaq. MATLAB, sahib olduğunuz versiyaya uyğun olmayan bir əmri təyin edəcək və ən uyğun komanda təklif edəcək.
3. Raspberry Pi 3 Model B, Versiya 1.2
- Hansı Raspberry Pi -nin iRobotunuzla uyğun olduğunu yoxlayın. Əlavə yardım üçün bu linkə baxın: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Bu təlimatlı bir proqramlaşdırılmış Raspberry Pi ilə işlədiyinizi güman edir. Aşağıdakı addımların işləməsi üçün əvvəlcədən proqramlaşdırılmış bir Pi ilə işləməyiniz lazım olduğunu unutmayın. Öncədən proqramlaşdırılmış bir Pi istifadə edərək, bütün kodlamanızı yalnız MATLAB -da yerinə yetirə bilərsiniz.
4. V2 Kamera Modulu (Raspberry Pi üçün)
- Təəccüblənə bilərsiniz; ölçüsünə baxmayaraq, Raspberry Pi Kamera Modulu çox keyfiyyətli. Bu layihə üçün ən ucuz və ən uyğun variantdır.
İsteğe bağlı: 3D çaplı stend. Bu kameranı sabitləşdirmək üçün istifadə olunur. Robotun funksionallığını təsir etmir, ancaq rəng və/və ya obyektin tanınması üçün görüntü məlumatlarından istifadə etmək istəyirsinizsə kodlaşdırmanıza kömək edəcək.
Addım 2: Konfiqurasiya
1. Raspberry Pi və kamera modulunun birləşdirilməsi (Hardware)
- Raspberry Pi -ni gücləndirmək üçün, mikrokontrolörün dişi güc portuna bir kişi ucu mikro USB işə salmalısınız. İsteğe bağlı: Gərginliyin 5V -dən artıq olmamasını təmin etmək üçün bir gərginlik tənzimləyicisi istifadə edilə bilər. Raspberry Pi -ni işə saldıqdan sonra, onu anakartdan mikro -nəzarətçinin USB portu A -ya qədər erkək USB a işlədərək robotunuza qoşa bilərsiniz.
- Pi -ni Roomba -ya bağladıqdan sonra kamera quraşdırılmağa hazırdır. Kamera Modulu gözlədiyinizdən daha kiçik olacaq. Diqqət yetirin ki, lens sensora quraşdırılıb və ağ lent kameradan uzanır. Şeridi çıxarmayın və yırtmayın! Raspberry Pi -yə bağlamaq üçün lazım olan kabel budur. Əvvəlcə lentin ucunu tutun və gümüş bağlayıcıları və mavi kabeli tapın. Bunlar əks tərəfdədir. Sonra, Raspberry Pi -də Ethernet və HDMI portları arasındakı yuvanı tapın. Diqqət yetirin ki, üstündə ağ, kiçik bir kilid var. Yavaş -yavaş kilidi qaldırın, ancaq yuvadan çıxarmayın, çünki çırpılacaq və daimi zədələnəcəkdir. Kilidi qaldırdıqdan sonra lenti götürün və HDMI portuna gümüş bağlayıcılarla üzləşin. Mavi tərəf Ethernet portu ilə qarşılaşacaq. Hələ kilidi açılmadan lenti yuvaya yavaşca sürüşdürün. Onu yuvaya məcbur etmək lazım deyil. Daxil etdikdən sonra kilidi aşağıya itələyin. Kameranız düzgün şəkildə sabitlənibsə, lentdən (yumşaq) çəkə və gərginliyi hiss etməlisiniz. Şerit boş olmamalıdır. Kameranı Pi -yə bağladıqdan sonra nə qədər boş olduğunu görə bilərsiniz. Bu səbəbdən sabit saxlamaq üçün 3D çaplı montajdan istifadə etdik. Yüksək keyfiyyətli görüntü üçün kameranızı hərəkətsiz saxlamaq üçün hansı materiallardan istifadə etmək istədiyinizi müəyyən etmək sizin seçiminizdir.
2. Düzgün Faylların Qurulması və Roombanın Kompüterinizə Bağlanması Bütün avadanlıqlarınız konfiqurasiya edildikdən sonra, robotla ünsiyyət qurmağa imkan verən əlaqəli m faylları ilə birlikdə MATLAB-ın quraşdırılmasına keçə bilərsiniz. Bunu etmək üçün MATLAB açın və əlaqəli bütün faylları bir yerdə saxlamaq üçün yeni bir qovluq yaradın. Lazımi faylları yükləmək/yeniləmək üçün bu skriptdən istifadə edin:
- İndi bütün fayllar yaradılmış qovluqda görünməlidir. MATLAB -ın faylları axtardığı qovluqların siyahısına bu yolu əlavə etmək üçün Cari Qovluq pəncərəsinə sağ vurun və 'Yola əlavə et' seçin. Bütün fayllarınızın doğru yolda olduğundan əmin olun.
3. Fayllar quraşdırıldıqdan sonra robotunuza qoşulmağa başlaya bilərsiniz. Robotunuzu işə salın və işə salındıqdan sonra onu yenidən sıfırlayın (robotunuzu hər dəfə istifadə etməzdən əvvəl və sonra yenidən sıfırlamağı unutmayın). İkincisi, həm robotunuzu, həm də dizüstü kompüterinizi eyni wifi şəbəkəsinə qoşun. Bundan sonra, əvvəlcədən proqramlaşdırılmış Raspberry Pi ilə MATLAB vasitəsi ilə Roombanı verilən adı və roomba funksiyasından istifadə edərək danışacağıq. Məsələn, aşağıdakı xətdən istifadə edərək robot 28 -ə bağlanardım: R = roomba (28).
- Obyekti bir dəyişən R -yə necə təyin etdiyimə diqqət yetirin. İndi R dəyişənini bir quruluş kimi qəbul edərək əlaqəli Roomba funksiyalarına quraşdırma faylından daxil ola bilərəm.
- R.turnAngle (90) Hər şey yaxşı gedirsə, əlaqəni təsdiq edən bir musiqi tonu çalınmalıdır.
Addım 3: MATLAB Məntiqi
Bu addımın altındakı PDF sənədi, MATLAB -da kodlaşdırma prosesimiz üçün ətraflı bir məntiq axını diaqramıdır. Robotun yaxınlıqdakı bir obyekti algıladığı zaman bizimlə əlaqə qurmasını təmin etmək üçün uçurum, işıq və işıq zərbəsi sensorlarını işə saldıq. Məsələn, robot irəli hərəkət edərkən, işıq sensörleri səyahət etdiyi vektora görə yolundakı obyektləri axtarır. Robot üçün bir məsafə eşikini seçdik ki, bir obyektə yaxınlaşanda onunla toqquşmaq əvəzinə tərsinə dönsün. Robotumuz, kodlaşdırma prosesində göstərdiyimiz Twitter ilə də qurulmuşdur (bu aşağıda göstəriləcək).
Təcrübəni artırmaq üçün mobil telefonlarımızdakı MATLAB tətbiqindən istifadə etdik ki, robotun hərəkətlərini telefonlarımızı əyərək idarə edə bilək. Bunun əvəzinə MATLAB kod seqmentində moveDistance əmrini istifadə edərək robotun hərəkət etməsini təmin edə biləcəyiniz üçün bu isteğe bağlı bir fəaliyyətdir. Məqsədinizin dəqiq olması üçün robotunuzu idarə etmək üçün MATLAB əmrlərindən istifadə edilməsinə üstünlük verildiyini unutmayın. Kameranın müəyyən bir yerdə bir şəkil çəkməsi üçün robotunuzu nişan almaq istəyirsinizsə, robotun hərəkətlərini MATLAB -da kodlaşdırmaq daha yaxşı olar. Əyləncəli olarkən robotunuzu idarə etmək üçün MATLAB tətbiqindən istifadə dəqiqlik üçün arzuolunan deyil.
Kod, Roomba'ya əsas bir quruluşu yerinə yetirməyi və sonra davamlı bir döngə ilə davam etməyi əmr edir. Əvvəlcə dizüstü kompüter Roomba () əmrindən istifadə edərək Roomba ilə əlaqə quracaq. MATLAB -da webwrite () əmrini istifadə edərək twitter bağlantısını da qurur. Döngə, Roombanı əhatə edən mühitdən asılı olaraq beş əsas məntiqi axını ehtiva edir. Əvvəlcə Roomba maneələri yoxlayır və maneə olduğunu görərsə geriyə düzəldir. Bu döngə içərisində, Roombanın aparıldığı təqdirdə istifadəçiləri xəbərdar edən ikinci yoldur. Sərt Mars Müharibə Bölgəsində əhəmiyyətli bir yardım proqramı. Roomba mövqeyinin təhlükəsiz olduğunu təyin etdikdən sonra, növbəti hərəkətini təyin etmək üçün mobil cihaza baxır. Mobil cihaz irəli əyilmişsə, təkərin sürətini meydançanın dərəcəsinə əsasən çevirməkdən daha çox, rul ölçməsinin şiddətindən asılı olaraq əsas sürəti hesablayacaq. Telefon Roombanı tərsinə də hərəkət etdirə bilər. Neytral bir mobil cihaz vəziyyəti son iki yolu bağlayır. İstirahət edən Roomba, yad bir bayraq axtaracaq və istifadəçini buna uyğun olaraq xəbərdar edəcək.
Aşağıda kodumuz var (MATLAB 2017a tamamlandı)
Girişlər: wifi bağlı bir cihazdan, kameradan oriyentasiya məlumatları
%məlumat, sensor məlumatları
Çıxışlar: hərəkət wifi ilə əlaqəli cihaz və hərəkətlə idarə olunur
% sensor məlumatlarını oxumaqla yoxlanılan təhlükəsizlikdir. Kamera aşkar edərsə
bir yad bayrağı sonra roomba düşmən bayrağı tweeting ilə cavab verir
% aşkar edilmişdir.
Məqsəd: cihazımız olanları qorumaqdan başqa heç bir məqsədi olmadan yaşayır
onu yaratdı, yaradıcısına xidmət edir və edir
tam olaraq onun dedikləri.
İstifadə: mahiyyətcə proqram öz başına işləyəcək.
hamısını təmizlə, hamısını bağla, clc
Obyektləri və dəyişənləri işə salmaq
r = roomba (28);
m = mobiledev;
%istifadə cavabı = webwrite (ana adı, məlumat)
ana adı = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';
API = 'SGZCTNQXCWAHRCT5';
tweet = 'RoboCop Əməliyyatlıdır… Komanda gözləyir';
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (host adı, məlumatlar);
%daim çalışan loop
halbuki 1 == 1
Relavent Data olan Strukturlar
o = m. istiqamətləndirmə; %Mobil Cihazın istiqamətləndirilməsi
işıq = r.getLightBampers (); Yüngül tampon dəyərləri
a = r.getCliffSensors (); CLiff Sensor dəyərləri
bump = r.getBampers (); Tampon Sensorları
tamponları yoxlayın
əgər bump.right == 1 || bump.left == 1 || bump.front == 1
r.moveDistance (-. 2,.2);
İşıq Sensorlarını yoxlayın
elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || işıq. sağ> 60 || light.rightFront> 60 || light.rightCenter> 60
r.moveDistance (-. 2,.2);
Cliff Sensorlarını yoxlayın
Anti-Theft Signal və bildiriş
başqa <a & sol <300 && a.right <300 && a.leftFront <300 && a.rightFront <300
r.stop ();
r.bip ();
tweet = 'RoboCop qaldırıldı!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (ana adı, məlumatlar);
Normal uçurumdan qaçınma əməliyyatı
elseif a.solda <300 || a. sağ <300 || a.leftFront <300 || a.doğrudan <300
r.moveDistance (-. 2,.2);
Roomba çek keçdi və indi normal əməliyyat ilə davam edəcək.
Əvvəlcə cihazın rulosu ölçülür və bir baza olur
%sürət daha sonra təkər sürətini hesablamaq üçün istifadə olunur
İrəli Hərəkət
elseif o (3)> = 0 && o (3) <= 60
baseVel = (-. 5/60)*(o (3) -60);
əgər o (2)> =-70 && o (2) <0 olarsa
r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));
başqa o (2) = 0
r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));
başqa r.stop
bitmək
Geri Hərəkət
elseif o (3)> 100 && o (3) <150
r.setDriveVelocity (-. 2, -.2)
r.bip ();
r.bip ();
istirahət otağı, floresan olaraq qeyd olunan Alien Bayrağını axtaracaq
yaşıl Kağız parçası
başqa
r.stop
img = r.getImage (); %şəkil çəkir
eşik = graythresh (img (200: 383,:, 2))+.1; yaşıl səviyyə %
əgər eşik>.42
tweet = 'Düşmən Ləkələndi!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (ana adı, məlumatlar);
başqa
r.stop
bitmək
bitmək
bitmək
Addım 4: Nəticə
Unutmayın, yuxarıda yazdığımız skriptdən istifadə edə bilərsiniz, ancaq ehtiyaclarınıza uyğun olaraq hər zaman dəyişə bilərsiniz. Telefonunuz tərəfindən idarə olunmasına ehtiyac yoxdur! (Ancaq bunu daha əyləncəli edir.) Robotunuzu idarə etmək üçün hansı metoddan istifadə etməyi üstün tutduğunuzu seçin. Robotunuzla gəzin və zövq alın!
Tövsiyə:
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: 7 Addım (Şəkillərlə)
ESP8266 - İnternet / ESP8266 ilə Taymer və Uzaqdan İdarəetmə ilə Bağ Suvarması: ESP8266 - Suvarma uzaqdan idarə və tərəvəz bağları, çiçək bağları və çəmənlər üçün vaxtı ilə. ESP-8266 sxemindən və suvarma qurğusu üçün hidravlik / elektrikli klapandan istifadə edir
ESP32 ilə PWM - Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: 6 addım
ESP32 ilə PWM | Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: Bu təlimatlarda Arduino IDE istifadə edərək ESP32 ilə PWM siqnallarının necə yaradılacağını görəcəyik. PWM əsasən hər hansı bir MCU -dan analoq çıxışı yaratmaq üçün istifadə olunur və bu analog çıxış 0V ilə 3.3V arasında ola bilər (esp32 vəziyyətində) & dan
Raspberry Pi Model 3 A+ilə Brauzer tərəfindən idarə olunan Roomba Robotu: 6 Addım (Şəkillərlə birlikdə)
Raspberry Pi Model 3 A+ilə Brauzer tərəfindən İdarə Edilən Roomba Robotu: Baxış Bu Təlimat, ölü Roomba'ya yeni bir beyin (Raspberry Pi), gözlər (Veb Kamera) və hər şeyi bir veb brauzerdən idarə etmə üsulunu necə verməyə yönələcək. Serial interfeys vasitəsilə idarə etməyə imkan verən bir çox Roomba hack var. Məndə yoxdu
Roomblock: Roomba, Raspberry Pi və RPLIDAR ilə ROS naviqasiyasını öyrənmək üçün bir platforma: 9 addım (şəkillərlə)
Roomblock: Roomba, Raspberry Pi və RPLIDAR ilə ROS naviqasiyasını öyrənmək üçün bir platforma: bu nədir? &Quot; Roomblock " bir Roomba, bir Raspberry Pi 2, bir lazer sensoru (RPLIDAR) və bir mobil batareyadan ibarət bir robot platformasıdır. Montaj çərçivəsi 3D printerlər tərəfindən edilə bilər. ROS naviqasiya sistemi otaqların xəritəsini düzəltməyə və
ARDUINO YUN tərəfindən idarə olunan ROOMBA STEFANO DALL'OLIO tərəfindən Wifi Tətbiqi ilə: 4 Addım (Şəkillərlə)
ARDUINO YUN tərəfindən idarə olunan ROOMBA, STEFANO DALL'OLIO tərəfindən Wifi Tətbiqi ilə: Bu təlimatla, Wifi vasitəsilə Roomba sürmək üçün ARDUINO YUN -u Roomba'ya bağlamaq üçün kodu paylaşıram. Kod və tətbiq tam olaraq özüm tərəfindən yaradılıb və Stefano Dall tərəfindən hazırlanmışdır. Olio.My Roomba Roomba 620 -dir, lakin eyni kodu digər Roomb üçün də istifadə edə bilərsiniz