สารบัญ:

Roomba ผู้ช่วยนักบินอวกาศ: 4 ขั้นตอน
Roomba ผู้ช่วยนักบินอวกาศ: 4 ขั้นตอน

วีดีโอ: Roomba ผู้ช่วยนักบินอวกาศ: 4 ขั้นตอน

วีดีโอ: Roomba ผู้ช่วยนักบินอวกาศ: 4 ขั้นตอน
วีดีโอ: RI Seminar: Aakash Sinha CEO & Founder of Omnipresent Robot Technologies 2024, กรกฎาคม
Anonim
Roomba ผู้ช่วยนักบินอวกาศ
Roomba ผู้ช่วยนักบินอวกาศ

โปรเจ็กต์นี้สร้างขึ้นโดยใช้ Raspberry Pi 3 บนบอร์ด iRobot Create Version 2 MATLAB ใช้เพื่อตั้งโปรแกรมให้หุ่นยนต์ปฏิบัติตามคำแนะนำเฉพาะโดยใช้เซ็นเซอร์และกล้อง เซ็นเซอร์และกล้องใช้เพื่อทำงานเฉพาะที่จะติดตามนักบินอวกาศและช่วยให้เขา/เธอสามารถสื่อสารกับฐานบ้านของตนได้หากมีสิ่งผิดปกติเกิดขึ้น

ขั้นตอนที่ 1: อะไหล่ที่จำเป็น

อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น
อะไหล่ที่จำเป็น

1. iRobot สร้างเวอร์ชัน 2

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

2. Raspberry Pi 3

Raspberry Pi เป็นโปรแกรมที่ใช้สำหรับโครงการนี้ รหัสนี้ออกแบบมาสำหรับ Pi และรุ่นของ Pi ที่แนบมาคือ 3 (รุ่น B) บอร์ดที่ตั้งโปรแกรมได้อื่นๆ เช่น Arduino นั้นใช้งานได้ อย่างไรก็ตาม Arduino และบอร์ดอื่นๆ ส่วนใหญ่จะต้องใช้การเข้ารหัสที่แตกต่างจากที่อธิบายไว้ในขั้นตอนอื่น

3. โมดูลกล้อง Raspberry Pi

การเชื่อมต่อภายนอกเพียงอย่างเดียวกับ Raspberry Pi ที่จำเป็นสำหรับโครงการนี้คือโมดูลกล้อง โมดูลกล้องเป็นส่วนสำคัญของโปรเจ็กต์นี้ เนื่องจาก roomba จะทำงานตามที่เห็นในกล้องเท่านั้น

4. MATLAB 2018a

เวอร์ชันล่าสุดที่สองของ MATLAB คือ 2018a ใช้สำหรับการเข้ารหัสที่เกี่ยวข้องกับการตั้งค่านี้ เป็นไปได้มากว่า MATLAB เวอร์ชันอื่นๆ จะใช้งานได้เนื่องจากโปรแกรม roomba มีมาระยะหนึ่งแล้ว

ขั้นตอนที่ 2: การกำหนดค่าไฟล์และกล้อง

ไฟล์และการกำหนดค่ากล้อง
ไฟล์และการกำหนดค่ากล้อง

1. Raspberry Pi และการเชื่อมต่อกล้องกับ roomba

  • Pi สามารถเชื่อมต่อกับ iRobot ได้โดยตรงด้วย micro USB นั่นคือทั้งหมดที่จะต้องพร้อมใช้งาน อย่างไรก็ตาม ขอแนะนำว่าควรวางไว้บน roomba อย่างปลอดภัย เช่น แสดงในรูปภาพตลอดการนำเสนอ
  • กล้องมีการเชื่อมต่อโดยตรงกับ Raspberry Pi และขอแนะนำอย่างยิ่งให้ซื้อหรือผลิตบางอย่างเพื่อถือกล้องโดยตรง ไม่มีจุดสำคัญสำหรับกล้องหากไม่สามารถถือไว้เพื่อแสดงสิ่งที่ roomba มองเห็นได้

2. ไฟล์

  • หลังจากตั้งค่าและเชื่อมต่อทุกอย่างแล้ว ตรวจสอบให้แน่ใจว่าหุ่นยนต์ถูกรีเซ็ตและพร้อมที่จะไปโดยกดปุ่ม "Spot" และ "Dock" ค้างไว้ 10 วินาทีพร้อมกัน
  • นี่คือจุดที่จำเป็นต้องใช้ MATLAB ก่อน ไฟล์สำหรับ roomba ต้องได้รับการติดตั้งก่อน และสิ่งที่จำเป็นสำหรับไฟล์เหล่านี้คือการเรียกใช้คือรหัสที่ให้ไว้ในลิงค์นี้:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

ขั้นตอนที่ 3: การทดสอบ Roomba เบื้องต้น

มีการตรวจสอบเบื้องต้นมากมายที่ต้องทำกับ roomba เพื่อให้แน่ใจว่าทำงานเป็นปกติ

1. ตรวจสอบว่าคุณเชื่อมต่อกับเครือข่าย WiFi เดียวกันกับ roomba หากไม่มีสิ่งนี้ คุณจะไม่มีวันเชื่อมต่อผ่าน MATLAB

2. ค้นหาว่า roomba ของคุณถูกกำหนดให้หมายเลขใด เพื่อให้คุณสามารถเชื่อมต่อกับ roomba ที่คุณเลือกโดยเฉพาะ ตัวอย่างเช่น ถ้าหมายเลข roomba ของคุณคือ 30 คุณจะต้องเชื่อมต่อโดยพิมพ์ roomba(30) ลงในหน้าต่างคำสั่งใน MATLAB

3. roomba สามารถควบคุมได้ผ่านโครงสร้างใน MATLAB ตัวอย่างเช่น หากคุณตั้งรหัสสำหรับ roomba(30) เป็นตัวแปร 'r' หุ่นยนต์สามารถเคลื่อนไปข้างหน้าด้วยคำสั่ง r.moveDistance(0.2, 0.1)

4. มีคำสั่งต่างๆ มากมายที่สามารถสื่อสารกับ roomba ได้ และสามารถดูคำสั่งเหล่านี้ได้โดยพิมพ์ 'doc roomba' ลงในหน้าต่างคำสั่ง

5. เซ็นเซอร์สำหรับการอ่านค่าแสง การชน และหน้าผาทั้งหมดสามารถอ่านได้โดยใช้คำสั่งที่เห็นใน 'doc roomba' แต่วิธีที่จะมีเมนูที่สม่ำเสมอและเรียบร้อยเพื่อดูข้อมูลเซ็นเซอร์ สามารถดูได้โดยใช้ 'r.testSensors '.

6. หลังจากทดสอบทั้งหมดนี้แล้ว สามารถใช้ซอฟต์แวร์รวบรวมภาพของหุ่นยนต์เพื่ออ่านและดูภาพที่ถ่ายได้ รหัสพื้นฐานสำหรับสิ่งนี้คือ img = r.getImage และ imshow(img);.

7. ค่า RGB ของรูปภาพสามารถพบได้ด้วยรหัส red_mean = mean(mean(img(:,:, 1)));

green_mean = ค่าเฉลี่ย(หมายถึง(img(:,:, 2))); และ blue_mean=mean(mean(img(:,:, 3)));.

ขั้นตอนที่ 4: ตัวอย่างโค้ด MATLAB

ตัวอย่างรหัส MATLAB
ตัวอย่างรหัส MATLAB

ณ จุดนี้ คุณพร้อมที่จะใช้เซ็นเซอร์และซอฟต์แวร์ถ่ายภาพเพื่อสร้างการหมุนของคุณเองบน Mars Rover ต้นแบบที่ช่วยเหลือมนุษย์ ตัวอย่างของเราคือการติดตามนักบินอวกาศโดยการติดตามสีขาวและเคลื่อนเข้าหามัน หุ่นยนต์จะส่งเสียงบี๊บหากเซ็นเซอร์กำลังอ่านค่าสูงเพื่อให้นักบินอวกาศสามารถรีเซ็ตหุ่นยนต์ได้หากติดอยู่หรือไปหยิบขึ้นมาและรีเซ็ตหากติดอยู่บนหน้าผา อย่างไรก็ตาม จะอ่านข้อผิดพลาดเหล่านี้ตราบเท่าที่มองเห็นเป็นสีขาวเท่านั้น หุ่นยนต์จะเข้าสู่โหมดข้อผิดพลาดโดยที่มองไม่เห็นสีขาว มันถูกตั้งโปรแกรมให้ส่งอีเมลสองประเภทที่แตกต่างกันกลับไปที่ฐานหลักขึ้นอยู่กับสิ่งที่เห็น ถ้ามันเห็นสีผิวของนักบินอวกาศ แสดงว่าไม่ดี ดังนั้นมันจะเตือนฐานที่บ้านถ้านักบินอวกาศมีผิวที่แสดงว่าชุดทำงานผิดปกติ อีกข้อความหนึ่งเตรียมไว้หากนักบินอวกาศหายตัวไปจากสายตา หากไม่มีสีขาวหรือสีผิวปรากฏสำหรับกล้อง หุ่นยนต์จะหมุนไปรอบๆ และส่งอีเมลอื่น แต่ต่างกัน ภาพที่ roomba มองไม่เห็นนักบินอวกาศจะถูกส่งไปพร้อมกับข้อความในอีเมล รหัสสำหรับโครงการของเราแสดงอยู่ด้านล่าง:

สำหรับ i=1:.1:3 img=r.getImage; รูปภาพ (img) red_mean = ค่าเฉลี่ย (ค่าเฉลี่ย (img(:,:, 1))); green_mean = ค่าเฉลี่ย(หมายถึง(img(:,:, 2))); blue_mean = ค่าเฉลี่ย(หมายถึง(img(:,:, 3))); ถ้า red_mean > 110 && red_mean 110 && blue_mean 110 && green_mean0 || bump.left>0 || bump.front>0 r.beep() r.beep() r.beep() r.stop elseif Cliff.left <10 || Cliff.leftด้านหน้า<10 || Cliff.rightFront<10 || Cliff.right700 || light.leftด้านหน้า>700 || light.leftCenter>700 || light.rightCenter>700 || light.rightด้านหน้า>700 || light.right>700 r.beep() r.beep() r.beep() r.beep() r.beep() r.stop อื่นสำหรับ i=1:2 r.moveDistance(0.2, 0.1) r. setDriveVelocity(.3,.2) r.stop end end end if green_mean <35 && blue_mean<35 %skin color displays(ต้องปรับตามสีผิวของนักบินอวกาศ) r.beep(); r.beep(); r.beep(); เมล = '[email protected]'; %ส่งอีเมลที่แสดงชุดสูทปิดอยู่ psswd = 'ใช่'; โฮสต์ = 'smtp.gmail.com'; พอร์ต = '465'; emailto = '[email protected]'; m_subject = 'หัวเรื่อง'; m_text = 'ทดสอบ'; setpref('อินเทอร์เน็ต', 'อีเมล', อีเมล); setpref('อินเทอร์เน็ต', 'SMTP_Server', โฮสต์); setpref('อินเทอร์เน็ต', 'SMTP_Username', เมล); setpref('อินเทอร์เน็ต', 'SMTP_Password', psswd); อุปกรณ์ประกอบฉาก = 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(emailto, 'Help!', 'The astronauts uniform is off!', img); จบถ้า red_mean 135 || green_mean 135 || blue_mean 135 สำหรับ j = 1:2 % ถ้าหุ่นยนต์ไม่พบสีขาว r.turnAngle(360) mail = '[email protected]'; psswd = 'ใช่'; โฮสต์ = 'smtp.gmail.com'; พอร์ต = '465'; emailto = '[email protected]'; m_subject = 'หัวเรื่อง'; m_text = 'ทดสอบ'; setpref('อินเทอร์เน็ต', 'อีเมล', อีเมล); setpref('อินเทอร์เน็ต', 'SMTP_Server', โฮสต์); setpref('อินเทอร์เน็ต', 'SMTP_Username', เมล); setpref('อินเทอร์เน็ต', 'SMTP_Password', psswd); อุปกรณ์ประกอบฉาก = 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(emailto, 'Help!', 'The astronaut can be found!', img); ร.หยุด สิ้นสุด สิ้นสุด สิ้นสุด

เห็นได้ชัดว่ามันรกที่นี่ แต่มันควรจะขัดออกเมื่อคัดลอก รหัสผ่านและอีเมลสำหรับสิ่งนี้จะต้องถูกจัดเตรียมโดยผู้ที่ทำโปรเจ็กต์นี้อย่างชัดเจน

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

แนะนำ: