Съдържание:

Mars Roomba: 6 стъпки
Mars Roomba: 6 стъпки

Видео: Mars Roomba: 6 стъпки

Видео: Mars Roomba: 6 стъпки
Видео: Свидание в 16 vs 26 лет 😨😳 2024, Ноември
Anonim
Марс Румба
Марс Румба

Тази инструкция ще ви насочи в указанията за работа с вакуумен бот Roomba, контролиран от Raspberry Pi. Операционната система, която ще използваме, е чрез MATLAB.

Стъпка 1: Консумативи

Какво ще трябва да съберете, за да изпълните този проект:

  • Бот на прахосмукачката Create2 Roomba на iRobot
  • Малина Пи
  • Камера Raspberry Pi
  • Най -новата версия на MATLAB
  • Кутията с инструменти за инсталиране на Roomba за MATLAB
  • Приложение MATLAB за клетъчно устройство

Стъпка 2: Изложение на проблема

Твърдението за проблема
Твърдението за проблема

Нашата задача беше да използваме MATLAB за разработване на марсоход, който да може да се използва на Марс, за да помогнем на учените в събирането на данни за планетата. Функциите, които разгледахме в нашия проект, бяха дистанционно управление, разпознаване на въздействие на обект, разпознаване на вода, разпознаване на живот и обработка на изображения. За да постигнем тези подвизи, кодирахме с помощта на командите Roomba toolbox, за да манипулираме многото функции на iRobot Create2 Roomba.

Стъпка 3: Bluetooth дистанционно управление

Bluetooth дистанционно управление
Bluetooth дистанционно управление

Този слайд ще премине през кода, за да контролира движението на Roomba, използвайки Bluetooth възможностите на вашето смартфон устройство. За да започнете, изтеглете приложението MATLAB на вашия смартфон и влезте в профила си в Mathworks. След като влезете, отидете на „още“, „настройки“и се свържете с компютъра си, използвайки неговия IP адрес. След като се свържете, върнете се към „още“и изберете „сензори“. Докоснете третия сензор в горната лента с инструменти на екрана и докоснете при стартиране. Сега вашият смартфон е дистанционно управление!

Кодът е следният:

докато 0 == 0

пауза (.5)

PhoneData = М. Ориентация;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Страна = PhoneData (3);

неравности = r.getBumpers;

ако Страна> 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 Side-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 върху обект и след това да коригира текущия му път. За да направим това, трябваше да използваме условни стойности с показанията от сензорите на бронята, за да определим дали е ударен обект. Ако роботът удари обект, той ще направи резервно копие от 0,2 метра и ще се завърти под ъгъл, определен от коя броня е ударена. След като елемент е ударен, се появява меню, показващо думата „oof“.

Кодът е показан по -долу:

докато 0 == 0

неравности = r.getBumpers;

r.setDriveVelocity (.1)

ако bumps.left == 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)));

синьо_средно = средно (средно (img (:,:, 3)));

зелено_средно = средно (средно (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; %искат тази стойност приблизително 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

бял_праг = 124;

red_threshold = 115;

докато nine_plus_ten == 21 %зелено - живот

ако green_mean> green_threshold && 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;

прекъсване

иначе

nine_plus_ten = 19;

край

край

nine_plus_ten = 21;

докато nine_plus_ten == 21 %синьо - woder

ако blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('източник на вода е намерен, местоположение начертано');

пауза (2)

изтриване (а)

[y3, Fs3] = аудиопрочитане ('z_speak3.wav');

звук (y3, Fs3);

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

%спестяване ('water_img.mat', woder)

%местоположение на парцела в синьо

i = 5;

прекъсване

иначе

nine_plus_ten = 19;

край

край

nine_plus_ten = 21;

докато nine_plus_ten == 21 %бели - извънземни monkaS

ако white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[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', alien);

i = 5;

прекъсване

иначе

nine_plus_ten = 19;

край

край

ако i == 5

а = 1; %ъгъл на завъртане

t = 9; %прекратяване на голям цикъл

i = 0;

край

край

Стъпка 6: Стартирайте го

След като кодът е написан, комбинирайте всичко в един файл и ето го! Вашият Roomba бот вече ще бъде напълно функционален и ще работи както е рекламирано! Bluetooth контролата обаче трябва да бъде или в отделен файл, или отделена от останалата част на кода с %%.

Приятно използване на вашия робот !!

Препоръчано: