สารบัญ:
- ขั้นตอนที่ 1: วัสดุและวัสดุสิ้นเปลือง:
- ขั้นตอนที่ 2:
- ขั้นตอนที่ 3: รวบรวม "สวน" ของคุณ
- ขั้นตอนที่ 4: การเขียนโค้ด
- ขั้นตอนที่ 5: คัดลอกรหัส
วีดีโอ: ผู้ช่วยสวน Roomba Bot: 8 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
Kiara Myers, Ahmad Alghadeer และ Madison Tippet
วัตถุประสงค์:
คำแนะนำนี้จะสอนวิธีตั้งโปรแกรม Roomba Bot โดยใช้ MATLAB เพื่อนำทางผ่านสวน ตรวจหาผลไม้/ผักรูปทรงกลมที่สุกพอที่จะเลือกได้ตามขนาด หุ่นยนต์ตัวนี้ยังส่งอีเมลถึงคุณเพื่อเตือนคุณว่ามีผลไม้กี่ชนิดที่พร้อมจะเก็บและเส้นทางที่มันเดินทาง
คุณสมบัติ:
- ใช้เซ็นเซอร์วัดแสงเพื่อตรวจจับผนังและเลี้ยวเล็กน้อยเพื่อหลีกเลี่ยงการชนกับผนัง
- ใช้เซ็นเซอร์ตรวจจับการกระแทกเพื่อทำลายโปรแกรมเมื่อกระทบหินที่ปลายสวน
- ใช้การประมวลผลภาพเพื่อตรวจจับวงกลมในสวนแล้วกำหนดรัศมี
- ใช้เซ็นเซอร์หน้าผาเพื่อตรวจจับเทปสีที่บ่งบอกว่ามีผลไม้
ขั้นตอนที่ 1: วัสดุและวัสดุสิ้นเปลือง:
- แล็ปท็อปหนึ่งเครื่อง
- MATLAB 2017
- เครื่องดูดฝุ่น Roomba
- ราสเบอร์รี่ปี่
- บล็อกไม้
- กระดาษสีขาว
- กระดาษสีดำ
- เทปสี/แถบกระดาษสีบาง
- หินขนาดใหญ่
ขั้นตอนที่ 2:
ขั้นตอนที่ 3: รวบรวม "สวน" ของคุณ
- นำกระดาษสีดำของคุณแล้วตัดเป็นวงกลมขนาดต่างๆ
-
เทปวงกลมสีดำเหล่านี้ลงบนกระดาษสีขาวขนาดใหญ่
ความคมชัดนี้จะจำเป็นเมื่อตรวจพบผลไม้
-
ใช้ไม้ของคุณสร้างเส้นทางสวนเหมือนเขาวงกตเพื่อให้หุ่นยนต์ของคุณนำทาง
เราเลือกทางเดินรูปตัวยูตามภาพด้านบน
- ที่ส่วนท้ายของสวนของคุณ ให้เพิ่มหินหรือประตูหรือวัตถุอื่นเพื่อให้หุ่นยนต์ของคุณรู้ว่าเสร็จสิ้นแล้ว
-
ติดกระดาษสีขาวของคุณเป็นวงกลมบนผนังสวน
เราใช้ถังติดเทปเพราะผนังของเราสั้นเกินไปสำหรับกล้อง
- วางเทปสี/กระดาษสีบางๆ บนพื้นหน้าผลไม้
ขั้นตอนที่ 4: การเขียนโค้ด
การนำทางสวน
การใช้ Bump Sensors: ในการรันโปรแกรม เราวางโค้ดในคำสั่ง while ซึ่งจะวนซ้ำคำสั่ง if ต่างๆ จนกว่าโค้ดจะพัง หากมีการชนกันของบัมเปอร์ จะส่งผลให้ค่าของบัมเปอร์มีค่าเท่ากับ จริง (ซึ่งในบูลีนมีค่าเท่ากับ 1) คำสั่ง if ใช้เพื่อทำลายรหัสเมื่อค่าใดค่าหนึ่งเท่ากับ 1
การใช้ Cliff Sensors: ภายในคำสั่ง while เราใช้คำสั่ง if เพื่อบอก Roomba เมื่อมันมาถึงที่ตั้งของโรงงาน Roomba ตรวจจับเทปสีบนพื้นโดยตรวจสอบธรณีประตูสีแดงที่เซ็นเซอร์หน้าผาหยิบขึ้นมา หากเซ็นเซอร์หน้าผาด้านซ้ายหรือด้านขวาตรวจพบสีที่มีขีดจำกัดมากกว่าสีพื้น หุ่นยนต์จะหยุดทำงานเป็นเวลา 2 วินาที (โดยใช้คำสั่งหยุดชั่วคราว) ในช่วง 2 วินาทีนี้ Roomba จะถ่ายและแสดงภาพผลไม้ ใช้คำสั่ง imfindcircles ที่สร้างมา กำหนดช่วงสำหรับรัศมีของวงกลม จากนั้น Roomba ของคุณจะพบผลไม้ที่เรียกว่าคุณ
การใช้การประมวลผลภาพ: ภายในคำสั่ง if เรารวมคำสั่ง if อื่นที่ระบุว่า: หากรัศมีตรวจพบรัศมี 3 มากกว่าหรือเท่ากับข้อกำหนดขั้นต่ำของเราสำหรับผลสุก r1 (คุณตัดสินใจสิ่งนี้) จากนั้นนับและแสดง Roomba กี่ผลไม้พร้อมแล้วเลี้ยวไปต่อที่สวน ถ้าไม่ก็เลี้ยวต่อไปผ่านสวน หมายเหตุ: คุณอาจต้องปรับมุมที่คุณหมุนเพราะ Roomba ทุกตัวต่างกัน
การใช้กันชนแบบเบา: ในคำสั่ง if อื่น กันชนแบบเบาจะได้รับการวิเคราะห์เพื่อให้แน่ใจว่าไม่มีสิ่งใดที่เกินเกณฑ์ที่เรากำหนด หากกันชนไฟด้านซ้าย ขวา ตรงกลางด้านซ้าย ตรงกลางด้านขวา ด้านหน้าด้านซ้าย หรือด้านหน้าด้านขวาอยู่เหนือธรณีประตู Roomba จะหมุนเล็กน้อยในมุมที่เหมาะสมเพื่อหลีกเลี่ยงไม่ให้ชนกับผนัง ดังนั้นการท่องไปในเขาวงกต
โค้ดที่เหลือใช้เพื่อพล็อตเส้นทางของ Roomba แล้วส่งผลลัพธ์ไปยังอีเมลของคุณ
ขั้นตอนที่ 5: คัดลอกรหัส
% วัตถุประสงค์: ตามขนาด Roomba จะผ่านสวนและแยกแยะผัก/ผลไม้ที่พร้อมจะเก็บได้ % อินพุต: เซ็นเซอร์ Lightbump, เซ็นเซอร์ Cliff, เซ็นเซอร์ Bump, ภาพจากกล้อง % เอาต์พุต: เมื่อใดก็ตามที่เซ็นเซอร์แสงมากกว่าเกณฑ์ roomba จะหมุนและถ่ายภาพ เสียงบี๊บจะดังขึ้นหากรัศมี % ผัก/ผลไม้อยู่ระหว่างช่วงที่กำหนด รหัสจะแตกเมื่อ Roomba ชนกับ % วัตถุ ส่งอีเมลถึงนักบินอวกาศเกี่ยวกับจำนวนผลไม้ที่พร้อมจะเก็บ % และการทำแผนที่การเคลื่อนที่ของ Roomba % การใช้งาน: คำสั่ง if และ while, การพล็อตคำสั่ง, รหัสอีเมลจาก MATLAB
k=0
tic
timerVal=tic
ในขณะที่จริง
วี=.2; % ความเร็ว r.setDriveVelocity(v, v);%roomba ไปข้างหน้า L=r.getLightBumpers; LC=L.leftCenter; Rr=L.ขวา; Lf=L.ซ้าย; RC=L.rightCenter; LF=L.leftด้านหน้า; RF=L.หน้าขวา; ถาม= 75; % เกณฑ์ RTH=30; %สีแดงเกณฑ์สูง RTL=10; % เกณฑ์สีแดงต่ำ B=r.getBumpers S=r.getCliffSensors; r1=24; r3=10; PL1=1800; ถ้า S.leftFront > PL1 || S.rightFront > PL1 %ตรวจพบว่าสีบนพื้นอยู่เหนือเกณฑ์ r.stop pause(2) elapsedTime=toc(timerVal-2) tic timerVal=tic % หยุดชั่วคราวเป็นเวลา 2 วินาที img = r.getImage; % ถ่ายภาพ imshow (img)% แสดงภาพ [centers3, radii3] = imfindcircles (img, [30 50], 'ObjectPolarity', 'dark', 'Sensitivity', 0.9); ชั่วโมง = viscircles(centers3, radii3); % มองหาวงกลมของรัศมีที่มีช่วงที่ระบุในภาพถ้า radii3>=r1 T=1 k=k+1 dist1=0.2.*elapsedTime %หากตรวจพบรัศมีมากกว่าหรือเท่ากับ % ขั้นต่ำที่ต้องการของผลสุก จากนั้น Roomba จะนับผลนี้ elseif radii3<=r3 T=0 else T=0 dist2=0.2.*elapsedTime % ถ้าไม่เช่นนั้น จะไม่นับผลที่สิ้นสุด
if T==1 r.setLEDDigits(num2str(k)) r.beep r.beep r.beep r.turnAngle(78) %หากตรวจพบผลไม้ ให้แสดงตัวเลขบน Roomba % ส่งเสียง แล้วเลี้ยว elseif T==2 r.turnAngle(78) %หากตรวจพบผลไม้ 2 ผล ให้เลี้ยวต่อไปผ่าน %garden อื่น r.turnAngle(78) %หากตรวจไม่พบผลไม้ ให้เลี้ยวต่อไปผ่าน %garden end end if LC >Q r.stop r.turnAngle(-7) elseif RC >Q r.stop r.turnAngle(7) elseif LF >Q r.stop r.turnAngle(-7) elseif RF >Q r.stop r. turnAngle(7)elseif Lf > Q r.stop r.turnAngle(-7)elseif Rr >Q r.stop r.turnAngle(7) สิ้นสุด % หากค่าของกันชนไฟใด ๆ สูงกว่าเกณฑ์แล้ว % the Roomba จะเบี่ยงไปทางขวาเล็กน้อยเพื่อหลีกเลี่ยง %การชนกำแพง
ถ้า B.right ==1 || B.left==1 || B.front==1 dist3=0.2.*elapsedTime r.stop r.beep('F#*2, F#*2, c, F#*2, F#*2') r.turnAngle(360) %หากมี ชนแล้ว Roomba จะเล่นเสียง หมุนไปรอบๆ % และทำลายรหัส
จุดจบ
end scatter(0.533, 0, '^') ถือ scatter(0.533, dist1, '<') ถือ scatter(-dist2, dist1, 'v') ถือ scatter (-dist2, 0, 'd') saveas (gcf, 'การเคลื่อนไหว.png')
kmsg=num2str(k) mail= '[email protected]' password='Srsora123#' host='smtp.gmail.com' port='465'
setpref('อินเทอร์เน็ต', 'อีเมล', อีเมล); setpref ('อินเทอร์เน็ต', 'SMTP_Server', โฮสต์) props = java.lang. System.getProperties; props.setProperty('mail.smtp.user', เมล); props.setProperty('mail.smtp.host', โฮสต์); props.setProperty('mail.smtp.port', พอร์ต); props.setProperty('mail.smtp.starttls.enable', 'true'); props.setProperty('mail.smtp.debug', 'true'); props.setProperty('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', พอร์ต); props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'เท็จ'); sendmail(เมล 'สวัสดีนักบินอวกาศ! มีผลไม้มากมายในสวนนี้', kmsg, {'movement.png'})
แนะนำ:
เปลี่ยน Roomba ของคุณให้เป็น Mars Rover: 5 ขั้นตอน
เปลี่ยน Roomba ของคุณให้เป็น Mars Rover:
ถังขยะ BT Line Drawing Bot - My Bot: 13 ขั้นตอน (พร้อมรูปภาพ)
Trash Built BT Line Drawing Bot - My Bot: Hai เพื่อน ๆ หลังจากห่างหายไปนานประมาณ 6 เดือน ฉันมากับโปรเจ็กต์ใหม่ จนกว่าจะเสร็จสิ้น Cute Drawing Buddy V1 หุ่นยนต์ SCARA - Arduino ฉันวางแผนสำหรับบอทวาดรูปอีกตัวหนึ่ง เป้าหมายหลักคือการครอบคลุมพื้นที่ขนาดใหญ่สำหรับการวาดภาพ แขนหุ่นยนต์คงที่ดังนั้นค
Roomba Bot the Bulider: 5 ขั้นตอน (พร้อมรูปภาพ)
Roomba Bot the Bulider: Bot the Builder เป็น Roomba ที่มี "grabbers" ติดด้านหน้าจะสามารถเคลื่อนย้ายสิ่งของต่างๆ ได้ รหัสที่มีการตั้งค่าให้บันทึกการเคลื่อนไหวครั้งแรกด้วยกล่อง GUI ที่คุณสามารถควบคุมได้ด้วยการคลิกเมาส์ของคุณ หลังจาก
Roomba ควบคุมด้วย MATLAB: 5 ขั้นตอน
Roomba ที่ควบคุมโดย MATLAB: เป้าหมายของโครงการนี้คือการใช้ MATLAB เช่นเดียวกับหุ่นยนต์ที่ตั้งโปรแกรมได้ของ iRobot กลุ่มของเรารวมทักษะการเขียนโค้ดเพื่อสร้างสคริปต์ MATLAB ที่ใช้ฟังก์ชันมากมายของ iRobot รวมถึงเซ็นเซอร์หน้าผา เซ็นเซอร์กันชน
จาก Roomba สู่ Rover ในเวลาเพียง 5 ขั้นตอน!: 5 ขั้นตอน
จาก Roomba ถึง Rover ในเวลาเพียง 5 ขั้นตอน!: หุ่นยนต์ Roomba เป็นวิธีที่สนุกและง่ายในการจุ่มเท้าของคุณในโลกของหุ่นยนต์ ในคำแนะนำนี้ เราจะให้รายละเอียดเกี่ยวกับวิธีแปลง Roomba ธรรมดาให้เป็นรถแลนด์โรเวอร์ที่ควบคุมได้ ซึ่งจะวิเคราะห์สภาพแวดล้อมไปพร้อม ๆ กัน รายการชิ้นส่วน1.) MATLAB2.) Roomb