Marsni kashf qilish roboti: 4 qadam
Marsni kashf qilish roboti: 4 qadam
Anonim
Marsni kashf qilish roboti
Marsni kashf qilish roboti

Bu ko'rsatma Marsni kashf qilish robotini dasturlash va boshqarish bo'yicha bosqichma-bosqich ko'rsatma.

Ishni boshlash uchun siz quyidagi materiallar ro'yxatini olishingiz kerak: Tennessi shtatining Eningeering universiteti Tickle kolleji tomonidan moslashtirilgan zaryadlangan iRobot, iRobot-da Raspberry Pi-ga ulangan simsiz tarmoq, UTK iRobot zaryadlovchini yaratadi, Wi-Fi. MATLAB va Internetga ulangan kompyuter.

1 -qadam: Roomba asboblar qutisi

Roomba asboblar qutisi
Roomba asboblar qutisi

MATLAB -ni oching va loyihangizda saqlanadigan kodli fayllar uchun yangi papka yarating. MATLAB -da yangi skriptni oching va quyidagi kodni ishga tushiring. Skript ishga tushirilgandan so'ng, yangi papkani MATLAB fayllarni qidiradigan katalogga qo'shing.

Kod:

roombaInstallclc funktsiyasi; Fayllarni o'rnatish uchun % fayllar ro'yxati = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; variantlardan o'rnatish uchun % manzil = weboptions ('CertificateFilename', ''); % sertifikat talablariga e'tibor bermaslikni aytadi server = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'Roomba o'rnatish/yangilash'; % display maqsadi va tasdiq so'rovini oladi = {'Bu dastur EF 230 Roomba fayllarini yuklaydi:' '' strjoin (fayllar, '') '' 'bu papkaga:' '' cd '' 'Davom etishni xohlaysizmi? '}; ovozli signal; yn = questdlg (tezkor,… dlgTitle,… 'Ha', 'Yo'q', 'Ha');

if ~ strcmp (yn, 'Ha'), qaytish; oxiri

% mavjud fayllar ro'yxatini oling_files = fayllar (cellfun (@exist, files)> 0); if ~ isempty (mavjud_files) % ularni almashtirish haqiqatan ham to'g'ri ekanligiga ishonch hosil qiling prompt = {'Siz bu fayl (lar) ni almashtiryapsiz:' '' strjoin (mavjud_files, '') '' 'O'zgartirish kerakmi?' }; ovozli signal; yn = questdlg (tezkor,… dlgTitle,… 'Ha', 'Yo'q', 'Ha'); if ~ strcmp (yn, 'Ha'), qaytish; oxiri oxiri

% fayllarni yuklab olish cnt = 0; i = 1 uchun: uzunlik (fayllar) f = fayllar {i}; disp (['Yuklanmoqda' f]); url = [server f] ni sinab ko'ring; veb -saqlash (f, url, variantlar); xavfsizlik xatolarining oldini olish uchun % variantlar qo'shildi cnt = cnt + 1; catch disp (['Yuklab olishda xatolik' f]); qo'g'irchoq = [f '.html']; agar mavjud bo'lsa (qo'g'irchoq, 'fayl') == 2 o'chirish (qo'g'irchoq) end end end

if cnt == length (files) msg = 'O'rnatish muvaffaqiyatli bo'ldi'; kutish (msgbox (msg, dlgTitle)); else msg = 'O'rnatish xatosi - tafsilotlar uchun buyruq oynasiga qarang'; kutish (errordlg (msg, dlgTitle)); oxiri

end %roombaInstall

2 -qadam: ulanishga tayyorgarlik

Ulanishga tayyorgarlik ko'rilmoqda
Ulanishga tayyorgarlik ko'rilmoqda
Ulanishga tayyorgarlik ko'rilmoqda
Ulanishga tayyorgarlik ko'rilmoqda

Robotdan chiqadigan micro-USB-ni Raspberry Pi-ning pastki portiga ulang. Keyin Roombaning tepasida, doka va nuqta tugmachalarini bir vaqtning o'zida bosib turing va Roomba ustidagi yorug'lik o'chguncha ushlab turing. Chiqargandan so'ng, siz Roomba -dan elektron tarozini eshitishingiz kerak.

3 -qadam: Robotga ulanish

Robotga ulanish
Robotga ulanish

Kompyuteringizda mavjud tarmoqlarni oching va kompyuter va Raspberry Pi o'rtasidagi mavjud tarmoqni tanlang. MATLAB -ning joriy papkasida joriy loyiha papkasini o'ng tugmasini bosing va 1 -qadamda yuklangan roomba asboblar qutisini tanlang va yo'lga qo'shing. Bir nechta Pi ulanishlari uchun mo'ljallangan tarmoqda Roomba sinfining ob'ektini yaratish orqali robotingizni ko'rsating. Quyidagi misolni ko'ring

Agar sizda 7 raqamiga tayinlangan Roomba bo'lsa, quyidagilarni kiriting:

r = xona (7)

Esda tutingki, bu o'zgaruvchi endi Roomba -ga tayinlangan, robotga berilgan har qanday buyruq tayinlangan o'zgaruvchi tomonidan boshqarilishi kerak.

4 -qadam: kod

Kod
Kod

drive.google.com/drive/folders/1OVR5oTHUsn…

Yuqoridagi havoladan foydalanib, barcha.m fayllarini asosiy dastur ishga tushadigan papkaga saqlang. Havola havolasi bor hamma uchun ochiq bo'lishi kerak. Joriy papkada yangi skriptni oching va quyida ko'rsatilgandek mycontrolprogram.m -ni ishga tushiring:

mycontrolprogram funktsiyasi (r) global m m = mobiledev; emailInit (); yugurish = 1; global f global hisoblash soni = 0; f = r; global direk direk = 0; r.getAngle; r.getDistance; global curLoc curLoc = [0, 0]; global pts pts = nol (1, 2, 2); qo'lda = to'g'ri; graphObs (1); v = 0,15; while <50 if (manual == false) obsDetect (r, v, pts); direc = direc + r.getAngle; r.setLEDDigits (num2str (hisoblash)); else direc = direc + r.getAngle; manualDrive (); end end figSend (); oxiri

Robot endi o'z vazifasini bajarishi kerak.