สารบัญ:
- ขั้นตอนที่ 1: อุปกรณ์
- ขั้นตอนที่ 2: ตั้งค่า MATLAB
- ขั้นตอนที่ 3: ฟังก์ชัน: การเคลื่อนไหว
- ขั้นตอนที่ 4: ฟังก์ชัน: การประมวลผลภาพ
- ขั้นตอนที่ 5: ฟังก์ชัน: การทำแผนที่
- ขั้นตอนที่ 6: การตีข่าว
- ขั้นตอนที่ 7: การทดสอบ
- ขั้นตอนที่ 8: สรุป
วีดีโอ: Roomba Scout Explorer: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ในฐานะที่เป็นโครงการหนึ่งของอเมริกาที่คาดการณ์ไว้อย่างสูงและมีการวิจัยอย่างหนัก โครงการสำรวจดาวอังคารได้กลายเป็นความสำเร็จของมนุษย์ในการผลิตระบบอัตโนมัติไฮเทคที่ก้าวหน้าอย่างต่อเนื่องเพื่อวัตถุประสงค์ในการตรวจสอบและตีความมวลดินและพื้นผิวของดาวเคราะห์สีแดงที่อยู่เบื้องหลังเท่านั้น โลก. ในฐานะที่เป็นส่วนหนึ่งของโครงการที่เป็นส่วนตัวมากขึ้นเพื่อเป็นการแสดงความเคารพต่อภารกิจของดาวอังคาร เป้าหมายของเราคือการสร้างหุ่นยนต์ Roomba ที่สามารถทำงานโดยอัตโนมัติในกรอบเวลาหนึ่งและตอบสนองต่อเกณฑ์บางอย่างในบริเวณใกล้เคียง
สำหรับความเป็นเอกลักษณ์ เรามุ่งเน้นที่การสร้างไดอะแกรมที่แสดงแต่ละเส้นทางที่หุ่นยนต์ใช้จากต้นกำเนิด นอกจากนี้ หุ่นยนต์จะสามารถนับจำนวนวัตถุในบริเวณใกล้เคียงในรูปแบบพาโนรามาได้
ขั้นตอนที่ 1: อุปกรณ์
-Roomba พร้อมกล้องติดตัว (รู้จักชื่อเฉพาะ)
-เชื่อมต่อเซิร์ฟเวอร์
-Windows 10 / Mac พร้อมการเชื่อมต่ออินเทอร์เน็ต
- แพลตฟอร์มที่สดใส
-พื้นมืด
- วัตถุที่หลงทางใด ๆ ที่มีการออกแบบสีเดียว
ขั้นตอนที่ 2: ตั้งค่า MATLAB
ในการสร้างงานและฟังก์ชันสำหรับ roomba คุณต้องมีรหัสและชุดเครื่องมือเฉพาะที่มีคำสั่ง roomba
เมื่อดาวน์โหลด MATLAB 2016a เป็นต้นไป ให้สร้างโฟลเดอร์เพื่อเก็บไฟล์โรบ็อตเหล่านี้และแทรกไฟล์ MATLAB ต่อไปนี้ลงในโฟลเดอร์และเรียกใช้เพื่อติดตั้งไฟล์ roomba ที่จำเป็นที่เหลืออยู่
หลังจากนั้น ให้คลิกขวาในหน้าต่างโฟลเดอร์ปัจจุบัน เลื่อนเมาส์ไปที่ "เพิ่มเส้นทาง" แล้วคลิก "โฟลเดอร์ปัจจุบัน" ตอนนี้ควรตั้งค่าเส้นทางเพื่อให้แต่ละไฟล์เหล่านี้ใช้เพื่อเปิดใช้งาน roomba
ตอนนี้ ใช้คำสั่งด้านล่างในหน้าต่างคำสั่งเพื่อตั้งค่า roomba:
r=roomba(#).
สัญลักษณ์ # คือ 'หมายเลข' ของ roomba ที่ระบุ อย่างไรก็ตาม หากคุณต้องการเพียงตัวจำลองของ roomba เพียงพิมพ์คำสั่งต่อไปนี้:
r=roomba(0).
แนะนำให้ใช้การจำลองเพื่อทดสอบรูปแบบการเคลื่อนไหว
หากคุณสงสัยว่า roomba สามารถปฏิบัติตามคำสั่งใดได้ ให้พิมพ์คำสั่งต่อไปนี้ในหน้าต่างคำสั่ง:
ด็อกเตอร์รูมบา
สำหรับรายละเอียดเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ต่อไปนี้:
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
ขั้นตอนที่ 3: ฟังก์ชัน: การเคลื่อนไหว
ในส่วนที่เกี่ยวกับการเคลื่อนไหว roomba ควรเคลื่อนที่โดยอัตโนมัติตามช่วงเวลาที่กำหนดไว้ในอินพุต เป้าหมายของการเคลื่อนไหวของหุ่นยนต์คือการตอบสนองอย่างเหมาะสมเมื่อเซ็นเซอร์ (กันชน กันชนเบา และเซ็นเซอร์หน้าผา) เปลี่ยนเมื่อมีอุปสรรคต่างๆ ส่วนนี้จะทำหน้าที่เป็นฐานสำหรับคำสั่งของ roomba ทั้งหมด เนื่องจากมีการเพิ่มคุณสมบัติเพิ่มเติมในโค้ดในภายหลัง จำเป็นต้องมีข้อกำหนดบางประการ:
- เพื่อลดความเสียหาย หุ่นยนต์ต้องลดความเร็วเป็นความเร็วที่ต่ำกว่า
-เมื่อเข้าใกล้หน้าผาหรือกำแพง หุ่นยนต์จะเคลื่อนที่ถอยหลังและเปลี่ยนมุมตามจุดกระทบ
-หลังจากขับรถมาสักพัก Roomba จะหยุดและถ่ายภาพบริเวณโดยรอบในที่สุด
โปรดทราบว่าค่าที่ใช้นั้นสัมพันธ์กับตัวจำลอง ค่าต่างๆ เช่น มุมเลี้ยว ความเร็วในการหมุน และค่าที่ตั้งไว้ล่วงหน้าของเซ็นเซอร์หุ่นยนต์ควรได้รับการแก้ไขเมื่อใช้หุ่นยนต์จริงเพื่อให้มั่นใจในความเสถียรและการตรวจสอบความผิดพลาดของอุปกรณ์
ขั้นตอนที่ 4: ฟังก์ชัน: การประมวลผลภาพ
ตามคำขอ เราได้รับมอบหมายให้แก้ไขข้อมูลของภาพ (หรือหลายภาพ) ที่ได้รับจากกล้องของหุ่นยนต์ ซึ่งเราตัดสินใจให้ roomba "นับ" จำนวนวัตถุที่เห็นในภาพ
เราปฏิบัติตามเทคนิคการให้ MATLAB วาดขอบเขตรอบๆ วัตถุสีดำที่ตัดกับพื้นหลังสีขาว อย่างไรก็ตาม ฟังก์ชันนี้มีแนวโน้มที่จะมีปัญหาในพื้นที่เปิดโล่งเนื่องจากรูปร่างและสีต่างๆ ที่กล้องรับรู้ ส่งผลให้มีการนับสูงผิดปกติ
โปรดทราบว่าฟังก์ชันนี้ไม่สามารถทำงานในเครื่องจำลองได้เนื่องจากไม่มีกล้องมาให้ หากพยายามจะเกิดข้อผิดพลาดโดยแจ้งว่าใช้ได้เฉพาะเมทริกซ์ (:,:, 3) เท่านั้น
ขั้นตอนที่ 5: ฟังก์ชัน: การทำแผนที่
คุณสมบัติเพิ่มเติมอย่างหนึ่งที่เราต้องการให้หุ่นยนต์มีคือการทำแผนที่ตำแหน่งของมันในขณะที่มันโต้ตอบกับสิ่งแวดล้อมโดยตรง ดังนั้นรหัสด้านล่างจึงพยายามเปิดแผนที่และตั้งค่าระบบพิกัดซึ่งมีรายละเอียดแต่ละตำแหน่งที่เซ็นเซอร์กันชนของหุ่นยนต์ถูกกด สิ่งนี้พิสูจน์แล้วว่าเป็นส่วนที่ยาวที่สุดในสามส่วนในการทดสอบทีละส่วน แต่มันพิสูจน์ได้ง่ายกว่ามากเมื่อนำไปใช้กับสคริปต์สุดท้าย
เพื่อเพิ่มขีดจำกัดความยาวของเวลาทำงานของฟังก์ชัน ขีดจำกัด n<20 บนลูป while ถูกใช้เพื่อการทดสอบ
พึงระลึกไว้เสมอว่า เนื่องด้วยความซับซ้อนของโค้ด จึงเกิดข้อผิดพลาดมากขึ้นเมื่อส่วนโค้ดทำงานเป็นเวลานาน จากการทดสอบครั้งก่อน พบว่ามีการกระแทก 10 ครั้งเป็นจำนวนคะแนนก่อนที่จะเกิดข้อผิดพลาดที่สำคัญ
ขั้นตอนที่ 6: การตีข่าว
เนื่องจากทั้งหมดนี้จะอยู่ในไฟล์เดียว เราจึงสร้างฟังก์ชันโดยใช้สองขั้นตอนก่อนหน้าเป็นฟังก์ชันย่อย ร่างสุดท้ายถูกสร้างขึ้นด้วยการปรับเปลี่ยนฟังก์ชัน redux ที่เรียกว่า "recon" ดังต่อไปนี้ เพื่อหลีกเลี่ยงความสับสนสำหรับ MATLAB สคริปต์ "ตัวนับ" และ "rombplot3" ถูกเปลี่ยนชื่อเป็นฟังก์ชันฝังตัว "CountR" และ "plotr" ตามลำดับ
ต้องมีการเปลี่ยนแปลงหลายอย่างในเวอร์ชันสุดท้ายเมื่อเทียบกับสคริปต์ก่อนหน้า:
-ต้นกำเนิดจะถูกทำเครื่องหมายด้วยวงกลมสีแดงเสมอ
- ทุกครั้งที่ Roomba หยุดจากกันชน ตำแหน่งจะถูกทำเครื่องหมายด้วยวงกลมสีดำ
- ทุกครั้งที่ roomba หยุดจากเซ็นเซอร์หน้าผา ตำแหน่งจะถูกทำเครื่องหมายด้วยวงกลมสีน้ำเงิน
-ทุกครั้งที่ roomba หยุดสำรวจพื้นที่ ตำแหน่งจะถูกทำเครื่องหมายด้วยวงกลมสีเขียว
- รูปภาพถูกแก้ไขเพื่อให้ส่วนบนถูกลบออกเนื่องจากการประทับเวลาที่อาจรบกวนผลลัพธ์
-เส้นขอบจะไม่ถูกนับเป็นวัตถุเนื่องจากมีจำนวนค่อนข้างสูง
- ตัวแปรหลายตัวมีการเปลี่ยนแปลง ดังนั้นเพื่อหลีกเลี่ยงความสับสน ให้ใช้เวอร์ชันด้านบนเพื่อการอ้างอิง
ขั้นตอนที่ 7: การทดสอบ
การทดสอบสำหรับแต่ละองค์ประกอบได้รับการพิสูจน์แล้วว่ามีการผสมกันในบางครั้ง ซึ่งเป็นสาเหตุที่จำเป็นต้องปรับเปลี่ยนค่าที่ตั้งไว้ล่วงหน้าบางค่า พื้นหลังเฉพาะเรื่องซึ่งเราต้องการทดสอบความสามารถของหุ่นยนต์ในพื้นที่ปิดนั้นประกอบด้วยกระดานไวท์บอร์ดที่วางอยู่บนพื้นสีเข้มกว่ามาก คุณสามารถกระจายวัตถุรอบ ๆ พื้นที่ได้ ทำให้พวกมันทำหน้าที่เป็นวัตถุที่จะชนหรือวัตถุที่อยู่ห่างไกลจากพื้นที่เคลื่อนที่ของหุ่นยนต์
หลังจากตั้งเวลาและความเร็วพื้นฐานที่ควบคุมแล้ว Roomba ได้แสดงพฤติกรรมการเคลื่อนไหวที่เพียงพอ หยุดและถอยห่างจาก "หน้าผา" แต่ละตัวหรือวัตถุที่พุ่งชน รวมทั้งชะลอความเร็วเมื่อตรวจพบบางสิ่งที่อยู่ใกล้ เมื่อถึงระยะการเดินทางสามเมตรที่ต้องการ หุ่นยนต์จะหยุดและประเมินพื้นที่ ถ่ายภาพแต่ละพื้นที่ 45 องศา และดำเนินการต่อหากมีเวลา อย่างไรก็ตาม ผลัดกันดูใหญ่กว่าที่ร้องขอ หมายความว่าข้อมูลพิกัดจะถูกบดบัง
ทุกครั้งที่มันหยุด จุดใหม่จะถูกวางไว้ในพื้นที่ใกล้เคียงของตำแหน่งบนระบบพิกัด อย่างไรก็ตาม มีข้อสังเกตว่าทิศทางเริ่มต้นที่ Roomba เริ่มทำงานมีบทบาทสำคัญในการออกแบบแผนที่ หากสามารถใช้คุณลักษณะเข็มทิศได้ ก็จะถูกนำมาใช้เป็นส่วนสำคัญของการออกแบบแผนที่
เวลาจริงที่ฟังก์ชันใช้ในการเรียกใช้อย่างเต็มที่จะสูงกว่าเวลาที่ร้องขอเสมอ ซึ่งทำให้สมเหตุสมผลเมื่อพิจารณาว่าไม่สามารถหยุดระหว่างการกู้คืนอย่างใดอย่างหนึ่งได้ น่าเสียดายที่การนับรูปภาพรุ่นนี้มีปัญหา โดยเฉพาะอย่างยิ่งในพื้นที่ที่ส่วนใหญ่เป็นสีเดียวหรือความสว่างต่างกัน เพราะมันพยายามแยกแยะระหว่างสองเฉดสี มันมักจะรับรู้วัตถุที่ไม่ต้องการ ดังนั้นจึงนับถึงจำนวนที่สูงอย่างไม่น่าเชื่อ
ขั้นตอนที่ 8: สรุป
แม้ว่างานนี้จะเป็นงานที่ท้าทายและสร้างสรรค์มากซึ่งนำมาซึ่งความสุขในการบรรเทาทุกข์ จากการสังเกตส่วนตัวของฉัน ฉันเห็นข้อผิดพลาดจำนวนมากที่อาจเป็นปัญหา ทั้งในโค้ดและพฤติกรรมของหุ่นยนต์
การจำกัดการใช้ข้อกำหนดของเวลาในลูป while จะทำให้ระยะเวลาทั้งหมดยาวนานกว่าที่ต้องการ กระบวนการของเทคนิคพาโนรามาและการประมวลผลภาพอาจใช้เวลานานกว่านั้นหากใช้คอมพิวเตอร์ที่ช้าหรือไม่ได้ใช้ล่วงหน้า นอกจากนี้ roomba ที่ใช้ในการนำเสนอของเรายังมีข้อผิดพลาดจำนวนมาก โดยเฉพาะอย่างยิ่งในการเคลื่อนไหว เมื่อเทียบกับเครื่องจำลอง น่าเสียดายที่หุ่นยนต์ที่ใช้มีแนวโน้มที่จะเอียงไปทางซ้ายเล็กน้อยขณะที่ขับตรงและเลี้ยวได้มากเกินที่ต้องการ ด้วยเหตุผลนี้และอื่นๆ อีกมากมาย ขอแนะนำเป็นอย่างยิ่งว่าเพื่อชดเชยข้อผิดพลาดเหล่านี้ จำเป็นต้องทำการเปลี่ยนแปลงมุมเลี้ยว
อย่างไรก็ตาม นี่เป็นโครงการที่ยาวแต่กระตุ้นสติปัญญา ซึ่งทำหน้าที่เป็นประสบการณ์การเรียนรู้ที่น่าสนใจสำหรับการใช้รหัสและคำสั่งเพื่อส่งผลโดยตรงต่อพฤติกรรมของหุ่นยนต์จริง
แนะนำ:
เปลี่ยน Roomba ของคุณให้เป็น Mars Rover: 5 ขั้นตอน
เปลี่ยน Roomba ของคุณให้เป็น Mars Rover:
Roomba Explorer: 4 ขั้นตอน
Roomba Explorer: ด้วยการใช้ MATLAB และ Create2 Robot ของ iRobot โครงการนี้จะสำรวจพื้นที่ต่างๆ ของตำแหน่งที่ไม่รู้จัก เราใช้เซ็นเซอร์บน Robot เพื่อช่วยในการเคลื่อนที่ในภูมิประเทศที่อันตราย โดยรับภาพถ่ายและฟีดวิดีโอจาก Raspberry Pi ที่
แป้นพิมพ์ลัดสำหรับ Internet Explorer!!: 4 ขั้นตอน
แป้นพิมพ์ลัดสำหรับ Internet Explorer!!: คำแนะนำนี้จะแสดงแป้นพิมพ์ลัดที่เป็นประโยชน์สำหรับ internet explorer โปรดสมัครรับข้อมูลจากช่องของฉันขอบคุณ
จาก Roomba สู่ Rover ในเวลาเพียง 5 ขั้นตอน!: 5 ขั้นตอน
จาก Roomba ถึง Rover ในเวลาเพียง 5 ขั้นตอน!: หุ่นยนต์ Roomba เป็นวิธีที่สนุกและง่ายในการจุ่มเท้าของคุณในโลกของหุ่นยนต์ ในคำแนะนำนี้ เราจะให้รายละเอียดเกี่ยวกับวิธีแปลง Roomba ธรรมดาให้เป็นรถแลนด์โรเวอร์ที่ควบคุมได้ ซึ่งจะวิเคราะห์สภาพแวดล้อมไปพร้อม ๆ กัน รายการชิ้นส่วน1.) MATLAB2.) Roomb
Bus Pirate 3EEPROM Explorer Board: 5 ขั้นตอน
Bus Pirate 3EEPROM Explorer Board: หากคุณมีหนึ่งใน Hack a Day's Bus Pirates คุณจะทำอย่างไรกับมัน เรียนรู้เกี่ยวกับ 1-wire, I2C และ SPI EEPROM ด้วยบอร์ดสำรวจ 3EEPROM (เราเรียกว่า THR-EE-PROM)EEPROM เป็นชิปหน่วยความจำประเภทหนึ่งที่จัดเก็บข้อมูลโดยไม่ต้องใช้พลังงานต่อเนื่อง