สารบัญ:

โครงการ Roomba MATLAB 5 ขั้นตอน
โครงการ Roomba MATLAB 5 ขั้นตอน

วีดีโอ: โครงการ Roomba MATLAB 5 ขั้นตอน

วีดีโอ: โครงการ Roomba MATLAB 5 ขั้นตอน
วีดีโอ: การจัดทำ Timeline โดยใช้ Matlab _EE6210610173_LE210_2020 2024, พฤศจิกายน
Anonim
โครงการ Roomba MATLAB
โครงการ Roomba MATLAB

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

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

คำแนะนำนี้มีไว้สำหรับคนอื่น ๆ ที่ต้องการสร้างรหัสประเภทเดียวกันสำหรับ roomba ของพวกเขา

ขั้นตอนที่ 1: ขั้นตอนที่ 1: วัสดุที่จำเป็น

ขั้นตอนที่ 1: วัสดุที่จำเป็น
ขั้นตอนที่ 1: วัสดุที่จำเป็น
ขั้นตอนที่ 1: วัสดุที่จำเป็น
ขั้นตอนที่ 1: วัสดุที่จำเป็น

คุณจะต้องการ:

  1. รูมบา
  2. MATLAB
  3. ไฟล์นี้เพื่อเรียกใช้ roomba
  4. พื้นผิวเรียบ
  5. พื้นผิวโต๊ะทำหน้าที่เป็น "หน้าผา"

ขั้นตอนที่ 2: ขั้นตอนที่ 2: การตั้งค่า/รับรหัสสำหรับ Roomba

ขั้นตอนที่ 2: ตั้งค่า/รับรหัสสำหรับ Roomba
ขั้นตอนที่ 2: ตั้งค่า/รับรหัสสำหรับ Roomba

หน้าจอของคุณจะมีลักษณะเช่นนี้เมื่อคุณป้อนไฟล์

ขั้นตอนที่ 3: ขั้นตอนที่ 3: การตั้งค่า Cliff Sensors/ไฟ LED

รหัสนี้จะบอก Roomba ของคุณว่าต้องเลี้ยวมุมไหน ตรวจสอบข้อมูลแบตเตอรี่ บอก Roomba ของคุณว่าจะไปเร็วแค่ไหน และตรวจสอบบุคคลผ่านกล้องของ Roomba นอกจากนี้ยังจะส่งเสียงบี๊บหากระบุตัวบุคคล และหยุดตัวเองก่อนจะลงจากหน้าผา

% ลอง rob.setLEDDigits('') x=0; y=0; ทีต้า=0; อุปสรรค = ; รอบ = 1; AngCorr = @(x)x + 3.059.*x.^0.4205; % ฟังก์ชันเพื่อแก้ไขมุมเลี้ยวขณะ rob.getBatteryInfo.percent > 15 rob.setLEDDigits('') rob.setDriveVelocity(0.1) %Go %Check For Person if AA_checkperson(rob) rob.beep end %Check Cliff Sensor if AA_cliffcheck(rob)) rob.stop rob.setLEDDigits('Cliff') หยุด (0.5) สิ่งกีดขวาง (รอบ) = 2; AA_cliffbeep(rob) %Back Up And Turn rob.moveDistance(-.15) rob.turnAngle(30) สิ้นสุด

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

รหัสนี้จะทำให้ Roomba ใช้สำหรับตรวจสอบสิ่งของรอบตัว และจะตรวจสอบเซ็นเซอร์กันกระแทกเพื่อให้แน่ใจว่าเครื่องหยุดทำงานก่อนที่มันจะเกิดความเสียหายเอง

% ตรวจสอบเซ็นเซอร์วัดแสงว่า AA_lightcheck(rob) rob.stop rob.setLEDDigits('Wall') หยุด (0.5) สิ่งกีดขวาง (รอบ) = 1; %Wall AA_wallbeep(rob) %Back Up and Turn rob.moveDistance(-.15) rob.turnAngle(30) end %Check Bump Sensor if AA_bumpcheck(rob) rob.stop rob.setLEDDigits('Wall') หยุดชั่วคราว(0.5) อุปสรรค(รอบ) = 1; %Wall AA_wallbeep(rob) %Back Up And Turn rob.moveDistance(-.15) rob.turnAngle(30) end %ถ้าไม่มีถ้าสิ่งกีดขวาง(สิ่งกีดขวาง)ว่างเปล่า(รอบ) = 0; Elseif ความยาว (อุปสรรค) < อุปสรรคของวงจร (รอบ) = 0; จบ

ขั้นตอนที่ 5: ขั้นตอนที่ 5: การพล็อต

ขั้นตอนที่ 5: พล็อต
ขั้นตอนที่ 5: พล็อต

รหัสนี้จะบอกให้ roomba ของคุณวางแผนสิ่งที่พบในการเดินทาง พล็อตแบบนี้จะปรากฏขึ้นหลังจากที่ roomba หยุดทำงาน

% รับตำแหน่ง d = rob.getDistance; ถ้าวงจร == 1 theta(รอบ) = 0; x(รอบ) = d.*cosd(ทีต้า(รอบ)); % dist ทั้งหมดที่เดินทางใน x y(รอบ) = d.*sind(theta(รอบ)); % dist ทั้งหมดเดินทางใน y อื่น theta(cycle) = theta(cycle-1) + rob.getAngle; x(รอบ) = d.*cosd(ทีต้า(รอบ)) + x(รอบ-1); % dist ทั้งหมดที่เดินทางใน x y(รอบ) = d.*sind(theta(รอบ)).*d + y(รอบ-1); % dist ทั้งหมดเดินทางในปลาย y % เงื่อนไขการหยุดถ้า rob.getButtons.clean สิ้นสุดการหยุด % รอบการเพิ่มขึ้น = รอบ + 1; จบ rob.stop for i = 1: วงจรถ้าสิ่งกีดขวาง (i) == 1 %Wall plot(x(i), y(i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseifสิ่งกีดขวาง (i) == 2 %Cliff plot(x(i), y(i), 'Marker', 'o', 'MarkerEdgeColor', 'k') end text(.9, 0.9, sprintf('Square = Wall) nCircle = Cliff'), 'Units', 'normalized') ค้างไว้ที่จุดสิ้นสุด % สัญญาณความทุกข์ในขณะที่ rob.beep หยุดชั่วคราวจริง (3) ถ้า rob.getButtons.clean สิ้นสุดการหยุดชะงัก % catch % rob.stop % สิ้นสุด

แนะนำ: