สารบัญ:
- ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ
- ขั้นตอนที่ 2: ไฟล์ฐานข้อมูล Roomba
- ขั้นตอนที่ 3: การเชื่อมต่อกับ Roomba
- ขั้นตอนที่ 4: รหัส
- ขั้นตอนที่ 5: บทสรุป
วีดีโอ: Roomba ควบคุมด้วย MATLAB: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
เป้าหมายของโครงการนี้คือการใช้ MATLAB เช่นเดียวกับหุ่นยนต์ที่ตั้งโปรแกรมได้ของ iRobot กลุ่มของเรารวมทักษะการเขียนโค้ดของเราเข้าด้วยกันเพื่อสร้างสคริปต์ MATLAB ที่ใช้ฟังก์ชันมากมายของ iRobot รวมถึงเซ็นเซอร์หน้าผา เซ็นเซอร์กันชน เซ็นเซอร์วัดแสง และกล้อง เราใช้เซ็นเซอร์และการอ่านค่ากล้องเหล่านี้เป็นอินพุต ทำให้เราสร้างเอาต์พุตบางอย่างที่เราต้องการโดยใช้ฟังก์ชันโค้ดและลูปของ MATLAB เรายังใช้อุปกรณ์เคลื่อนที่ MATLAB และไจโรสโคปเพื่อเชื่อมต่อกับ iRobot และควบคุม
ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ
MATLAB 2018a
- MATLAB เวอร์ชัน 2018 เป็นเวอร์ชันที่ต้องการมากที่สุด ส่วนใหญ่เป็นเพราะใช้งานได้ดีที่สุดกับโค้ดที่เชื่อมต่อกับอุปกรณ์มือถือ อย่างไรก็ตาม โค้ดส่วนใหญ่ของเราสามารถตีความได้ในเวอร์ชันส่วนใหญ่ของ MATLAB
iRobot สร้างอุปกรณ์
- อุปกรณ์นี้เป็นอุปกรณ์ที่ผลิตขึ้นเป็นพิเศษซึ่งมีจุดประสงค์เพื่อการเขียนโปรแกรมและการเข้ารหัสเท่านั้น (ไม่ใช่สูญญากาศจริง)
Raspberry Pi (พร้อมกล้อง)
- เป็นบอร์ดคอมพิวเตอร์ราคาไม่แพงที่ทำงานเป็นสมองของ iRobot มันอาจจะเล็ก แต่มีความสามารถหลายอย่าง กล้องเป็นอุปกรณ์เสริมเพิ่มเติม นอกจากนี้ยังใช้ raspberry pi เพื่อรับฟังก์ชันและคำสั่งทั้งหมด กล้องที่แสดงด้านบนนี้ติดตั้งอยู่บนแท่นพิมพ์ 3 มิติ ซึ่งสร้างโดยแผนกความรู้พื้นฐานด้านวิศวกรรมของมหาวิทยาลัยเทนเนสซี
ขั้นตอนที่ 2: ไฟล์ฐานข้อมูล Roomba
มีไฟล์หลักที่คุณต้องการเพื่อใช้ฟังก์ชันและคำสั่งที่เหมาะสมสำหรับ roomba ของคุณ ไฟล์นี้เป็นที่ที่คุณเขียนโค้ดดึงฟังก์ชันต่างๆ เพื่อทำให้การใช้งาน roomba ของคุณสามารถจัดการได้มากขึ้น
สามารถดาวน์โหลดไฟล์ได้ที่ลิงค์นี้หรือไฟล์ที่ดาวน์โหลดได้ด้านล่าง
ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php
ขั้นตอนที่ 3: การเชื่อมต่อกับ Roomba
ขั้นแรก คุณต้องแน่ใจว่าหุ่นยนต์ของคุณเชื่อมต่อกับบอร์ด Raspberry Pi โดยใช้ปลั๊กไมโคร USB จากนั้นคุณต้องเชื่อมต่อคอมพิวเตอร์และหุ่นยนต์ของคุณกับ WiFi เดียวกันอย่างถูกต้อง เมื่อเสร็จสิ้น คุณสามารถเปิดหุ่นยนต์ของคุณและเชื่อมต่อกับหุ่นยนต์โดยใช้คำสั่งที่กำหนดในไฟล์ฐานข้อมูลหุ่นยนต์ (ฮาร์ดรีเซ็ตหุ่นยนต์ของคุณเสมอก่อนและหลังใช้งาน) ตัวอย่างเช่น เราใช้คำสั่ง "r.roomba(19)" เพื่อเชื่อมต่อกับหุ่นยนต์ของเรา โดยกำหนดตัวแปร r ให้กับอุปกรณ์ของเรา สิ่งนี้อ้างอิงกลับไปที่ไฟล์ฐานข้อมูล ซึ่งตั้งค่าตัวแปรของเราเป็นโครงสร้างที่เราสามารถอ้างอิงได้ในช่วงเวลาที่กำหนด
ขั้นตอนที่ 4: รหัส
เราได้แนบโค้ดฉบับเต็มไว้ด้านล่าง แต่นี่เป็นภาพรวมโดยย่อที่เน้นองค์ประกอบที่สำคัญในสคริปต์ของเรา เราใช้เซ็นเซอร์ทั้งหมด รวมทั้งกล้องเพื่อเพิ่มศักยภาพของหุ่นยนต์อย่างเต็มที่ เรายังรวมรหัสที่อนุญาตให้เราเชื่อมต่ออุปกรณ์มือถือกับหุ่นยนต์ของเรา และใช้เครื่องวัดการหมุนของหุ่นยนต์เพื่อควบคุมด้วยตนเอง
เราเริ่มต้นด้วยคำสั่งง่ายๆ "r.setDriveVelocity(.06)" ที่กำหนดความเร็วไปข้างหน้าของหุ่นยนต์เป็น.06 m/s นี่เป็นเพียงเพื่อให้หุ่นยนต์เคลื่อนที่ล่วงหน้า
จากนั้น สคริปต์หลักของเราเริ่มต้นด้วย a while loop ที่ดึงข้อมูลของโรบ็อตที่กำหนดโดยการสร้างโครงสร้างที่เราสามารถอ้างอิงและใช้ในคำสั่งแบบมีเงื่อนไขด้านล่าง ซึ่งช่วยให้เราสามารถบอกให้โรบ็อตดำเนินการคำสั่งบางอย่างตามข้อมูลโครงสร้าง หุ่นยนต์อ่านด้วยเซ็นเซอร์ เราตั้งค่าให้หุ่นยนต์อ่านเซ็นเซอร์หน้าผาและเดินตามเส้นทางสีดำ
ในขณะที่ % จริง ในขณะที่การวนซ้ำจะดำเนินต่อไปจนกว่าจะมีบางสิ่ง "เท็จ" เกิดขึ้น (ในกรณีนี้ มันจะดำเนินต่อไปอย่างไม่สิ้นสุด) data = r.getCliffSensors; data2 = r.getBumpers;% ดึงข้อมูลอย่างต่อเนื่องเกี่ยวกับค่าเซ็นเซอร์หน้าผาและกำหนดให้กับตัวแปร % img = r.getImage; % ถ่ายภาพจากกล้องที่ติดตั้ง % image(img); % แสดงภาพที่ถ่าย % red_mean = mean(mean(img(:,:, 1)));% ใช้ค่าเฉลี่ยของสีเขียวถ้า data.rightFront < 2000 r.turnAngle(-2); % เปลี่ยน Roomba ประมาณ.2 องศา CW เมื่อค่าสำหรับเซ็นเซอร์หน้าผาด้านขวาต่ำกว่า 2000 r.setDriveVelocity(.05); Elseif data.leftFront data.leftFront && 2000 > data.rightFront r.moveDistance(.1); % บอก Roomba ให้เดินหน้าต่อไปที่ประมาณ.2 m/s หากค่าทั้งสองจากเซ็นเซอร์ด้านหน้าขวาและด้านหน้าซ้ายต่ำกว่า 2000 % r.turnAngle(0); % บอกให้ Roomba ไม่หมุนหากเงื่อนไขข้างต้นเป็นจริง
elseif data2.right == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05); elseif data2.left == 1 r.moveDistance(-.2); r.turnAngle(5); r.setDriveVelocity(.05); elseif data2.front == 1 r.moveDistance(-.12); r.turnAngle(160); r.setDriveVelocity(.05);
หลังจากนี้ while loop เราจะเข้าสู่ while loop อื่นที่เรียกข้อมูลที่ได้รับผ่านกล้อง และเราใช้คำสั่ง if ภายใน while loop ที่จดจำรูปภาพโดยใช้โปรแกรมเฉพาะ (alexnet) และเมื่อระบุรูปภาพแล้ว ก็จะทริกเกอร์การควบคุมระยะไกลของอุปกรณ์มือถือทันที
anet = อเล็กซ์เน็ต; % กำหนด alexnet deep learning ให้กับตัวแปรในขณะที่จริง % Infinite ในขณะที่ loop img = r.getImage; img = imresize(img, [227, 227]); label = จำแนก (anet, img); if label == "กระดาษเช็ดมือ" || label == "ตู้เย็น" label = "น้ำ"; ภาพสุดท้าย (img); ชื่อเรื่อง(อักขระ(ฉลาก)); drawow;
วง while ที่ช่วยให้เราควบคุมอุปกรณ์ด้วยโทรศัพท์ของเราดึงข้อมูลนั้นจากไจโรสโคปของโทรศัพท์และเราเสียบมันเข้ากับเมทริกซ์ที่สตรีมข้อมูลกลับเข้าสู่ MATLAB บนคอมพิวเตอร์อย่างต่อเนื่อง เราใช้คำสั่ง if ที่อ่านข้อมูลของเมทริกซ์และให้เอาต์พุตที่ย้ายอุปกรณ์ตามค่าบางอย่างของไจโรสโคปของโทรศัพท์ สิ่งสำคัญคือต้องรู้ว่าเราใช้เซ็นเซอร์การวางแนวของอุปกรณ์มือถือ เมทริกซ์แบบหนึ่งต่อสามที่กล่าวถึงข้างต้นจัดหมวดหมู่ตามแต่ละองค์ประกอบของเซ็นเซอร์การวางแนวของโทรศัพท์ ซึ่งได้แก่ แอซิมัท ระยะพิทช์ และด้านข้าง คำสั่ง if สร้างเงื่อนไขที่ระบุเมื่อด้านข้างเกินค่า 50 หรือต่ำกว่า -50 จากนั้นหุ่นยนต์จะเคลื่อนที่ไปข้างหน้า (บวก 50) หรือถอยหลัง (ค่าลบ 50) และเช่นเดียวกันสำหรับค่าพิทช์ หากค่าพิทช์เกินค่า 25 ของค่าที่ต่ำกว่า -25 หุ่นยนต์จะหมุนเป็นมุม 1 องศา (บวก 25) หรือลบ 1 องศา (ค่าลบ 25)
ในขณะที่หยุดชั่วคราวจริง (.1) % หยุดชั่วคราว.5 วินาทีก่อนที่จะใช้แต่ละค่า Controller=iphone. Orientation; % กำหนดเมทริกซ์สำหรับค่าการวางแนวของ iPhone ให้กับตัวแปร Azimuthal=Controller(1); % กำหนดค่าแรกของเมทริกซ์ให้กับตัวแปร Pitch=Controller(2); % กำหนดค่าที่สองของเมทริกซ์ให้กับตัวแปร (เอียงไปข้างหน้าและข้างหลังเมื่อ iPhone ถูกถือด้านข้าง) Side=Controller(3); % กำหนดค่าที่สามของเมทริกซ์ให้กับตัวแปร (เอียงซ้ายและขวาเมื่อ iPhone ถูกถือด้านข้าง) % ทำให้เกิดเอาต์พุตตามการวางแนวของโทรศัพท์หาก Side > 130 || ด้าน 25 r.moveDistance(-.1) % ย้าย Roomba ไปข้างหลังประมาณ.1 เมตร ถ้า iPhone เอียงไปข้างหลังอย่างน้อย 25 องศา ถ้าด้าน 25 r.turnAngle(-1) % หมุน Roomba ประมาณ 1 องศา CCW หาก iPhone เอียงซ้ายอย่างน้อย 25 องศา มิฉะนั้น ถ้า Pitch < -25 r.turnAngle(1) % หมุน Roomba ประมาณ 1 องศา CW หาก iPhone เอียงปลายอย่างน้อย 25 องศา
นี่เป็นเพียงไฮไลท์ของส่วนสำคัญของโค้ดของเรา ซึ่งเราได้รวมไว้หากคุณต้องการคัดลอกและวางส่วนอย่างรวดเร็วเพื่อประโยชน์ของคุณ อย่างไรก็ตาม รหัสทั้งหมดของเราแนบมาด้านล่างหากจำเป็น
ขั้นตอนที่ 5: บทสรุป
รหัสที่เราเขียนนี้ได้รับการออกแบบมาโดยเฉพาะสำหรับหุ่นยนต์ของเราตลอดจนวิสัยทัศน์โดยรวมของโครงการ เป้าหมายของเราคือการใช้ทักษะการเขียนโค้ด MATLAB ทั้งหมดเพื่อสร้างสคริปต์การออกแบบที่ดีซึ่งใช้คุณลักษณะส่วนใหญ่ของหุ่นยนต์ การใช้ตัวควบคุมโทรศัพท์ไม่ได้ยากอย่างที่คิด และเราหวังว่าโค้ดของเราจะช่วยให้คุณเข้าใจแนวคิดเบื้องหลังการเขียนโค้ด iRobot ได้ดีขึ้น
แนะนำ:
ไฟนาฬิกาแสดงเมทริกซ์แถบ LED ควบคุมด้วย WiFi: 3 ขั้นตอน (พร้อมรูปภาพ)
ไฟนาฬิกาแสดงเมทริกซ์แถบ LED ควบคุมด้วย WiFi: แถบ LED ที่ตั้งโปรแกรมได้ เช่น ตาม WS2812 นั้นน่าสนใจ การใช้งานมีหลากหลายและคุณจะได้รับผลลัพธ์ที่น่าประทับใจอย่างรวดเร็ว และอย่างใดการสร้างนาฬิกาดูเหมือนจะเป็นอีกโดเมนหนึ่งที่ฉันคิดมาก เริ่มจากประสบการณ์ใน
รถ RC ควบคุมด้วย Bluetooth พร้อมการควบคุมความเร็วและการวัดระยะทาง: 8 ขั้นตอน
รถ RC ที่ควบคุมด้วยบลูทูธพร้อมการควบคุมความเร็วและการวัดระยะทาง: เมื่อเป็นเด็ก ฉันรู้สึกทึ่งกับรถ RC เสมอ ทุกวันนี้ คุณสามารถหาบทช่วยสอนมากมายในการสร้างรถ RC ที่ควบคุมด้วย Bluetooth ราคาถูกด้วยตัวคุณเองด้วยความช่วยเหลือของ Arduino ก้าวไปอีกขั้นและใช้ความรู้เชิงปฏิบัติเกี่ยวกับจลนศาสตร์ในการคำนวณ
Universal Remote โดยใช้ ESP8266 (ควบคุมด้วย WiFi): 6 ขั้นตอน (พร้อมรูปภาพ)
Universal Remote โดยใช้ ESP8266 (ควบคุมด้วย Wi-Fi): โครงการนี้จะเปลี่ยนรีโมทคอนโทรลแบบเดิมสำหรับเครื่องใช้ภายในบ้านทั้งหมดเช่น AC, TV, เครื่องเล่นดีวีดี, ระบบเพลง, เครื่องใช้ SMART !!! ทำให้ขยะจากระยะไกลเต็มไปหมด ทำให้เรากลายเป็นปริศนา!!! โครงการนี้จะช่วยเราให้รอดพ้นจาก
ดัดแปลง RGBW LED Strip Controller, ควบคุมด้วย PIR, ESP8285: 3 ขั้นตอน
Modified RGBW LED Strip Controller, PIR Controlled, ESP8285: เหนือโต๊ะทำงานที่บ้าน ฉันได้ติดตั้งแถบ LED RGBW แล้ว ตัวควบคุม WiFi LED RGBW ควรทำงานร่วมกับแอปอย่างแอป Magic Home อย่างไรก็ตาม ฉันมีชิป ESP8285 ซึ่งฉันแฟลชด้วยเฟิร์มแวร์ของตัวเอง ฉันเพิ่ม PIR โดยที่แถบ LED สลับ
LED ควบคุมด้วย Bluetooth Arduino: 3 ขั้นตอน
Arduino Bluetooth Controlled LED: คำแนะนำนี้จะสอนวิธีควบคุม LED โดยใช้ Bluetooth ผ่านแอปพลิเคชันบนอุปกรณ์ Android วัสดุที่จำเป็น: Arduino Uno Board, LED, อุปกรณ์ Android, แอปพลิเคชั่น Arduino Bluetooth, โมดูล Arduino Bluetooth