สารบัญ:

Roomba พร้อม MATLAB: 4 ขั้นตอน (พร้อมรูปภาพ)
Roomba พร้อม MATLAB: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Roomba พร้อม MATLAB: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Roomba พร้อม MATLAB: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Getting Started with MATLAB Support Package for Raspberry Pi 2024, พฤศจิกายน
Anonim
Roomba พร้อม MATLAB
Roomba พร้อม MATLAB

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

ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ

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

1. iRobot Create เวอร์ชัน 2

- นี่คือหุ่นยนต์ที่ตั้งโปรแกรมได้ซึ่งดูเหมือน Roomba โปรดทราบว่าผลิตภัณฑ์นี้จาก iRobot ไม่ใช่เครื่องดูดฝุ่น มีไว้สำหรับการเขียนโปรแกรมแบบกำหนดเองโดยผู้ใช้

2. MATLAB 2017a

- เวอร์ชันเก่าส่วนใหญ่จะเข้ากันได้กับโค้ดที่เราใช้ด้านล่าง MATLAB จะระบุคำสั่งที่เข้ากันไม่ได้กับเวอร์ชันที่คุณมี และจะแนะนำคำสั่งที่เหมาะสมที่สุด

3. Raspberry Pi 3 รุ่น B เวอร์ชัน 1.2

- ตรวจสอบเพื่อดูว่า Raspberry Pi ใดเข้ากันได้กับ iRobot ของคุณ ดูลิงค์นี้สำหรับความช่วยเหลือเพิ่มเติม: https://www.irobotweb.com/~/media/MainSite/PDFs/A… คำแนะนำนี้ถือว่าคุณกำลังทำงานกับ Raspberry Pi ที่ตั้งโปรแกรมไว้ล่วงหน้า โปรดทราบว่าคุณจะต้องทำงานกับ Pi ที่ตั้งโปรแกรมไว้ล่วงหน้าเพื่อให้ขั้นตอนต่อไปนี้ทำงานได้ การใช้ Pi ที่ตั้งโปรแกรมไว้ล่วงหน้าจะช่วยให้คุณสามารถเขียนโค้ดทั้งหมดใน MATLAB เพียงอย่างเดียวได้

4. โมดูลกล้อง V2 (สำหรับ Raspberry Pi)

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

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

ขั้นตอนที่ 2: การกำหนดค่า

การกำหนดค่า
การกำหนดค่า
การกำหนดค่า
การกำหนดค่า

1. เชื่อมต่อ Raspberry Pi และโมดูลกล้อง (ฮาร์ดแวร์)

- ในการจ่ายไฟให้กับ Raspberry Pi คุณจะต้องเรียกใช้ micro USB ปลายตัวผู้กับพอร์ตพลังงานตัวเมียบนไมโครคอนโทรลเลอร์ ทางเลือก: อาจใช้ตัวควบคุมแรงดันไฟฟ้าเพื่อให้แน่ใจว่าแรงดันไฟฟ้าไม่เกิน 5V หลังจากเปิดเครื่อง Raspberry Pi คุณสามารถเชื่อมต่อกับหุ่นยนต์ของคุณโดยใช้ USB ปลายตัวผู้จากเมนบอร์ดไปยังพอร์ต USB A บนไมโครคอนโทรลเลอร์

- หลังจากเชื่อมต่อ Pi กับ Roomba แล้ว กล้องก็พร้อมที่จะติดตั้ง โมดูลกล้องจะเล็กกว่าที่คุณคาดไว้มาก โปรดทราบว่าเลนส์ถูกติดตั้งเข้ากับเซ็นเซอร์ และมีริบบิ้นสีขาวยื่นออกมาจากตัวกล้อง ห้ามแกะหรือฉีกริบบิ้น! นี่คือสายเคเบิลที่คุณต้องเชื่อมต่อกับ Raspberry Pi ขั้นแรก จับปลายผ้าหมึกและหาขั้วต่อสีเงินและสายสีน้ำเงิน เหล่านี้อยู่ฝั่งตรงข้าม ต่อไป ให้หาช่องระหว่างพอร์ตอีเธอร์เน็ตและพอร์ต HDMI บน Raspberry Pi ของคุณ สังเกตว่ามีตัวล็อคสีขาวขนาดเล็กปิดอยู่ ค่อยๆ ยกตัวล็อคขึ้น แต่อย่าถอดออกจากช่องเสียบเพราะจะล็อคและเสียหายถาวร เมื่อคุณยกตัวล็อคแล้ว ให้จับริบบิ้นแล้วหันขั้วต่อสีเงินไปที่พอร์ต HDMI ด้านสีน้ำเงินจะหันไปทางพอร์ตอีเธอร์เน็ต ค่อยๆ เลื่อนผ้าหมึกเข้าไปในช่องในขณะที่ยังไม่ได้ปลดล็อค คุณไม่จำเป็นต้องบังคับมันเข้าไปในสล็อต หลังจากใส่เข้าไปแล้ว ให้ดันตัวล็อคกลับลง หากกล้องของคุณยึดแน่นหนาดีแล้ว คุณจะสามารถ (เบา ๆ) ดึงริบบิ้นและรู้สึกตึงได้ ริบบิ้นไม่ควรหลวม หลังจากเชื่อมต่อกล้องของคุณกับ Pi แล้ว คุณอาจสังเกตเห็นว่ามันหลวมแค่ไหน นี่คือเหตุผลที่เราใช้เมาท์ที่พิมพ์ 3 มิติเพื่อให้มั่นคง คุณเลือกได้ว่าจะใช้วัสดุใดเพื่อให้กล้องอยู่นิ่งเพื่อการถ่ายภาพคุณภาพสูง

2. การติดตั้งไฟล์ที่เหมาะสมและการเชื่อมต่อ Roomba กับคอมพิวเตอร์ของคุณ หลังจากกำหนดค่าฮาร์ดแวร์ทั้งหมดแล้ว ตอนนี้คุณสามารถไปยังการติดตั้ง MATLAB พร้อมกับไฟล์ m ที่เกี่ยวข้องซึ่งช่วยให้คุณสื่อสารกับหุ่นยนต์ได้ ในการดำเนินการนี้ ให้เปิด MATLAB และสร้างโฟลเดอร์ใหม่เพื่อรวมไฟล์ที่เกี่ยวข้องทั้งหมดไว้ด้วยกัน ใช้สคริปต์นี้เพื่อติดตั้ง/อัปเดตไฟล์ที่ต้องการ:

- ไฟล์ทั้งหมดควรปรากฏในโฟลเดอร์ที่คุณสร้างขึ้น คลิกขวาในหน้าต่างโฟลเดอร์ปัจจุบันและเลือก 'เพิ่มไปยังเส้นทาง' เพื่อเพิ่มเส้นทางนั้นไปยังรายการไดเรกทอรีที่ MATLAB ค้นหาไฟล์ ตรวจสอบให้แน่ใจว่าไฟล์ทั้งหมดของคุณอยู่ในเส้นทางที่ถูกต้อง

3. เมื่อติดตั้งไฟล์แล้ว คุณสามารถเริ่มเชื่อมต่อกับหุ่นยนต์ของคุณได้ เริ่มต้นด้วยการเปิดหุ่นยนต์ของคุณ จากนั้นฮาร์ดรีเซ็ตโดยตรงหลังจากสตาร์ทเครื่อง (อย่าลืมฮาร์ดรีเซ็ตหุ่นยนต์ของคุณทุกครั้งก่อนและหลังการใช้งาน) ประการที่สอง เชื่อมต่อทั้งหุ่นยนต์และแล็ปท็อปของคุณกับเครือข่าย wifi เดียวกัน หลังจากนี้ เราจะพูดกับ Raspberry Pi ที่ตั้งโปรแกรมไว้ล่วงหน้าผ่าน MATLAB โดยเรียก Roomba โดยใช้ชื่อและฟังก์ชัน roomba ตัวอย่างเช่น ฉันจะเชื่อมต่อกับหุ่นยนต์ 28 โดยใช้บรรทัดต่อไปนี้: R = roomba(28)

- สังเกตว่าฉันกำหนดอ็อบเจ็กต์ให้กับตัวแปร R ได้อย่างไร ตอนนี้ฉันสามารถเข้าถึงฟังก์ชัน Roomba ที่เกี่ยวข้องได้จากไฟล์การติดตั้งโดยปฏิบัติกับตัวแปร R เหมือนกับโครงสร้าง

- R.turnAngle(90) หากทุกอย่างเป็นไปด้วยดี เสียงดนตรีควรเล่นเพื่อยืนยันการเชื่อมต่อ

ขั้นตอนที่ 3: ลอจิก MATLAB

เอกสาร PDF ที่ด้านล่างของขั้นตอนนี้คือแผนผังขั้นตอนตรรกะโดยละเอียดสำหรับกระบวนการเข้ารหัสของเราใน MATLAB เราเปิดใช้งานเซ็นเซอร์หน้าผา แสง และแสงเพื่อให้หุ่นยนต์สื่อสารกับเราเมื่อตรวจพบวัตถุในบริเวณใกล้เคียง ตัวอย่างเช่น เมื่อหุ่นยนต์เคลื่อนที่ไปข้างหน้า เซ็นเซอร์วัดแสงจะสแกนหาวัตถุในเส้นทางตามเวกเตอร์ที่มันเคลื่อนที่ เราเลือกเกณฑ์ระยะทางสำหรับหุ่นยนต์เพื่อที่ว่าเมื่อมันเข้าใกล้วัตถุ มันจะย้อนกลับแทนที่จะชนกับมัน หุ่นยนต์ของเรายังได้รับการกำหนดค่าด้วย Twitter ซึ่งเราระบุไว้ในขั้นตอนการเข้ารหัสของเรา (ดังแสดงด้านล่าง)

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

โค้ดสั่งให้ Roomba ดำเนินการตั้งค่าพื้นฐาน จากนั้นดำเนินการวนซ้ำอย่างต่อเนื่อง ในขั้นต้น แล็ปท็อปจะตั้งค่าลิงก์กับ Roomba โดยใช้คำสั่ง Roomba() นอกจากนี้ยังตั้งค่าการเชื่อมต่อ Twitter โดยใช้คำสั่ง webwrite() ใน MATLAB ลูปประกอบด้วยโฟลว์ตรรกะหลักห้าแบบขึ้นอยู่กับสภาพแวดล้อมโดยรอบ Roomba อันดับแรก Roomba จะตรวจสอบสิ่งกีดขวาง และปรับถอยหลังหากพบว่ามีสิ่งกีดขวาง การฝังอยู่ในลูปนั้นเป็นเส้นทางที่สองซึ่งจะเตือนผู้ใช้ว่า Roomba ถูกนำออกไปหรือไม่ ยูทิลิตี้ที่สำคัญใน Martian Warzone ที่รุนแรง หลังจากที่ Roomba ระบุตำแหน่งที่ปลอดภัยแล้ว จะพิจารณาอุปกรณ์เคลื่อนที่เพื่อกำหนดการเคลื่อนไหวครั้งต่อไป หากอุปกรณ์เคลื่อนที่เอียงไปข้างหน้า อุปกรณ์จะคำนวณความเร็วพื้นฐานตามความรุนแรงของการวัดการหมุน มากกว่าการปรับความเร็วของล้อแต่ละล้อเพื่อหมุนตามระดับของสนาม โทรศัพท์ยังสามารถย้าย Roomba กลับด้านได้อีกด้วย สถานะอุปกรณ์เคลื่อนที่ที่เป็นกลางจะเปิดประตูสองเส้นทางสุดท้าย Roomba ที่พักผ่อนอยู่จะค้นหาธงคนต่างด้าวและแจ้งเตือนผู้ใช้ตามนั้น

ด้านล่างนี้คือรหัสของเรา (กรอกใน MATLAB 2017a)

% อินพุต: ข้อมูลการวางแนวจากอุปกรณ์ที่เชื่อมต่อ wifi, กล้อง

%ข้อมูล ข้อมูลเซ็นเซอร์

%outputs: การเคลื่อนไหวถูกควบคุมโดยอุปกรณ์ที่เชื่อมต่อ wifi และการเคลื่อนไหว

% ได้รับการตรวจสอบความปลอดภัยโดยการอ่านข้อมูลเซ็นเซอร์ หากกล้องตรวจพบ

% ธงเอเลี่ยน จากนั้น Roomba จะตอบกลับด้วยการทวีตธงศัตรู

พบ % แล้ว

วัตถุประสงค์: อุปกรณ์ของเราอยู่โดยไม่มีจุดประสงค์ยกเว้นเพื่อปกป้องผู้ที่

% สร้างมันขึ้นมา มันทำหน้าที่ผู้สร้างและทำ

% ตรงตามที่บอก

การใช้งาน: โดยพื้นฐานแล้วโปรแกรมจะทำงานด้วยตัวเอง

ล้างทั้งหมด, ปิดทั้งหมด, clc

%การเริ่มต้นวัตถุและตัวแปร

r=roomba(28);

m=mobiledev;

% use response = เขียนเว็บ (ชื่อโฮสต์, ข้อมูล)

ชื่อโฮสต์ = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API='SGZCTNQXCWAHRCT5';

tweet='RoboCop กำลังดำเนินการ…รอคำสั่ง';

data = strcat('api_key=', API, '&status=', ทวีต);

reponse=webwrite(ชื่อโฮสต์ ข้อมูล);

% วนซ้ำอย่างต่อเนื่อง

ในขณะที่ 1==1

%โครงสร้างที่มีข้อมูลที่เกี่ยวข้อง

o=m.การวางแนว; %การวางแนวของอุปกรณ์มือถือ

แสง=r.getLightBumpers(); %ค่ากันชนเบา

a = r.getCliffSensors(); %ค่าเซ็นเซอร์คลิฟฟ์

ชน = r.getBumpers(); %เซนเซอร์กันชน

%ตรวจสอบกันชน

ถ้า bump.right==1 || Bump.left==1 ||bump.front==1

r.moveDistance(-.2,.2);

%ตรวจสอบเซ็นเซอร์แสง

Elseif light.left>60 || light.leftด้านหน้า>60 || light.leftCenter>60 || light.right>60 || light.rightFront>60 || light.rightCenter>60

r.moveDistance(-.2,.2);

%ตรวจสอบคลิฟเซนเซอร์

%สัญญาณกันขโมยและการแจ้งเตือน

elseif a.left<300 && a.right<300 && a.leftFront<300 && a.rightFront<300

r.stop();

r.beep();

tweet='RoboCop ถูกยกขึ้นแล้ว!'

data = strcat('api_key=', API, '&status=', ทวีต);

reponse=webwrite(ชื่อโฮสต์ ข้อมูล);

%การดำเนินการหลีกเลี่ยงหน้าผาปกติ

elseif a.left<300 || ก.ขวา<300 || a.leftFront<300 || ก. หน้าขวา<300

r.moveDistance(-.2,.2);

%Roomba ผ่านการตรวจสอบแล้วและจะทำงานตามปกติ

%เริ่มต้นม้วนของอุปกรณ์วัดและกลายเป็นฐาน

%velocity ที่ใช้ในการคำนวณความเร็วล้อ

%การเคลื่อนที่ไปข้างหน้า

elseif o(3)>=0 && o(3)<=60

baseVel=(-.5/60)*(o(3)-60);

ถ้า o(2)>=-70 && o(2)<0

r.setDriveVelocity(baseVel+(.3/50)*abs(o(2)), baseVel-(.3/50)*abs(o(2)));

elseif o(2)=0

r.setDriveVelocity(baseVel-(.3/50)*abs(o(2)), baseVel+(.3/50)*abs(o(2)));

อย่างอื่น r.stop

จบ

%การเคลื่อนไหวย้อนกลับ

elseif o(3)>100 && o(3)<150

r.setDriveVelocity(-.2, -.2)

r.beep();

r.beep();

%resting roomba จะค้นหาธง Alien ที่ทำเครื่องหมายเป็นflourescent

%สีเขียว เศษกระดาษ

อื่น

ร.หยุด

img=r.getImage(); %ถ่ายรูป

เกณฑ์=graythresh(img(200:383,:, 2))+.1; %calc ระดับสีเขียว

ถ้าเกณฑ์>.42

tweet='ศัตรูถูกพบ!!'

data = strcat('api_key=', API, '&status=', ทวีต);

reponse=webwrite(ชื่อโฮสต์ ข้อมูล);

อื่น

ร.หยุด

จบ

จบ

จบ

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

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

แนะนำ: