Мазмұны:

Марс Румба: 6 қадам
Марс Румба: 6 қадам

Бейне: Марс Румба: 6 қадам

Бейне: Марс Румба: 6 қадам
Бейне: Рақси кудакои ҳозиразамони тоҷик 2024, Қараша
Anonim
Марс Румба
Марс Румба

Бұл нұсқаулық сізге Raspberry Pi басқарылатын Roomba вакуумдық ботын пайдалану бойынша нұсқаулық береді. Біз қолданатын операциялық жүйе MATLAB арқылы.

1 -қадам: Жабдықтар

Бұл жобаны жүзеге асыру үшін сізге не қажет:

  • iRobot -тың Create2 Roomba шаңсорғыш боты
  • Raspberry Pi
  • Raspberry Pi камерасы
  • MATLAB соңғы нұсқасы
  • MATLAB үшін Roomba орнату құралдар тақтасы
  • Ұялы құрылғыға арналған MATLAB қосымшасы

2 -қадам: Мәселе туралы мәлімдеме

Мәселе туралы мәлімдеме
Мәселе туралы мәлімдеме

Бізге MATLAB көмегімен ғалымдарға планетаның мәліметтерін жинауға көмектесу үшін Марста қолдануға болатын ровер жасауды тапсырдық. Біздің жобада қарастырылған функциялар қашықтан басқару, объектінің әсерін тану, суды тану, өмірді тану және суретті өңдеу болды. Бұл жетістіктерге жету үшін біз iRobot -тің Create2 Roomba көптеген функцияларын басқару үшін Roomba құралдар тақтасының пәрмендерін қолдана отырып кодтадық.

3 -қадам: Bluetooth қашықтан басқару құралы

Bluetooth қашықтан басқару пульті
Bluetooth қашықтан басқару пульті

Бұл слайд смартфон құрылғысының Bluetooth мүмкіндіктерін қолдана отырып, Roomba қозғалысын басқаруға арналған код бойынша өтеді. Бастау үшін MATLAB қосымшасын смартфонға жүктеп, Mathworks есептік жазбасына кіріңіз. Жүйеге кіргеннен кейін «қосымша», «параметрлерге» өтіп, компьютерге оның IP мекенжайын пайдаланып қосылыңыз. Қосылғаннан кейін «қосымша» бөліміне оралыңыз және «сенсорларды» таңдаңыз. Экранның жоғарғы құралдар тақтасындағы үшінші сенсорды түртіңіз де, бастау үшін түртіңіз. Енді сіздің смартфоныңыз қашықтан басқару пульті!

Код келесідей:

ал 0 == 0

кідірту (.5)

PhoneData = M. Orientation;

Ази = PhoneData (1);

Қадам = PhoneData (2);

Side = PhoneData (3);

соққылар = r.getBampers;

егер Side> 80 || Бүйірі <-80

r.stop

r.beep ('C, E, G, C^, G, E, C')

үзіліс

elseif Side> 20 && Side <40

r.turnAngle (-5);

басқа жақ> 40

r.turnAngle (-25);

elseif-40

r.turnAngle (5);

elseif жағы <-40

r.turnAngle (25);

Соңы

егер Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

Соңы

Соңы

4 -қадам: әсерді тану

Әсерді тану
Әсерді тану

Біз енгізген тағы бір функция - бұл Roomba -ның объектіге әсерін анықтау, содан кейін оның ағымдағы жолын түзету. Ол үшін бампер сенсорларының көрсеткіштері бар шартты белгілерді қолдану керек болды, олар объектінің соғылғанын анықтады. Егер робот затқа соғылса, ол 2 метр артқа шегінеді және қай бампер соғылғанын анықтайтын бұрышпен айналады. Элементті соққаннан кейін, мәзір пайда болады, онда «уф» сөзі көрсетіледі.

Код төменде көрсетілген:

ал 0 == 0

соққылар = r.getBampers;

r.setDriveVelocity (.1)

егер соққылар.солға == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.front == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif bumps.right == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif bumps.leftWheelDrop == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif bumps.rightWheelDrop == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

Соңы

Соңы

5 -қадам: Өмірді тану

Өмірді тану
Өмірді тану

Біз оның алдындағы заттардың түстерін оқу үшін өмірді тану жүйесін кодтадық. Біз кодтаған өмірдің үш түрі - өсімдіктер, су және шетелдіктер. Ол үшін қызыл, көк, жасыл немесе ақ түстің орташа мәндерін есептеу үшін сенсорларды кодтадық. Бұл мәндер камера қарайтын түсті анықтау үшін қолмен орнатылған шектермен салыстырылды. Код сонымен қатар объектіге баратын жолды және картаны құрады.

Код келесідей:

t = 10;

i = 0;

ал t == 10

img = r.getImage; imshow (img)

үзіліс (0.167)

i = i + 1;

red_mean = орташа (орташа (img (:,,:, 1))));

blue_mean = орташа (орташа (img (:,,: 3))));

green_mean = орташа (орташа (img (:,,:, 2))));

ақ_ән = (көк_ән + жасыл_ән + қызыл_ән) / 3; %бұл бағаны шамамен 100 алғысы келеді

тоғыз_плюс_тен = 21;

жасыл_шекті = 125;

көк_шекті = 130;

ақ шекті = 124;

қызыл шегі = 115;

ал nine_plus_ten == 21 %жасыл - өмір

егер green_mean> жасыл_шекті && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('мүмкін өмір көзі табылды, орналасу орны');

кідірту (2)

жою (а)

[y2, Fs2] = аудио оқу ('z_speak2.wav');

дыбыс (y2, Fs2)

кідірту (2)

%өсімдік = r.getImage; %imshow (өсімдік);

%үнемдеу ('plant_img.mat', өсімдік ');

%учаскенің орналасуы жасыл түспен

i = 5;

үзіліс

басқа

тоғыз_плюс_тен = 19;

Соңы

Соңы

тоғыз_плюс_тен = 21;

ал nine_plus_ten == 21 %көк - водер

егер көк_ман> көк_шекті && жасыл_ман <жасыл_шек && ақ_ман <ақ_шек && қызыл_мән <қызыл_шек

r.moveDistance (-. 1)

a = msgbox ('су көзі табылды, орналасқан жері анықталды');

кідірту (2)

жою (а)

[y3, Fs3] = аудио оқу ('z_speak3.wav');

дыбыс (y3, Fs3);

%woder = r.getImage; %imshow (woder)

%үнемдеу ('water_img.mat', woder)

%учаскенің орналасуы көк түспен

i = 5;

үзіліс

басқа

тоғыз_плюс_тен = 19;

Соңы

Соңы

тоғыз_плюс_тен = 21;

ал nine_plus_ten == 21 %ақ - шетелдіктер monkaS

егер ақ_мағынасы> ақ шегі && көк_мағынасы <көк_шегі && жасыл_мәні <жасыл_шегі

[y5, Fs5] = аудио оқу ('z_speak5.wav');

дыбыс (y5, Fs5);

кідірту (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = аудио оқу ('z_scream.mp3');

дыбыс (ys, Fss);

кідірту (3)

r.stop

% шетелдік = r.getImage; %imshow (бөтен);

% үнемдеу ('alien_img.mat', бөтен);

i = 5;

үзіліс

басқа

тоғыз_плюс_тен = 19;

Соңы

Соңы

егер мен == 5

a = 1; %бұрылу бұрышы

t = 9; %үлкен циклды тоқтатады

i = 0;

Соңы

Соңы

6 -қадам: іске қосыңыз

Барлық код жазылғаннан кейін, бәрін бір файлға және воилаға біріктіріңіз! Сіздің Roomba ботыңыз енді толық жұмыс істейтін болады және жарнамаланғандай жұмыс істейді! Дегенмен, Bluetooth басқару элементі бөлек файлда болуы керек немесе кодтың қалған бөлігінен %% бөлінуі керек.

Роботты пайдаланудан ләззат алыңыз !!

Ұсынылған: