สารบัญ:

Mars Roomba: 6 ขั้นตอน
Mars Roomba: 6 ขั้นตอน

วีดีโอ: Mars Roomba: 6 ขั้นตอน

วีดีโอ: Mars Roomba: 6 ขั้นตอน
วีดีโอ: How to Set Up the Home Base | Roomba® | iRobot® 2024, พฤศจิกายน
Anonim
Mars Roomba
Mars Roomba

คำแนะนำนี้จะแนะนำคุณในทิศทางของการใช้งานบอทสูญญากาศ Roomba ที่ควบคุมด้วย Raspberry Pi ระบบปฏิบัติการที่เราจะใช้คือผ่าน MATLAB

ขั้นตอนที่ 1: วัสดุสิ้นเปลือง

สิ่งที่คุณจะต้องรวบรวมเพื่อดำเนินโครงการนี้:

  • หุ่นยนต์ดูดฝุ่น Create2 Roomba ของ iRobot
  • ราสเบอร์รี่ปี่
  • กล้อง Raspberry Pi
  • เวอร์ชันล่าสุดของ MATLAB
  • กล่องเครื่องมือติดตั้ง Roomba สำหรับ MATLAB
  • แอปพลิเคชัน MATLAB สำหรับอุปกรณ์มือถือ

ขั้นตอนที่ 2: คำชี้แจงปัญหา

คำชี้แจงปัญหา
คำชี้แจงปัญหา

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

ขั้นตอนที่ 3: รีโมทคอนโทรล Bluetooth

รีโมทคอนโทรล Bluetooth
รีโมทคอนโทรล Bluetooth

สไลด์นี้จะอธิบายโค้ดเพื่อควบคุมการเคลื่อนไหวของ Roomba โดยใช้ความสามารถบลูทูธของอุปกรณ์สมาร์ทโฟนของคุณ ในการเริ่มต้น ให้ดาวน์โหลดแอปพลิเคชัน MATLAB ไปยังสมาร์ทโฟนของคุณและลงชื่อเข้าใช้บัญชี Mathworks ของคุณ เมื่อเข้าสู่ระบบแล้ว ให้ไปที่ "เพิ่มเติม" "การตั้งค่า" และเชื่อมต่อกับคอมพิวเตอร์ของคุณโดยใช้ที่อยู่ IP เมื่อเชื่อมต่อแล้ว ให้กลับไปที่ "เพิ่มเติม" แล้วเลือก "เซ็นเซอร์" แตะที่เซ็นเซอร์ตัวที่สามบนแถบเครื่องมือด้านบนของหน้าจอ แล้วแตะเพื่อเริ่ม ตอนนี้สมาร์ทโฟนของคุณเป็นรีโมทคอนโทรลแล้ว!

รหัสมีดังนี้:

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

หยุดชั่วคราว(.5)

PhoneData = M.การวางแนว;

Azi = PhoneData (1);

ระดับเสียง = PhoneData (2);

ด้าน = PhoneData(3);

กระแทก = r.getBumpers;

ถ้าด้านข้าง>80 || ด้านข้าง<-80

ร.หยุด

r.beep('C, E, G, C^, G, E, C')

หยุดพัก

elseif ด้าน>20 && ด้าน<40

r.turnAngle(-5);

elseif ด้าน>40

r.turnAngle(-25);

elseif ไซด์-40

r.turnAngle(5);

ข้างelseif<-40

r.turnAngle(25);

จบ

ถ้า พิช >10 && พิตช์<35

r.moveDistance(.03)

elseif พิตช์>-35 && พิตช์<-10

r.moveDistance(-.03)

จบ

จบ

ขั้นตอนที่ 4: การรับรู้ผลกระทบ

การรับรู้ผลกระทบ
การรับรู้ผลกระทบ

ฟังก์ชันอื่นที่เรานำมาใช้คือการตรวจจับผลกระทบของ Roomba ในวัตถุ และแก้ไขเส้นทางปัจจุบัน ในการทำเช่นนี้ เราต้องใช้เงื่อนไขกับการอ่านค่าจากเซ็นเซอร์บัมเปอร์เพื่อตรวจสอบว่าวัตถุถูกกระแทกหรือไม่ หากหุ่นยนต์ชนกับวัตถุ หุ่นยนต์จะถอยกลับขึ้นไป.2 เมตร และหมุนในมุมที่กำหนดโดยที่กันชนถูกกระแทก เมื่อกดรายการแล้ว เมนูจะปรากฏขึ้นพร้อมคำว่า "oof"

รหัสแสดงอยู่ด้านล่าง:

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

กระแทก = r.getBumpers;

r.setDriveVelocity(.1)

ถ้า bumps.left == 1

msgbox('อ๊ะ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

r.turnAngle(-35)

r.setDriveVelocity(.2)

elseif bumps.front == 1

msgbox('อ๊ะ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

r.turnAngle(90)

r.setDriveVelocity(.2)

elseif bumps.right == 1

msgbox('อ๊ะ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

r.turnAngle(35)

r.setDriveVelocity(.2)

elseif bumps.leftWheelDrop ==1

msgbox('อ๊ะ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

r.turnAngle(-35)

r.setDriveVelocity(.2)

elseif bumps.rightWheelDrop ==1

msgbox('อ๊ะ!');

r.moveDistance(-0.2)

r.setTurnVelocity(.2)

r.turnAngle(35)

r.setDriveVelocity(.2)

จบ

จบ

ขั้นตอนที่ 5: การรับรู้ชีวิต

การรับรู้ชีวิต
การรับรู้ชีวิต

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

รหัสมีดังนี้:

เสื้อ = 10;

ผม = 0;

ในขณะที่ t == 10

img = r.getImage; อิมโชว์(img)

หยุดชั่วคราว(0.167)

ผม = ผม + 1;

red_mean = ค่าเฉลี่ย (หมายถึง (img(:,:, 1)));

blue_mean = ค่าเฉลี่ย(หมายถึง(img(:,:, 3)));

green_mean = ค่าเฉลี่ย(หมายถึง(img(:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; % ต้องการ val นี้ประมาณ 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

white_threshold = 124;

red_threshold = 115;

ขณะที่ nine_plus_ten == 21% สีเขียว - ชีวิต

ถ้า green_mean > green_threshold && blue_mean < blue_threshold && red_mean < red_threshold

r.moveDistance(-.1)

a = msgbox('พบแหล่งชีวิตที่เป็นไปได้ วางแผนตำแหน่ง');

หยุดชั่วคราว(2)

ลบ (ก)

[y2, Fs2] =audioread('z_speak2.wav');

เสียง (y2, Fs2)

หยุดชั่วคราว(2)

%plant = r.getImage; %imshow(โรงงาน);

%save('plant_img.mat', โรงงาน');

%แปลงตำแหน่งเป็นสีเขียว

ผม = 5;

หยุดพัก

อื่น

nine_plus_ten = 19;

จบ

จบ

nine_plus_ten = 21;

ขณะที่ nine_plus_ten == 21% สีน้ำเงิน - woder

ถ้า blue_mean > blue_threshold && green_mean < green_threshold && white_mean < white_threshold && red_mean < red_threshold

r.moveDistance(-.1)

a = msgbox('พบแหล่งน้ำ ระบุตำแหน่ง');

หยุดชั่วคราว(2)

ลบ (ก)

[y3, Fs3] =audioread('z_speak3.wav');

เสียง(y3, Fs3);

%woder = r.getImage; %imshow(วอเดอร์)

%save('water_img.mat', woder)

% แปลงตำแหน่งเป็นสีน้ำเงิน

ผม = 5;

หยุดพัก

อื่น

nine_plus_ten = 19;

จบ

จบ

nine_plus_ten = 21;

ขณะที่ nine_plus_ten == 21% สีขาว - มนุษย์ต่างดาว MonkaS

ถ้า white_mean > white_threshold && blue_mean < blue_threshold && green_mean < green_threshold

[y5, Fs5] =audioread('z_speak5.wav');

เสียง(y5, Fs5);

หยุดชั่วคราว(3)

r.setDriveVelocity(0,.5)

[ys, Fss] =audioread('z_scream.mp3');

เสียง (ys, Fss);

หยุดชั่วคราว(3)

ร.หยุด

% เอเลี่ยน = r.getImage; %imshow(เอเลี่ยน);

% บันทึก ('alien_img.mat', เอเลี่ยน);

ผม = 5;

หยุดพัก

อื่น

nine_plus_ten = 19;

จบ

จบ

ถ้าฉัน == 5

ก = 1; %เปลี่ยนมุม

เสื้อ = 9; %ยุติวงใหญ่

ผม = 0;

จบ

จบ

ขั้นตอนที่ 6: เรียกใช้เลย !

หลังจากเขียนโค้ดทั้งหมดแล้ว ให้รวมเป็นไฟล์เดียวและ voila! บอท Roomba ของคุณจะทำงานได้อย่างสมบูรณ์และทำงานตามที่โฆษณาไว้! อย่างไรก็ตาม ตัวควบคุม Bluetooth ควรอยู่ในไฟล์แยกต่างหากหรือแยกจากโค้ดที่เหลือด้วย %%

สนุกกับการใช้หุ่นยนต์ของคุณ!!

แนะนำ: