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

Roomba Explorer: 4 алхам
Roomba Explorer: 4 алхам

Видео: Roomba Explorer: 4 алхам

Видео: Roomba Explorer: 4 алхам
Видео: Почему робот-пылесос пищит на зарядке 2024, Долдугаар сарын
Anonim
Roomba Explorer
Roomba Explorer

MATLAB болон iRobot -ийн Create2 роботыг ашигласнаар энэхүү төсөл нь үл мэдэгдэх байршлын өөр өөр хэсгүүдийг судлах болно. Бид аюултай газар нутгийг удирдахын тулд роботын мэдрэгчийг ашигласан. Raspberry Pi -ээс авсан гэрэл зураг, видео тэжээлийг авснаар бид роботтой тулгарах саад бэрхшээлийг тодорхойлж чадсан бөгөөд тэдгээрийг ангилах болно.

Материал ба эд анги

Энэ төслийн хувьд танд хэрэгтэй болно

-компьютер

-MATLAB -ийн хамгийн сүүлийн хувилбар (энэ төсөлд MATLAB R2018b ашигласан)

- roombaInstall toolbox

-iRobot -ийн Create2 робот

-Камертай Raspberry Pi

Алхам 1: Эхлүүлэх ба мэдрэгч

Эхлүүлэх ба мэдрэгч
Эхлүүлэх ба мэдрэгч

Аливаа програмчлал эхлэхээс өмнө бид роботын өөр өөр бүрэлдэхүүн хэсгүүдэд хандах боломжийг олгодог roombaInstall хэрэгслийн хайрцгийг татаж авсан.

Эхэндээ бид ямар ч роботыг эхлүүлэх GUI үүсгэсэн. Үүнийг хийхийн тулд та роботын дугаарыг оролт болгон оруулах хэрэгтэй. Энэ нь манай програмыг ажиллуулах робот руу нэвтрэх боломжийг олгоно. Бид роботыг тулгарах олон газар нутгийг маневрлахын тулд ажиллаж байсан. Бид Cliff Sensors, Light Bump Sensors, Physical Bump Sensors -ийг нэвтрүүлсэн бөгөөд тэдгээрийн гаралтыг ашиглан роботын хурд, чиглэлийг өөрчилжээ. Гэрлийн цохилтын зургаан мэдрэгчийн аль нэг нь объектыг илрүүлэх үед тэдгээрийн гаралтын утга буурах бөгөөд ингэснээр роботын хурд буурч, бүрэн хурдны мөргөлдөхөөс зайлсхийх болно. Робот эцэст нь саад бэрхшээлтэй мөргөлдөхөд Физик овойлтын мэдрэгчид тэгээс их утгыг мэдээлэх болно; үүнээс болж робот зогсох тул цаашид мөргөлдөөн гарахгүй бөгөөд илүү олон функцийг ажиллуулах боломжтой болно. Клифф мэдрэгчийн хувьд тэд эргэн тойрныхоо гэрэлтүүлгийг унших болно. Хэрэв утга нь 2800 -аас дээш байвал робот тогтвортой газар дээр, аюулгүй байх болно гэдгийг бид тогтоосон. Гэхдээ хэрэв утга нь 800 -аас бага байвал Клифф мэдрэгч нь хадан цохио илрүүлж, унахгүйн тулд тэр даруй зогсох болно. Энэ хоорондох аливаа утга нь усыг илэрхийлэх зорилготой байсан бөгөөд роботыг зогсооход хүргэнэ. Дээрх мэдрэгчийг ашигласнаар роботын хурдыг өөрчилж, ямар нэгэн аюул байгаа эсэхийг илүү сайн тодорхойлох боломжийг олгодог.

Доорх код байна (MATLAB R2018b -ээс)

%% эхлүүлэх

dlgPrompts = {'Roomba дугаар'};

dlgTitle = 'Roomba -аа сонго';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % Хэрэглэгчийг өрөөнийхөө дугаарыг оруулахыг хүссэн цонх үүсгэх

n = str2double (dlgout {1});

r = Roomba (n); % Хэрэглэгчийн заасан Roomba %% -г эхлүүлнэ Гэрэл цохилтын мэдрэгчээс хурд тодорхойлох үнэн s = r.getLightBumpers; % нь гэрлийн товчлуур мэдрэгчтэй болно

lbumpout_1 = extractfield (s, 'left'); % нь мэдрэгчийн тоон утгыг авч, илүү ашиглах боломжтой болгодог lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'right');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % нь утгыг матриц болгон хөрвүүлдэг

sLbump = эрэмбэлэх (ойролцоогоор); %эрэмбэлэх матрицыг хамгийн бага утгаар нь гаргаж авах боломжтой

lowLbump = sLbump (1); хурд =.05+(lowLbump)*.005 %нь юу ч илрээгүй үед хурдыг, илүү өндөр хурдыг тодорхойлохын тулд ойрхон саад бэрхшээлийг илэрхийлдэг хамгийн бага утгыг ашигладаг.

r.setDriveVelocity (хурд, хурд)

Төгсгөл

% Биеийн бампер

b = r.getBampers; %Гаралт үнэн, худал

bsen_1 = задлах талбар (b, "зүүн")

bsen_2 = extractfield (b, 'баруун')

bsen_3 = extractfield (b, 'урд')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

овойлт = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = нийлбэр (bums)

tbump> 0 r.setDriveVelocity (0, 0)

Төгсгөл

% Cliff мэдрэгч

c = r.getCliffSensors %% 2800 аюулгүй, өөр ус

csen_1 = extractfield (c, 'зүүн')

csen_2 = extractfield (c, 'баруун')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

хадан цохио = [csen_1, csen_2, csen_3, csen_4]

ordcliff = эрэмбэлэх (хадан цохио)

хэрэв ordcliff (1) <2750

r.setDriveVelocity (0, 0)

хэрвээ <800

дисп "хад"

өөр

дисп 'ус'

Төгсгөл

r. TurnAngle (45)

Төгсгөл

Алхам 2: Мэдээлэл авах

Физик овойлт мэдрэгчийг ажиллуулсны дараа робот Raspberry Pi -ийг ашиглан саад бэрхшээлийн зургийг авах болно. Фото зураг авсны дараа, хэрэв зураг дээр текст байгаа бол текст таних аргыг ашигласнаар робот ямар саад бэрхшээл, юу хэлж байгааг тодорхойлох болно.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

зураг = imread ('imgfromcamera.jpg')

ocrResults = ocr (зураг)

хүлээн зөвшөөрөгдсөн Текст = ocrResults. Text;

дүрс;

imshow (зураг) текст (220, 0, хүлээн зөвшөөрөгдсөн Текст, 'BackgroundColor', [1 1 1]);

Алхам 3: Номлолоо дуусгах

Робот саад тотгорыг ГЭР гэж тодорхойлсон бол эрхэм зорилгоо биелүүлж, гэртээ үлдэх болно. Даалгавар дууссаны дараа робот гэртээ буцаж ирсэн тухай имэйлээр сэрэмжлүүлэх бөгөөд аялалынхаа үеэр авсан зургуудаа илгээнэ.

% Имэйл илгээж байна

setpref ('Интернет', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Интернет', 'E_mail', '[email protected]'); setpref -ээс илгээх % имэйл данс ('Интернет', 'SMTP_Username', 'илгээгчийн имэйлийг оруулах'); % илгээгчийн хэрэглэгчийн нэр setpref ('Интернет', 'SMTP_Password', 'илгээгчийн нууц үгийг оруулах'); % Илгээгчийн нууц үг

тулгуур = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'үнэн'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Хүлээн авч буй имэйлийг оруулна уу', 'Roomba', 'Roomba гэртээ харьсан !!', 'imgfromcamera.jpg') % имэйл данс руу илгээх

Дараа нь робот дуусч байна.

Алхам 4: Дүгнэлт

Дүгнэлт
Дүгнэлт

MATLAB програмыг робот дээр ашигласан бүх скриптээс салгасан болно. Эцсийн төсөлд бампер байнга ажиллаж байгаа эсэхийг шалгахын тулд эхлүүлэх алхамаас бусад бүх кодыг хэсэг хугацааны давталтад оруулна уу. Энэ програмыг хэрэглэгчийн хэрэгцээнд нийцүүлэн засварлаж болно. Манай роботын тохиргоог харуулав.

*Сануулах: MATLAB нь робот болон Raspberry Pi -тэй ажиллахад roombaInstall хэрэгслийн хайрцаг шаардлагатай гэдгийг бүү мартаарай.

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