Агуулгын хүснэгт:

Марс Roomba: 6 алхам
Марс Roomba: 6 алхам

Видео: Марс Roomba: 6 алхам

Видео: Марс Roomba: 6 алхам
Видео: Приключения пчёлки Майи 6-10 серии 2024, Долдугаар сарын
Anonim
Ангараг Roomba
Ангараг Roomba

Энэхүү заавар нь Raspberry Pi хяналттай Roomba вакуум бот ажиллуулах зааварчилгаа өгөх болно. Бидний ашиглах үйлдлийн систем бол MATLAB юм.

Алхам 1: хангамж

Энэхүү төслийг хэрэгжүүлэхийн тулд танд дараахь зүйлс хэрэгтэй болно.

  • iRobot -ийн Create2 Roomba тоос сорогч бот
  • Raspberry Pi
  • Raspberry Pi камер
  • MATLAB -ийн хамгийн сүүлийн хувилбар
  • MATLAB -д зориулсан Roomba суулгах хэрэгслийн хайрцаг
  • Үүрэн төхөөрөмжид зориулсан MATLAB програм

Алхам 2: Асуудлын мэдэгдэл

Асуудлын мэдэгдэл
Асуудлын мэдэгдэл

Гаригийн өгөгдлийг цуглуулахад эрдэмтдэд туслах зорилгоор Ангараг гариг дээр ашиглах боломжтой ровер бүтээхэд MATLAB -ийг ашиглах үүрэг бидэнд өгсөн юм. Бидний төсөлд тусгасан чиг үүрэг бол алсын удирдлага, объектын нөлөөллийг таних, усыг таних, амьдралыг таних, дүрс боловсруулах зэрэг чиг үүрэг байв. Эдгээр амжилтанд хүрэхийн тулд бид iRobot -ийн Create2 Roomba -ийн олон функцийг удирдахын тулд Roomba toolbox командыг ашиглан кодчилсон.

Алхам 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. зогсоох

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

завсарлага

elseif Side> 20 && Side <40

r.turnAngle (-5);

өөр тал> 40

r.turnAngle (-25);

өөр тал-40

r.turnAngle (5);

өөр тал <-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 овойлт. урд == 1

msgbox ('Өө!');

r.moveDistance (-0.2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif овойлт.баруун == 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;

би = 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 = (цэнхэр_ман + ногоон_мана + улаан_ман) / 3; %энэ үнийг ойролцоогоор 100 байхыг хүсч байна

nine_plus_ten = 21;

ногоон_босго = 125;

blue_threshold = 130;

цагаан босго = 124;

улаан_босго = 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', ургамал ');

%талбайн байршил ногоон

би = 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)

%байрлалын цэнхэр өнгө

би = 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. зогсоох

% харь хүн = r.getImage; %imshow (харь хүн);

% хэмнэх ('alien_img.mat', харь гаригийн хүн);

би = 5;

завсарлага

өөр

nine_plus_ten = 19;

Төгсгөл

Төгсгөл

хэрэв би == 5

a = 1; %эргэх өнцөг

t = 9; %том давталтыг зогсооно

би = 0;

Төгсгөл

Төгсгөл

Алхам 6: Үүнийг ажиллуулна уу

Бүх кодыг бичсэний дараа бүгдийг нэг файл болон voila болгон нэгтгээрэй! Таны Roomba бот одоо бүрэн ажиллагаатай байх бөгөөд зар сурталчилгааны дагуу ажиллах болно! Гэсэн хэдий ч Bluetooth хяналт нь тусдаа файлд байх ёстой эсвэл кодын бусад хэсгээс %% -р тусгаарлагдсан байх ёстой.

Роботыг ашиглан таашаал аваарай !!

Зөвлөмж болгож буй: