สารบัญ:

Roomba Parking Pal: 6 ขั้นตอน
Roomba Parking Pal: 6 ขั้นตอน

วีดีโอ: Roomba Parking Pal: 6 ขั้นตอน

วีดีโอ: Roomba Parking Pal: 6 ขั้นตอน
วีดีโอ: ตั้งด่านตำรวจตรวจของเถื่อน #1 | Contraband Police 2024, พฤศจิกายน
Anonim
Roomba ที่จอดรถ Pal
Roomba ที่จอดรถ Pal

โปรเจ็กต์นี้ใช้ iRobot Create programmable roomba, MATLAB r2018a และ MATLAB mobile ในการใช้สื่อทั้งสามนี้และความรู้ด้านการเข้ารหัสของเรา เราตั้งโปรแกรม iRobot Create เพื่อตีความสีและใช้เซ็นเซอร์ออนบอร์ดเพื่อทำงานให้เสร็จ โปรเจ็กต์นี้ขึ้นอยู่กับการสื่อสาร Raspberry Pi และ MATLAB เพื่อทำงานเหล่านี้

ขั้นตอนที่ 1: วัสดุ

วัสดุ
วัสดุ
วัสดุ
วัสดุ

1. iRobot สร้างหุ่นยนต์

2. MATLAB r2018a

3. ราสเบอร์รี่ปี่

4. โมดูลกล้อง

5. ขาตั้งกล้องกันสั่นพิมพ์ 3 มิติ

6. สมาร์ทโฟนที่ติดตั้ง MATLAB บนมือถือ

7. แล็ปท็อป/คอมพิวเตอร์ที่ติดตั้ง MATLAB

ขั้นตอนที่ 2: การเชื่อมต่อ

ขั้นตอนนี้เกี่ยวกับการเชื่อมต่อ Raspberry Pi กับหุ่นยนต์ การเชื่อมต่อหุ่นยนต์กับคอมพิวเตอร์ของคุณเป็นครั้งที่สอง และเชื่อมต่อสมาร์ทโฟนกับคอมพิวเตอร์

ส่วนที่ง่ายที่สุดของกระบวนการนี้คือการเชื่อมต่อ Raspberry Pi กับหุ่นยนต์ของคุณ เนื่องจาก Raspberry Pi ติดตั้งอยู่ที่ด้านบนของหุ่นยนต์ มีสายไฟจากหุ่นยนต์ที่คุณเพียงแค่เสียบเข้ากับด้านข้างของ Raspberry Pi

ขั้นตอนต่อไปคือการเชื่อมต่อหุ่นยนต์กับคอมพิวเตอร์ของคุณ เพื่อให้คุณสามารถเรียกใช้คำสั่งให้หุ่นยนต์ดำเนินการได้ สิ่งแรกที่คุณต้องทำคือเชื่อมต่อคอมพิวเตอร์ของคุณกับเครือข่ายไร้สายที่ roomba ของคุณสร้างขึ้น ในตอนนี้ ขอแนะนำให้คุณใช้ไอคอน Set Path ใน MATLAB เพื่อกำหนดเส้นทาง เพื่อให้คุณสามารถใช้ฟังก์ชันในกล่องเครื่องมือ Roomba จาก MATLAB ได้ ทุกครั้งที่คุณเริ่มต้นและสิ้นสุดการใช้งานกับหุ่นยนต์ คุณต้องทำการ "แสดงความเคารพด้วยสองนิ้ว" อย่างหนักเพื่อรีเซ็ตหุ่นยนต์ ซึ่งหมายความว่าคุณกดปุ่มท่าเรือและสปอตไลท์ค้างไว้สิบวินาทีจนกว่าไฟจะหรี่ลงเพื่อระบุว่าจะปล่อย คุณประสบความสำเร็จในการฮาร์ดรีเซ็ตนี้หากคุณได้ยินว่าหุ่นยนต์เล่นในระดับสั้น ถัดไป คุณต้องเชื่อมต่อกับ roomba โดยใช้บรรทัดรหัสเช่นนี้ "r=roomba(x)" โดยที่ 'x' คือหมายเลขที่กำหนดให้กับหุ่นยนต์ที่คุณมี

สุดท้าย คุณต้องดาวน์โหลด MATLAB mobile บนอุปกรณ์มือถือเครื่องใดก็ตามที่คุณจะใช้สำหรับโปรเจ็กต์นี้ และแอปพลิเคชันนี้สามารถใช้ได้ทั้งบนอุปกรณ์ Android และ Apple เมื่อติดตั้งแอปพลิเคชันแล้ว คุณจะต้องเข้าสู่ระบบโดยใช้ข้อมูลประจำตัวของคุณ จากนั้นคุณต้องเชื่อมต่ออุปกรณ์นี้กับคอมพิวเตอร์ของคุณโดยใช้แท็บ "เพิ่มเติม" -> จากนั้นคลิก "การตั้งค่า" -> จากนั้นคลิก "เพิ่มคอมพิวเตอร์" ซึ่งจะแสดงหน้าจอที่แสดงในภาพด้านบน หลังจากที่คุณเห็นสิ่งนี้ ขั้นตอนต่อไปที่คุณต้องดำเนินการคือเพียงแค่เสียบและสับข้อมูลที่ร้องขอ เมื่อคุณเชื่อมต่อสำเร็จ คุณจะสามารถเรียกใช้ฟังก์ชันที่คุณกำหนดบนคอมพิวเตอร์ของคุณบนโทรศัพท์เพื่อควบคุมหุ่นยนต์ของคุณ

ขั้นตอนที่ 3: การสร้างรหัส MATLAB อย่างมีเหตุผลเพื่อใช้เซ็นเซอร์

การสร้างรหัส MATLAB อย่างมีเหตุผลเพื่อใช้เซ็นเซอร์
การสร้างรหัส MATLAB อย่างมีเหตุผลเพื่อใช้เซ็นเซอร์

โค้ดจะสร้างได้ง่ายที่สุดเมื่อโค้ดส่วนใหญ่อยู่ภายใน while loop เพื่อให้ roomba สามารถอัปเดตค่าที่ถูกต้องได้อย่างต่อเนื่อง หากมีข้อผิดพลาด MATLAB จะแสดงข้อผิดพลาดและตำแหน่งที่ข้อผิดพลาดนั้นปรากฏในโค้ด ทำให้การแก้ไขปัญหาค่อนข้างง่าย

ได้รับการออกแบบใน r2018a MATLAB โค้ดนี้ใช้กล่องเครื่องมือมาตรฐาน กล่องเครื่องมือ iRobot Create และกล่องเครื่องมือเคลื่อนที่ MATLAB roomba ที่ใช้ในตัวอย่างนี้ถูกกำหนดให้เป็น 26 และจำเป็นต้องเรียกใช้ r=roomba(26) เพียงครั้งเดียวเพื่อสื่อสารกับ roomba อย่างสมบูรณ์

รหัส:

ฟังก์ชั่น parkassist(x)if x==1

r=roomba(26) % เชื่อมต่อกับ roomba

ในขณะที่จริง

r.setDriveVelocity(.05,.05) % กำหนดให้ roomba มีความเร็วในการขับขี่ช้าลง

bump=r.getBumpers % รับข้อมูลจากบัมพ์เซ็นเซอร์

Cliff=r.getCliffSensors % รับข้อมูลจากเซ็นเซอร์หน้าผา

light=r.getLightBumpers % รับข้อมูลจากเซ็นเซอร์ตรวจจับแสง

img=r.getImage;% อ่านกล้องจากหุ่นยนต์

red_mean = mean(mean(img(:,:, 1))) % อ่านจำนวนพิกเซลสีแดงเฉลี่ย

green_mean = mean(mean(img(:,:, 2))) % อ่านจำนวนพิกเซลสีเขียวเฉลี่ย

blue_mean = mean(mean(img(:,:, 3))) % อ่านจำนวนพิกเซลสีน้ำเงินเฉลี่ย

ถ้า bump.front == 1% อ่านว่าเซ็นเซอร์กันกระแทกด้านหน้า

r.stop %stops roomba

msgbox('Path Obscured!', 'Parking Assistant Message') % แสดงข้อความว่าเส้นทางถูกบดบัง ตัวแบ่ง % สิ้นสุดการวนซ้ำ

elseif green_mean >150

r.stop %stops roomba

cont = questdlg('Continue?', 'Path Completed') % แสดงกล่องคำถามที่ถามเพื่อดำเนินการต่อ

ถ้าต่อ == 'ใช่'

parkassist(1) % เริ่มรหัสใหม่

อื่น

จบ

แตก% สิ้นสุดลูป

elseif red_mean > 140

r.turnAngle(45) %เปลี่ยน roomba 45 องศา

r.timeStart % เริ่มตัวนับเวลา

ในขณะที่จริง

r.setDriveVelocity(.05,.05) %กำหนดความเร็วของห้อง

time=r.timeGet %กำหนดเวลาให้กับตัวแปร

bump=r.getBumpers % รับข้อมูลจากบัมพ์เซ็นเซอร์

Cliff=r.getCliffSensors % รับข้อมูลจากเซ็นเซอร์หน้าผา

light=r.getLightBumpers % รับข้อมูลจากเซ็นเซอร์ตรวจจับแสง

img=r.getImage;% อ่านกล้องจากหุ่นยนต์

red_mean = mean(mean(img(:,:, 1))) % อ่านจำนวนพิกเซลสีแดงเฉลี่ย

green_mean = mean(mean(img(:,:, 2))) % อ่านจำนวนพิกเซลสีเขียวเฉลี่ย

blue_mean = mean(mean(img(:,:, 3))) % อ่านจำนวนพิกเซลสีน้ำเงินเฉลี่ย

ถ้า blue_mean > 120

r.moveDistance(-0.01) %ย้าย roomba ไปข้างหลังตามระยะทางที่กำหนด songPlay(r, 'T400, C, D, E, F, G, A, B, C^', 'true') % เล่นสเกลดนตรีที่เพิ่มขึ้น

msgbox('Water Found!', 'Parking Assistant Message') % แสดงข้อความว่าพบน้ำแล้ว r.turnAngle(-80) %rotates roomba 80 องศา

แตก % สิ้นสุดการวนรอบปัจจุบัน

Elseif light.rightFront > 25 || light.leftFront > 25% อ่านเซ็นเซอร์การชนแสง

r.moveDistance(-0.01) % ย้าย roomba ไปข้างหลังตามระยะทางที่กำหนด

r.turnAngle(-35) % หมุน roomba 35 องศา

ทำลาย % สิ้นสุดลูปปัจจุบัน

Elseif Cliff.rightFront < 2500 && Cliff.leftFront < 2500 % อ่านทั้งเซ็นเซอร์หน้าผา

r.moveDistance(-0.1) % ย้าย roomba ไปข้างหลังในระยะทางที่กำหนด

r.turnAngle(-80) %rotates roomba 80 องศา

แตก % สิ้นสุดการวนรอบปัจจุบัน

elseif เวลา >= 3

r.stop %stops roomba

contin=questdlg('Station Free, Continue?', 'Parking Assistant Message') % ถามว่า roomba ควรดำเนินการต่อหรือไม่ถ้า contin == 'Yes'

r.turnAngle(-90) % หมุน roomba 90 องศา

parkassist(1) % เริ่มการทำงานใหม่

อื่น

r.stop % หยุด roomba

จบ

อื่น

จบ

จบ

Elseif Cliff.rightFront < 2500 && Cliff.leftFront < 2500 % อ่านทั้งเซ็นเซอร์หน้าผา

r.moveDistance(-0.1) %ย้าย roomba ไปข้างหลังตามระยะทางที่กำหนด

r.turnAngle(-90) %rotates roomba 90 องศา

Elseif Cliff.rightFront < 2500 % อ่านเซ็นเซอร์หน้าผาขวา

r.turnAngle(-5) % หมุน roomba เล็กน้อยไปในทิศทางตรงกันข้ามกับเซ็นเซอร์หน้าผา

Elseif Cliff.leftFront < 2500 % อ่านเซ็นเซอร์หน้าผาด้านซ้าย

r.turnAngle(5) % หมุน roomba เล็กน้อยไปในทิศทางตรงกันข้ามกับเซ็นเซอร์หน้าผา

อื่น

จบ

จบ

จบ

ขั้นตอนที่ 4: การทดสอบรหัสและหุ่นยนต์

การทดสอบรหัสและหุ่นยนต์
การทดสอบรหัสและหุ่นยนต์
การทดสอบรหัสและหุ่นยนต์
การทดสอบรหัสและหุ่นยนต์
การทดสอบรหัสและหุ่นยนต์
การทดสอบรหัสและหุ่นยนต์

หลังจากพัฒนาโค้ดแล้ว ขั้นตอนต่อไปคือการทดสอบโค้ดและหุ่นยนต์ เนื่องจากมีการปรับเปลี่ยนต่างๆ มากมายที่สามารถทำได้ในโค้ด เช่น มุมที่หุ่นยนต์หมุน ความเร็วที่เคลื่อนที่ และเกณฑ์สำหรับแต่ละสี วิธีที่ดีที่สุดในการหาค่าเหล่านี้สำหรับหุ่นยนต์ของคุณคือการทดสอบ พวกเขาและเปลี่ยนแปลงตามที่คุณไป ในแต่ละวันทำงานที่เรามี เราเปลี่ยนแปลงค่าเหล่านี้อย่างต่อเนื่องเนื่องจากค่าเหล่านี้บางส่วนอาศัยสภาพแวดล้อมที่หุ่นยนต์ของคุณทำงานอยู่ วิธีที่ดีที่สุดที่เราพบคือการวาง roomba บนเส้นทางที่คุณต้องการให้เดินตาม และให้มี อุปสรรคที่สูงพอที่จะทำให้กล้องไม่สามารถตรวจจับสีที่คุณไม่ต้องการได้ ขั้นตอนต่อไปคือปล่อยให้มันทำงานและแสดงสีที่คุณต้องการ เมื่อคุณต้องการให้มันทำงานนั้นให้เสร็จ เมื่อคุณเห็นปัญหา สิ่งที่ดีที่สุดที่ควรทำคือดันกันชนหน้าเข้าไป ทำให้มันหยุด ให้เปลี่ยนพารามิเตอร์ที่คุณมีปัญหา

ขั้นตอนที่ 5: การรับรู้ข้อผิดพลาด

เมื่อทุกโครงการเสร็จสิ้น ย่อมมีแหล่งที่มาของข้อผิดพลาดอยู่เสมอ สำหรับเรา เราพบข้อผิดพลาดกับข้อเท็จจริงง่ายๆ ที่ว่าหุ่นยนต์ไม่แม่นยำในมุมที่มันหมุน ดังนั้น ถ้าคุณบอกให้หมุน 45 องศา มันก็จะไม่มีทางเที่ยงตรง แหล่งที่มาของข้อผิดพลาดอีกประการหนึ่งสำหรับเราคือบางครั้งหุ่นยนต์ทำงานผิดปกติ และคุณได้ฮาร์ดรีเซ็ตก่อนที่จะทำงานอีกครั้ง สาเหตุหลักของข้อผิดพลาดประการสุดท้ายสำหรับเราคือโค้ดเดียวกันจะไม่มีผลเหมือนกันกับโรบ็อตต่างๆ ดังนั้นคุณอาจต้องอดทนกับมันและปรับเปลี่ยนตามนั้น

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

ตอนนี้คุณมีเครื่องมือทั้งหมดสำหรับใช้เล่นกับ roomba ของคุณแล้ว ซึ่งหมายความว่าคุณสามารถจัดการโค้ดได้ไม่ว่าจะอย่างไรก็ตาม คุณต้องการบรรลุเป้าหมายที่คุณต้องการ นี่ควรเป็นช่วงที่ดีที่สุดของวัน ดังนั้นขอให้สนุกและขับรถอย่างปลอดภัย!

แนะนำ: