Мазмуну:

Марс Roomba: 6 кадам
Марс Roomba: 6 кадам

Video: Марс Roomba: 6 кадам

Video: Марс Roomba: 6 кадам
Video: Чанги 1ба 1👍👍 2024, Ноябрь
Anonim
Марс Roomba
Марс Roomba

Бул Instructable сизге 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 мүмкүнчүлүктөрүн колдонуп Roombанын кыймылын көзөмөлдөө үчүн кодду аралап өтөт. Баштоо үчүн MATLAB тиркемесин смартфонуңузга жүктөп алып, Mathworks эсебиңизге кириңиз. Киргенден кийин, "көбүрөөк", "жөндөөлөргө" өтүңүз жана компьютериңизге анын IP дарегин колдонуп туташыңыз. Туташкандан кийин, "көбүрөөккө" кайтып, "сенсорлорду" тандаңыз. Экрандын жогорку панелиндеги үчүнчү сенсорго тийип, жана баштоону таптаңыз. Эми, смартфонуңуз алыстан башкаруу!

Код төмөнкүчө:

ал эми 0 == 0

тындыруу (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Side = PhoneData (3);

бүдүр = r.getBampers;

if Side> 80 || Side <-80

r.stop

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

тыныгуу

elseif Side> 20 && Side <40

r.turnAngle (-5);

elseif Side> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif Side <-40

r.turnAngle (25);

аяктоо

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

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

аяктоо

аяктоо

4 -кадам: таасирди таануу

Таасирди таануу
Таасирди таануу

Биз ишке ашырган дагы бир функция - бул Roombанын объектке тийгизген таасирин аныктоо, андан кийин анын азыркы жолун оңдоо. Бул үчүн бампер сенсорлорунун көрсөткүчтөрү менен шарттуу нерселерди колдонуп, бир нерсенин урулганын аныктоого туура келди. Эгерде робот бир нерсеге урунса, ал 2 метр артка жылат жана кайсы бамперге тийгенин аныктаган бурчта айланат. Бир нерсе урулганда, меню "уф" деген сөздү көрсөтөт.

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

ал эми 0 == 0

бүдүр = r.getBampers;

r.setDriveVelocity (.1)

эгер шишиктер.солго == 1

msgbox ('Ой!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turn (-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.turn (-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))));

white_mean = (blue_mean + green_mean + red_mean) / 3; %бул бааны болжол менен 100гө чейин каалашат

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

байхад nine_plus_ten == 21 %жашыл - жашоо

эгер жашыл_ман> жашыл_шеги && көк_манасы <көк_босо && кызыл_манасы <кызыл_босго

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_ босого && 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

if white_mean> white_ босого && blue_mean <blue_threshold && green_mean <green_threshold

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

үн (y5, Fs5);

пауза (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

үн (ys, Fss);

пауза (3)

r.stop

% келгин = r.getImage; %imshow (келгин);

% сактоо ('alien_img.mat', келгин);

i = 5;

тыныгуу

башка

nine_plus_ten = 19;

аяктоо

аяктоо

эгер мен == 5

a = 1; %бурулуш бурчу

t = 9; %чоң циклди токтотот

i = 0;

аяктоо

аяктоо

6 -кадам: Run

Бардык код жазылгандан кийин, баарын бир файлга жана voilaга бириктириңиз! Сиздин Roomba ботуңуз азыр толугу менен иштейт жана жарнамалангандай иштейт! Бирок, Bluetooth көзөмөлү өзүнчө файлда болушу керек же коддун калган бөлүгүнөн %% менен ажыратылышы керек.

Роботту колдонуудан ырахат алыңыз !!

Сунушталууда: