Mündəricat:

MATLAB tərəfindən idarə olunan Roomba: 5 addım
MATLAB tərəfindən idarə olunan Roomba: 5 addım

Video: MATLAB tərəfindən idarə olunan Roomba: 5 addım

Video: MATLAB tərəfindən idarə olunan Roomba: 5 addım
Video: Breketlər haqqında hər şey | Dr. Matlab Alasov | Implant House #breket #baku #stomatoloq #diş #teeth 2024, Iyul
Anonim
MATLAB tərəfindən idarə olunan Roomba
MATLAB tərəfindən idarə olunan Roomba
MATLAB tərəfindən idarə olunan Roomba
MATLAB tərəfindən idarə olunan Roomba

Bu layihənin məqsədi MATLAB və dəyişdirilmiş iRobot proqramlaşdırıla bilən robotdan istifadə etməkdir. Qrupumuz, uçurum sensorlar, tampon sensorlar, işıq sensorlar və kamera da daxil olmaqla iRobotun bir çox funksiyasından istifadə edən bir MATLAB skriptini yaratmaq üçün kodlaşdırma bacarıqlarımızı birləşdirdi. Bu sensor və kamera oxunuşlarını giriş olaraq istifadə etdik, bu da MATLAB kod funksiyalarından və döngələrindən istifadə edərək istədiyimiz müəyyən çıxışları yaratmağa imkan verdi. İRobot -a qoşulmaq və onu idarə etmək üçün MATLAB mobil cihazı və giroskopdan da istifadə edirik.

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

MATLAB 2018a

-MATLAB -ın 2018 versiyası, ən çox mobil cihaza qoşulan kodla ən yaxşı işlədiyi üçün ən çox seçilən versiyadır. Bununla birlikdə kodumuzun əksəriyyəti MATLAB versiyalarının əksəriyyətində şərh edilə bilər.

iRobot Cihaz Yarat

-Bu cihaz, proqramlaşdırma və kodlaşdırma məqsədi daşıyan xüsusi hazırlanmış bir cihazdır. (Əsl vakuum deyil)

Raspberry Pi (kamera ilə)

- Bu, iRobotun beyni kimi işləyən bahalı olmayan bir kompüter lövhəsidir. Kiçik ola bilər, amma çox şeyə qadirdir. Kamera əlavə bir əlavədir. Bütün funksiyalarını və əmrlərini əldə etmək üçün moruq pi istifadə edir. Yuxarıda göstərilən kamera, Tennessi Universitetinin Mühəndislik Əsasları şöbələri tərəfindən yaradılan 3D çaplı stendə quraşdırılmışdır.

Addım 2: Roomba verilənlər bazası faylı

Roomba verilənlər bazası faylı
Roomba verilənlər bazası faylı

Roomba üçün uyğun funksiyaları və əmrləri istifadə etmək üçün ehtiyac duyacağınız bir əsas fayl var. Bu fayl, yazdığınız koddur ki, otaq otağınızın işini daha idarə oluna bilər.

Faylı bu linkdən və ya aşağıda yüklənə bilən fayldan yükləyə bilərsiniz

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Addım 3: Roombaya qoşulun

Əvvəlcə robotunuzun mikro USB fişindən istifadə edərək moruq pi lövhəsinə qoşulduğundan əmin olmalısınız. Sonra kompüterinizi və robotunuzu eyni WiFi -yə düzgün bir şəkildə bağlamalısınız. Bunu etdikdən sonra robot verilənlər bazası faylında verilən əmri istifadə edərək robotunuzu işə sala və ona qoşula bilərsiniz. (Robotunuzu istifadə etməzdən əvvəl və sonra həmişə sıfırlayın). Məsələn, cihazımıza r dəyişənini təyin edərək robotumuza qoşulmaq üçün "r.roomba (19)" əmrindən istifadə edirik. Bu, dəyişənimizi hər an istinad edə biləcəyimiz bir quruluş olaraq quran verilənlər bazası faylına aiddir.

Addım 4: Kod

Kod
Kod
Kod
Kod

Tam kodu aşağıda əlavə etdik, ancaq burada skriptimizin vacib elementlərini vurğulayan qısa bir baxış var. Robotumuzun potensialını tam şəkildə artırmaq üçün bütün sensorlardan və kameradan istifadə etdik. Robotumuza bir mobil cihazı bağlamağımıza və onu əl ilə idarə etmək üçün onun qroskopundan istifadə etməyimizə imkan verən kod da daxil etdik.

Robotun irəli sürətini.06 m/s olaraq təyin edən "r.setDriveVelocity (.06)" sadə əmri ilə başladıq. Bu, robotun əvvəlcədən hərəkət etməsi üçündür

Daha sonra, əsas skriptimiz, aşağıda göstərilən şərti ifadələrdə istinad edə biləcəyimiz və istifadə edə biləcəyimiz quruluşlar yaradaraq verilən robotun məlumatlarını əldə edən bir müddət döngəsi ilə başlayır və beləliklə, robotun quruluş məlumatlarına əsaslanaraq müəyyən bir əmri yerinə yetirməsini bizə xəbər verir. robot sensorlar ilə oxuyur. Robotun uçurum sensorlarını oxuyub qara yolla getməsi üçün qurduq

true % while döngəsi "yalan" bir şey meydana gələnə qədər gedir (bu halda sonsuza qədər davam edir) data = r.getCliffSensors; data2 = r.getBumpers; % uçurum sensoru dəyərləri haqqında məlumatları davamlı olaraq alır və onları % img = r.getImage dəyişəninə təyin edir; Quraşdırılmış kameradan şəkil çəkir image (img); % Alınan görüntünü göstərir % red_mean = orta (orta (img (:,,, 1)))); % data.rightFront <2000 r.turnAngle (-2) olduqda yaşıl rəng üçün orta dəyəri alır; sağ ön uçurum sensorlar üçün dəyər 2000 r.setDriveVelocity (.05) altına düşəndə Roomba təxminən.2 dərəcə CW çevirir; elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); %, Roomba'ya, sağ ön və sol ön sensorlardakı hər iki dəyərin 2000 % -dən aşağı düşdüyü təqdirdə təxminən.2 m/s sürətlə irəliləməyi söyləyir; r.turnAngle (0); % yuxarıdakı şərtlər doğrudursa Roomba'ya dönməməsini söyləyir

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

Bu müddət döngəsindən sonra, kamera vasitəsilə əldə edilən məlumatları işə salan başqa bir müddət döngəsinə daxil oluruq. Xüsusi bir proqram (alexnet) istifadə edərək bir görüntünü tanıyan və bu görüntünü tanıdıqdan dərhal sonra mobil cihazın uzaqdan idarəetməsini işə salan bir if ifadəsindən istifadə edirik

anet = alexnet; Alexnet -in dərin öyrənməsini dəyişkən, əsl sonsuz olaraq təyin edərkən loop img = r.getImage; img = imresize (img, [227, 227]); etiket = təsnif etmək (anet, img); əgər etiket == "kağız dəsmal" || etiket == "soyuducu" etiket = "su"; son şəkil (img); başlıq (simvol (etiket)); çəkilmiş;

Cihazı telefonumuzla idarə etməyimizə imkan verən halqa dövrü, bu məlumatları telefonun jiroskopundan alır və məlumatları davamlı olaraq kompüterdəki MATLAB -a axın edən bir matrisə bağlayırıq. Matrisin məlumatlarını oxuyan və telefonun jiroskopunun müəyyən dəyərlərinə əsaslanaraq cihazı hərəkətə gətirən bir çıxış verən if ifadəsindən istifadə edirik. Mobil cihazın oriyentasiya sensorlarından istifadə etdiyimizi bilmək vacibdir. Yuxarıda göstərilən bir -üç matris, azimut, pitch və yan olan telefonun oriyentasiya sensorlarının hər bir elementi ilə təsnif edilir. Əgər ifadələr tərəfi 50 -dən çox və ya -50 -dən aşağı düşdüyünü ifadə edən şərtlər yaradırsa, robot müəyyən bir məsafəni irəli (müsbət 50) və ya geriyə (mənfi 50) hərəkət etdirir. Və eyni şey meydança dəyərinə aiddir. Meydançanın dəyəri -25 -dən aşağı düşmənin 25 dəyərini aşarsa, robot 1 dərəcə (müsbət 25) və ya mənfi 1 dərəcə (mənfi 25) bir açı ilə dönər

əsl fasilə (.1) % Hər bir dəyər alınmazdan əvvəl.5 saniyə fasilə Controller = iphone. Orientation; IPhone -un oriyentasiya dəyərləri üçün matrisi Azimuthal = Controller (1) təyin edir; Matrisin ilk dəyərini Pitch = Controller (2) dəyişəninə təyin edir; Matrisin ikinci dəyərini dəyişənə təyin edir (iPhone yan tutulduqda irəli və geriyə əymək) Side = Controller (3); Matrisin üçüncü dəyərini dəyişənə təyin edir (iPhone yan tutulduqda sola və sağa əymək) Yan> 130 || Yan 25 r. Hərəkət (-. 1) %, iPhone-u ən az 25 dərəcə geriyə əyilmişsə, Roombanı təxminən.1 metr geri çəkir Yan 25 r.turnAngle (-1) %, iPhone-da Roombanı təxminən 1 dərəcə CCW-ə çevirir. ən azı 25 dərəcə sola əyilmiş, əgər Pitch <-25 r.turnAngle (1) % iPhone ən azı 25 dərəcə ucunda əyilmişsə Roomba -nı təxminən 1 dərəcə CW çevirir.

Sizin xeyrinizə bir hissəni tez bir zamanda kopyalayıb yapışdırmanız lazım olduğu təqdirdə daxil etdiyimiz kodumuzun əsas hissələrinin yalnız önəmli məqamlarıdır. Ancaq ehtiyac olarsa bütün kodumuz aşağıda əlavə olunur

Addım 5: Nəticə

Yazdığımız bu kod xüsusi olaraq robotumuz üçün və layihə haqqında ümumi baxışımız üçün hazırlanmışdır. Məqsədimiz, robotun əksər xüsusiyyətlərindən istifadə edən yaxşı dizayn skriptini hazırlamaq üçün bütün MATLAB kodlaşdırma bacarıqlarımızı istifadə etmək idi. Telefon nəzarətçisini istifadə etmək düşündüyünüz qədər çətin deyil və ümid edirik ki, kodumuz bir iRobotu kodlaşdırmağın konsepsiyasını daha yaxşı başa düşməyinizə kömək edə bilər.

Tövsiyə: