Mündəricat:
- Addım 1: Başlatma və Sensorlar
- Addım 2: Məlumat əldə etmək
- Addım 3: Missiyanı bitirmək
- Addım 4: Nəticə
Video: Roomba Explorer: 4 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
MATLAB və iRobotun Create2 Robotundan istifadə edərək, bu layihə naməlum bir yerin müxtəlif sahələrini araşdıracaq. Təhlükəli bir ərazidə manevr etmək üçün Robotdakı sensorlardan istifadə etdik. Əlavə edilmiş bir Raspberry Pi -dən fotoşəkillər və video lent əldə edərək, Robotun qarşılaşacağı maneələri təyin edə bildik və onlar təsnif ediləcək.
Parçalar və materiallar
Bu layihə üçün sizə lazım olacaq
-Kompüter
-MATLAB -ın ən yeni versiyası (bu layihə üçün MATLAB R2018b istifadə edilmişdir)
- roombaInstall alət qutusu
-iRobotun Create2 Robotu
-Kamera ilə Raspberry Pi
Addım 1: Başlatma və Sensorlar
Hər hansı bir proqramlaşdırmaya başlamazdan əvvəl, Robotun müxtəlif komponentlərinə daxil olmağa imkan verən roombaInstall alətlər qutusunu yüklədik.
Əvvəlcə hər hansı bir Robotu işə salmaq üçün bir GUI yaratdıq. Bunu etmək üçün giriş olaraq Robotun nömrəsini yazmalısınız. Bu, Robotun qarşılaşacağı bir çox ərazidə manevr etməsi üçün çalışdığımız Robota proqramımızı işə salmağa imkan verəcək. Sürətini və ya istiqamətini dəyişdirmək üçün Robotu açmaq üçün onların çıxışlarından istifadə edərək Cliff Sensors, Light Bump Sensors və Physical Fump Sensorlarını tətbiq etdik. Altı İşıq Təmiri Sensorundan hər hansı biri bir obyekti aşkar etdikdə, çıxardıqları dəyər azalacaq və tam sürətlə toqquşmamaq üçün Robotun sürətinin azalmasına səbəb olacaq. Robot nəhayət bir maneə ilə toqquşduqda, Fiziki Bump sensorlar sıfırdan böyük bir dəyər bildirəcək; bu səbəbdən Robot dayanacaq, buna görə heç bir toqquşma olmayacaq və daha çox funksiya hərəkətə keçə bilər. Cliff Sensorları üçün ətrafdakıların parlaqlığını oxuyacaqlar. Dəyər 2800 -dən çox olarsa, Robotun sabit bir yerdə və təhlükəsiz olacağını təyin etdik. Lakin, dəyər 800 -dən azdırsa, uçurum sensorlar uçurumu aşkar edəcək və düşməmək üçün dərhal dayanacaq. Aralarındakı hər hansı bir dəyər, suyu təmsil etmək üçün təyin edildi və Robotun hərəkətini dayandırmasına səbəb olacaq. Yuxarıdakı sensorlar istifadə edərək, Robotun sürəti dəyişdirilərək hər hansı bir təhlükənin olub olmadığını daha yaxşı təyin edə bilərik.
Aşağıda kod var (MATLAB R2018b -dən)
%% Başlanğıc
dlgPrompts = {'Roomba nömrəsi'};
dlgTitle = 'Otağınızı seçin';
dlgDefaults = {''};
opts. Resize = 'açıq';
dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % İstifadəçidən otaq nömrəsini daxil etməsini istəyən bir pəncərə yaradın
n = str2double (dlgout {1});
r = otaq (n); İstifadəçi tərəfindən təyin edilən Roomba %% Light Bump Sensorlarından Sürət təyinini doğru olaraq başlatdıqda s = r.getLightBumpers; yüngül zərbə sensorlar almaq
lbumpout_1 = çıxarış sahəsi (lər, 'sol'); % sensorların ədədi dəyərlərini alır və onları daha istifadəyə yararlı edir lbumpout_2 = extractfield (s, 'leftFront');
lbumpout_3 = çıxarış sahəsi (lər, 'leftCenter');
lbumpout_4 = extractfield (s, 'rightCenter');
lbumpout_5 = extractfield (s, 'rightFront');
lbumpout_6 = çıxarış sahəsi (lər, 'sağda');
lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % dəyərləri matrisə çevirir
sLbump = sırala (lbout); %sıralanan matris ən aşağı dəyərə çıxarıla bilər
lowLbump = sLbump (1); sürət =.05+(lowLbump)*. Heç bir şey aşkar edilmədikdə sürəti, daha yüksək sürəti təyin etmək üçün yaxın maneələri təmsil edən ən aşağı dəyərdən istifadə edən 005 %.
r.setDriveVelocity (sürət, sürət)
bitmək
Fiziki tamponlar
b = r.getBampers; Çıxış doğru, yalan
bsen_1 = çıxarış sahəsi (b, 'sol')
bsen_2 = çıxarış sahəsi (b, 'sağ')
bsen_3 = çıxarış sahəsi (b, 'ön')
bsen_4 = çıxarış sahəsi (b, 'leftWheelDrop')
bsen_5 = çıxarış sahəsi (b, 'rightWheelDrop')
bumps = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)
əgər tbump> 0 r.setDriveVelocity (0, 0)
bitmək
Uçurum Sensorları
c = r.getCliffSensors %% 2800 təhlükəsiz, başqa su
csen_1 = çıxarış sahəsi (c, 'sol')
csen_2 = çıxarış sahəsi (c, 'sağ')
csen_3 = çıxarış sahəsi (c, 'leftFront')
csen_4 = çıxarış sahəsi (c, 'rightFront')
uçurumlar = [csen_1, csen_2, csen_3, csen_4]
ordcliff = sırala (uçurumlar)
əgər ordcliff (1) <2750
r.setDriveVelocity (0, 0)
uçurum <800
disp 'uçurum'
başqa
disp 'su'
bitmək
r. TurnAngle (45)
bitmək
Addım 2: Məlumat əldə etmək
Fiziki Çarpma Sensorları açıldıqdan sonra, Robot maneənin fotoşəkilini çəkmək üçün Raspberry Pi təyyarəsini tətbiq edəcək. Fotoşəkil çəkdikdən sonra, mətn tanınması istifadə edərək, şəkildə mətn varsa, Robot maneənin nə olduğunu və maneənin nə dediyini təyin edəcək.
img = r.getImage; imshow (img);
imwrite (img, 'imgfromcamera.jpg')
foto = imread ('imgfromcamera.jpg')
OcrResults = ocr (şəkil)
tanınmışText = ocrResults. Text;
rəqəm;
imshow (şəkil) mətni (220, 0, tanınmışText, 'BackgroundColor', [1 1 1]);
Addım 3: Missiyanı bitirmək
Robot maneənin HOME olduğunu müəyyən etdikdə, missiyasını tamamlayacaq və evdə qalacaq. Missiya başa çatdıqdan sonra, Robot evə qayıtdığını bildirən bir e-poçt xəbərdarlığı göndərəcək və səyahət zamanı çəkdiyi şəkilləri göndərəcək.
E-poçt göndərilməsi
setpref ('İnternet', 'SMTP_Server', 'smtp.gmail.com');
setpref ('İnternet', 'E_mail', '[email protected]'); setpref -dən göndəriləcək % poçt hesabı ('İnternet', 'SMTP_Username', 'göndərən e -poçt daxil edin'); % göndərən istifadəçi adı setpref ('İnternet', 'SMTP_Password', 'göndərən parolunu daxil edin'); % Göndərənlərin şifrəsi
rekvizit = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'doğru'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('Qəbul e -poçtunu daxil edin', 'Roomba', 'Roomba evə qayıtdı!', 'imgfromcamera.jpg') göndərmək üçün % poçt hesabı
Robot daha sonra bitdi.
Addım 4: Nəticə
Daxil olan MATLAB proqramı, Robotla birlikdə istifadə edilən bütün skriptdən ayrılmışdır. Son qaralamada, tamponların daim işlədiyinə əmin olmaq üçün başlanğıc mərhələsi istisna olmaqla bütün kodu bir müddətlik döngəyə daxil etdiyinizə əmin olun. Bu proqram istifadəçinin ehtiyaclarına uyğun olaraq düzəldilə bilər. Robotumuzun konfiqurasiyası göstərilir.
*Xatırlatma: MATLAB -ın Robot və göyərtədəki Raspberry Pi ilə qarşılıqlı əlaqədə olması üçün roombaInstall alətlər qutusuna ehtiyac olduğunu unutmayın.
Tövsiyə:
Roomba Bot Bulider: 5 addım (şəkillərlə birlikdə)
Roomba Bot Bulider: Bot Oluşturucu, "tutanlar" olan; Cəbhəyə bərkidilmiş əşyalar ətrafında hərəkət edə biləcək. İçindəki kod, siçanın yalnız bir klikiylə idarə edə biləcəyiniz bir GUI qutusu ilə ilk hərəkəti qeyd etmək üçün qurulmuşdur. Sonra
Internet Explorer üçün klaviatura qısa yolları!: 4 addım
Internet Explorer üçün Klaviatura Qısayolları !!: Bu Təlimat sizə internet kəşfiyyatçısı üçün faydalı klaviatura qısa yollarını göstərəcəkdir. Zəhmət olmasa kanalıma abunə olun Təşəkkürlər
Roomba Scout Explorer: 8 addım
Roomba Scout Explorer: Ən çox gözlənilən və ən çox araşdırılan Amerika layihələrindən biri olaraq Mars gəzən layihələri, tək araşdırma məqsədi ilə yüksək texnologiyalı muxtar sistemlərin istehsalında insan nailiyyətlərinə çevrildi
Roomba'dan Roverə cəmi 5 addım !: 5 addım
Roomba'dan Roverə cəmi 5 addımda!: Roomba robotları, robotika aləmində barmaqlarınızı batırmağın əyləncəli və asan bir yoludur. Bu Təlimat kitabında, sadə bir Roombanı ətrafını eyni zamanda təhlil edən idarə olunan bir roverə necə çevirəcəyimizi ətraflı izah edəcəyik. Parça siyahısı1.) MATLAB2.) Roomb
Avtobus Pirate 3EEPROM Explorer lövhəsi: 5 addım
Bus Pirate 3EEPROM Explorer Board: Hack a Day Bus Bus Pirates -dən biriniz varsa, bununla nə edirsiniz? 3EEPROM kəşfiyyat lövhəsi ilə 1 telli, I2C və SPI EEPROMlar haqqında məlumat əldə edin (buna THR-EE-PROM deyirik) .EEPROM, məlumatları fasiləsiz olaraq saxlayan bir yaddaş çipidir