Mündəricat:

Roomba MATLAB Layihəsi: 5 addım
Roomba MATLAB Layihəsi: 5 addım

Video: Roomba MATLAB Layihəsi: 5 addım

Video: Roomba MATLAB Layihəsi: 5 addım
Video: Roomba Control (ROS & MATLAB) 2024, Noyabr
Anonim
Roomba MATLAB Layihəsi
Roomba MATLAB Layihəsi

NASA -nın Mars gezici üçün hazırkı planı, bir məlumat toplayıcısı olması və Marsın ətrafında dolaşması, Yerə gətirmək üçün torpaq nümunələri toplamasıdır ki, elm adamları planetdə əvvəlki həyat formalarının olub olmadığını görə bilsinlər. Əlavə olaraq, rover elm adamlarına şəkillər göndərir ki, bu da onların hərəkət etməsinə kömək edə və problemlərini həll edə bilər.

Qrupumuzun layihəmizdəki fikri, roverin 2020 -ci ildə yer üzündən çıxacaq NASA roveri ilə eyni şeyi etməsi, həm də ərazinin coğrafiyasını xəritələşdirməsidir. Roomba, uçurumları hiss edə və yıxılmadan özünü dayandıra bilər, sonra isə yıxılmaması və zədələnməməsi üçün geri çəkilə, dönə və istiqamətini dəyişə bilər. Layihəmizə inteqrasiya olunan digər ideyamız odur ki, gördüyü görməli yerləri qura bilsin və döngə bitdikdə və gedişində hər dəfə bir sahə göstərsin.

Bu təlimat, Roomba üçün eyni tip kod yaratmaq istəyən hər kəs üçündür.

Addım 1: Adım 1: Lazım olan materiallar

Addım 1: Lazım olan materiallar
Addım 1: Lazım olan materiallar
Addım 1: Lazım olan materiallar
Addım 1: Lazım olan materiallar

Sizə lazım olacaq:

  1. Bir otaq
  2. MATLAB
  3. Bu fayl Roomba işlətmək üçün
  4. Düz bir səth
  5. "Uçurum" rolunu oynayacaq bir masa üstü

Addım 2: Addım 2: Roomba üçün Kodun Qurulması/Alınması

Addım 2: Roomba üçün Kodun Qurulması/Alınması
Addım 2: Roomba üçün Kodun Qurulması/Alınması

Faylları daxil etdikdən sonra ekranınız belə görünəcək.

Addım 3: Addım 3: Uçurum Sensorlarının/LED İşıqlarının Qurulması

Bu kod, otaq otağınıza tam olaraq hansı açı ilə dönməli olduğunuzu, batareya məlumatlarını yoxlamağı, otaq otağınıza nə qədər sürətli getməyinizi və bir şəxsin kameranın kamerasından yoxlanmasını izah edəcək. Bir insanı tanıyarsa və bir uçurumdan düşməzdən əvvəl özünü dayandırsa, bu da bip səsi verəcək.

rob.setLEDDigits ('') x = 0 cəhd edin; y = 0; teta = 0; maneə = ; dövr = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; Rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1) %dönmə bucaqlarını düzəltmək üçün funksiya AA_checkperson (rob) rob.beep olub -olmadığını yoxlayın %AA_cliffcheck (rob) varsa Cliff Sensorunu yoxlayın.) rob.stop rob.setLEDDigits ('Cliff') fasilə (0.5) maneə (dövr) = 2; AA_cliffbeep (rob) %Yedəklə Döndür rob.moveDistance (-. 15) rob.turnAngle (30) sonu

Adım 4: Adım 4: Maneələrin yoxlanılması

Bu kod, ətrafdakı əşyaları yoxlamaq üçün otaqbanı alacaq və özünə zərər verməzdən əvvəl dayandığından əmin olmaq üçün qabar sensorunu yoxlayacaq.

AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') fasilə (0.5) maneə (dövr) = 1 olarsa İşıq Sensorunu yoxlayın; Divar AA_wallbeep (rob) %Yedəklə Döndür rob.moveDistance (-. 15) rob.turnAngle (30) son %AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') durdurulsa (0.5) Bump Sensorunu yoxlayın. maneə (dövr) = 1; Divar AA_wallbeep (rob) Yedəklə və Döndür rob.moveDistance (-. 15) rob.turnAngle (30) sonu Heç bir şey boş deyilsə (maneə) maneə (dövrə) = 0; elseif uzunluq (maneə) <dövr maneə (dövr) = 0; bitmək

Addım 5: Adım 5: Çizilmə

Addım 5: Plotting
Addım 5: Plotting

Bu kod, otağınıza səyahətində qarşılaşdıqlarını planlamasını söyləyəcək. Roomba dayandıqdan sonra belə bir süjet görünəcək.

Vəzifə alın d = rob.getDistance; əgər dövr == 1 teta (dövr) = 0; x (dövr) = d.*cosd (teta (dövr)); x y (dövr) = d.*sind (teta (dövr)) ilə səyahət edilən ümumi məsafə; səyahət edilən ümumi məsafə y başqa teta (dövr) = teta (dövr-1) + rob.getAngle; x (dövr) = d.*cosd (teta (dövr)) + x (dövr-1); x y (dövr) = d.*sind (teta (dövr)).*d + y (dövr-1); y sonunda səyahət edilən ümumi məsafə %rob.getButtons.clean break sonu olduqda Break şərti Artım dövrü dövrü = dövr + 1; i = 1 üçün son rob.stop: maneə olduqda döngə (i) == 1 %Divar sahəsi (x (i), y (i), 'İşarə', 'kvadrat', 'MarkerEdgeColor', 'r') başqa bir maneə olduqda (i) == 2 %Cliff planı (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') son mətni (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' Normalized ') sonda saxlayın % Siqnal Siqnalını gerçək rob.beep durdurun (3) rob.getButtons.təmiz qırılma sonu % tutma % rob.stop % son

Tövsiyə: