สารบัญ:

Roomba Explorer: 4 ขั้นตอน
Roomba Explorer: 4 ขั้นตอน

วีดีโอ: Roomba Explorer: 4 ขั้นตอน

วีดีโอ: Roomba Explorer: 4 ขั้นตอน
วีดีโอ: รีวิวหุ่นยนต์ดูดฝุ่น iRobot Roomba Combo j7+ ฉลาดล้ำ ตอบโจทย์คนเลี้ยงสัตว์ | Ceemeagain 2024, กรกฎาคม
Anonim
Roomba Explorer
Roomba Explorer

ด้วยการใช้ MATLAB และ Create2 Robot ของ iRobot โครงการนี้จะสำรวจพื้นที่ต่างๆ ของตำแหน่งที่ไม่รู้จัก เราใช้เซ็นเซอร์บน Robot เพื่อช่วยในการเคลื่อนที่ในภูมิประเทศที่อันตราย ด้วยการถ่ายภาพและฟีดวิดีโอจาก Raspberry Pi ที่แนบ เราสามารถระบุอุปสรรคที่ Robot จะเผชิญ และจะถูกจำแนก

ชิ้นส่วนและวัสดุ

สำหรับโครงการนี้ คุณจะต้อง

-คอมพิวเตอร์

- MATLAB เวอร์ชันใหม่ล่าสุด (MATLAB R2018b ใช้สำหรับโครงการนี้)

- roombaInstall กล่องเครื่องมือ

-หุ่นยนต์ Create2 ของ iRobot

-Raspberry Pi พร้อมกล้อง

ขั้นตอนที่ 1: การเริ่มต้นและเซ็นเซอร์

การเริ่มต้นและเซ็นเซอร์
การเริ่มต้นและเซ็นเซอร์

ก่อนเริ่มการเขียนโปรแกรมใดๆ เราดาวน์โหลดกล่องเครื่องมือ roombaInstall ซึ่งอนุญาตให้เข้าถึงส่วนประกอบต่างๆ ของ Robot ได้

เริ่มแรก เราสร้าง GUI เพื่อเริ่มต้น Robot ใดๆ ในการทำเช่นนี้ คุณต้องพิมพ์หมายเลขหุ่นยนต์เป็นอินพุต ซึ่งจะช่วยให้สามารถเข้าถึงโปรแกรมของเราไปยัง Robot ได้ เราได้ดำเนินการเพื่อให้ Robot เคลื่อนที่ผ่านภูมิประเทศต่างๆ ที่อาจพบเจอได้ เราใช้ Cliff Sensors, Light Bump Sensors และ Physical Bump Sensors โดยใช้เอาต์พุตเพื่อเดินทางหุ่นยนต์เพื่อเปลี่ยนความเร็วและหรือทิศทาง เมื่อ Light Bump Sensors ตัวใดตัวหนึ่งในหกตัวตรวจจับวัตถุ ค่าที่ส่งออกจะลดลง ทำให้ความเร็วของหุ่นยนต์ลดลงเพื่อหลีกเลี่ยงการชนกันของความเร็วเต็มที่ เมื่อหุ่นยนต์ชนกับสิ่งกีดขวางในที่สุด เซ็นเซอร์ Physical Bump จะรายงานค่าที่มากกว่าศูนย์ ด้วยเหตุนี้ หุ่นยนต์จะหยุดทำงาน ดังนั้นจึงไม่มีการชนกันเพิ่มเติม และสามารถใช้งานฟังก์ชันเพิ่มเติมได้ สำหรับ Cliff Sensors พวกเขาจะอ่านความสว่างของพื้นที่โดยรอบ หากค่ามากกว่า 2800 เราพิจารณาแล้วว่าหุ่นยนต์จะอยู่บนพื้นดินที่มั่นคงและปลอดภัย แต่ถ้าค่าน้อยกว่า 800 Cliff Sensors จะตรวจจับหน้าผาโดยหยุดทันทีเพื่อไม่ให้ตก ค่าใด ๆ ระหว่างนั้นถูกกำหนดให้เป็นตัวแทนของน้ำและจะทำให้หุ่นยนต์หยุดการกระทำของมัน ด้วยการใช้เซ็นเซอร์ข้างต้น ความเร็วของหุ่นยนต์จะเปลี่ยนไป ทำให้เราสามารถระบุได้ดีขึ้นว่ามีอันตรายใดๆ หรือไม่

ด้านล่างเป็นรหัส (จาก MATLAB R2018b)

%% การเริ่มต้น

dlgPrompts = {'หมายเลข Roomba'};

dlgTitle = 'เลือก Roomba ของคุณ';

dlgDefaults = {''};

opts. Resize = 'เปิด';

dlgout = inputdlg(dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % สร้างหน้าต่างที่แจ้งให้ผู้ใช้ป้อนหมายเลข roomba

n=str2double(dlgout{1});

r=roomba(n); % เริ่มต้น Roomba ที่ระบุโดยผู้ใช้ %% การกำหนดความเร็วจาก Light Bump Sensors ในขณะที่ true s=r.getLightBumpers; % รับเซ็นเซอร์ตรวจจับแสง

lumpout_1=extractfield(s, 'left'); % ใช้ค่าตัวเลขของเซ็นเซอร์และทำให้ใช้งานได้มากขึ้น lumpout_2=extractfield(s, 'leftFront');

lbumpout_3=extractfield(s, 'leftCenter');

lbumpout_4=extractfield(s, 'rightCenter');

lumpout_5=extractfield(s, 'ด้านหน้าขวา');

lumpout_6=extractfield(s, 'ขวา');

lbout=[lumpout_1, lbumpout_2, lumpout_3, lumpout_4, lbumpout_5, lbumpout_6] % แปลงค่าเป็นเมทริกซ์

sLbump=sort(lbout); % sorts matrix เป็นค่าต่ำสุดสามารถแยกได้

lowLbump=sLbump(1); speed=.05+(lowLbump)*.005% ใช้ค่าต่ำสุดซึ่งแสดงถึงสิ่งกีดขวางอย่างใกล้ชิดเพื่อกำหนดความเร็ว ความเร็วสูงขึ้นเมื่อไม่มีอะไรตรวจพบ

r.setDriveVelocity (ความเร็ว, ความเร็ว)

จบ

% กันชนทางกายภาพ

b=r.getBumpers; %ผลลัพธ์จริงเท็จ

bsen_1=extractfield(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=sum(บุ๋ม)

ถ้า tbump>0 r.setDriveVelocity(0, 0)

จบ

% คลิฟเซนเซอร์

c=r.getCliffSensors %% 2800 ปลอดภัย อย่างอื่นน้ำ

csen_1=extractfield(c, 'ซ้าย')

csen_2=extractfield(c, 'ถูกต้อง')

csen_3=extractfield(c, 'leftFront')

csen_4=extractfield(c, 'ด้านหน้าขวา')

หน้าผา=[csen_1, csen_2, csen_3, csen_4]

ordcliff=sort(หน้าผา)

ถ้า ordcliff(1) < 2750

r.setDriveVelocity(0, 0)

ถ้าหน้าผา<800

disp 'หน้าผา'

อื่น

กระจาย 'น้ำ'

จบ

ร.เทิร์นแองเกิล(45)

จบ

ขั้นตอนที่ 2: รับข้อมูล

หลังจากที่เซ็นเซอร์ตรวจจับการกระแทกทางกายภาพถูกสะดุด หุ่นยนต์จะติดตั้ง Raspberry Pi บนบอร์ดเพื่อถ่ายภาพสิ่งกีดขวาง หลังจากถ่ายภาพโดยใช้การจดจำข้อความหากมีข้อความในภาพ หุ่นยนต์จะกำหนดว่าสิ่งกีดขวางคืออะไรและสิ่งกีดขวางพูดว่าอย่างไร

img = r.getImage; imshow(img);

imwrite(img, 'imgfromcamera.jpg')

รูปภาพ = imread('imgfromcamera.jpg')

ocrResults = ocr (ภาพถ่าย)

ได้รับการยอมรับText = ocrResults. Text;

รูป;

ข้อความ imshow (ภาพถ่าย) (220, 0, จดจำข้อความ, 'BackgroundColor', [1 1 1]);

ขั้นตอนที่ 3: เสร็จสิ้นภารกิจ

เมื่อหุ่นยนต์กำหนดว่าสิ่งกีดขวางคือ HOME มันจะทำภารกิจให้สำเร็จและอยู่บ้าน หลังจากเสร็จสิ้นภารกิจ หุ่นยนต์จะส่งอีเมลแจ้งเตือนว่าได้กลับบ้านแล้ว และจะส่งภาพที่ถ่ายไปตลอดการเดินทาง

% การส่งอีเมล

setpref('อินเทอร์เน็ต', 'SMTP_Server', 'smtp.gmail.com');

setpref('อินเทอร์เน็ต', 'อีเมล', '[email protected]'); % บัญชีเมลที่จะส่งจาก setpref('Internet', 'SMTP_Username', 'Enter sender email'); % ชื่อผู้ใช้ผู้ส่ง setpref ('อินเทอร์เน็ต', 'SMTP_Password', 'ป้อนรหัสผ่านผู้ส่ง'); % รหัสผ่านผู้ส่ง

อุปกรณ์ประกอบฉาก = java.lang. System.getProperties; props.setProperty('mail.smtp.auth', 'true'); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty('mail.smtp.socketFactory.port', '465');

sendmail('ป้อนอีเมลที่ได้รับ', 'Roomba', 'Roomba กลับบ้านแล้ว!!', 'imgfromcamera.jpg') % บัญชีอีเมลที่จะส่งไปที่

หุ่นยนต์เสร็จแล้ว

ขั้นตอนที่ 4: บทสรุป

บทสรุป
บทสรุป

โปรแกรม MATLAB ที่รวมอยู่นั้นแยกออกจากสคริปต์ทั้งหมดที่ใช้กับหุ่นยนต์ ในฉบับร่างสุดท้าย ตรวจสอบให้แน่ใจว่าได้ใส่โค้ดทั้งหมด ยกเว้นขั้นตอนการเริ่มต้น ลงในลูป while เพื่อให้แน่ใจว่าบัมเปอร์ทำงานอย่างต่อเนื่อง โปรแกรมนี้สามารถแก้ไขได้ตามความต้องการของผู้ใช้ การกำหนดค่าของ Robot ของเราจะแสดงขึ้น

*คำเตือน: อย่าลืมว่าจำเป็นต้องใช้กล่องเครื่องมือ roombaInstall เพื่อให้ MATLAB โต้ตอบกับ Robot และ Raspberry Pi บนบอร์ดได้

แนะนำ: