Mündəricat:

MATLAB ilə Roomba: 4 addım (şəkillərlə)
MATLAB ilə Roomba: 4 addım (şəkillərlə)

Video: MATLAB ilə Roomba: 4 addım (şəkillərlə)

Video: MATLAB ilə Roomba: 4 addım (şəkillərlə)
Video: Vinir konstruksiya ilə dişlərin estetik bərpası | Dr. matlab Alasov | Implant House #stomatoloq #diş 2024, Noyabr
Anonim
MATLAB ilə Roomba
MATLAB ilə Roomba

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

Parçalar və materiallar
Parçalar və materiallar
Parçalar və materiallar
Parçalar və materiallar
Parçalar və materiallar
Parçalar və materiallar
Parçalar və materiallar
Parçalar 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

Konfiqurasiya
Konfiqurasiya
Konfiqurasiya
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ə: