สารบัญ:

หุ่นยนต์สอดแนมดาวอังคาร: 4 ขั้นตอน
หุ่นยนต์สอดแนมดาวอังคาร: 4 ขั้นตอน

วีดีโอ: หุ่นยนต์สอดแนมดาวอังคาร: 4 ขั้นตอน

วีดีโอ: หุ่นยนต์สอดแนมดาวอังคาร: 4 ขั้นตอน
วีดีโอ: สิ่งที่นาซ่าค้นพบบนดาวอังคารทำให้นักวิทยาศาสตร์ต้องตกตะลึง 2024, กรกฎาคม
Anonim
หุ่นยนต์สำรวจดาวอังคาร
หุ่นยนต์สำรวจดาวอังคาร

คำแนะนำนี้เป็นคำแนะนำทีละขั้นตอนในการเขียนโปรแกรมและสั่งการหุ่นยนต์สอดแนมดาวอังคาร

ในการเริ่มต้น เราต้องได้รับรายการวัสดุดังต่อไปนี้: iRobot ที่ชาร์จแล้วสร้างซึ่งปรับแต่งโดย Tickle College of Eningeering Univerisity of Tennessee เครือข่ายไร้สายที่เชื่อมต่อกับ Raspberry Pi ใน iRobot, UTK iRobot สร้างที่ชาร์จ, รองรับ Wi-Fi คอมพิวเตอร์ที่มีการเข้าถึง MATLAB และอินเทอร์เน็ต

ขั้นตอนที่ 1: กล่องเครื่องมือ Roomba

กล่องเครื่องมือ Roomba
กล่องเครื่องมือ Roomba

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

รหัส:

ห้องทำงานbaInstallclc; % รายการไฟล์ที่จะติดตั้งไฟล์ = {'roomba.m', 'roombaSim.m', 'roombaSimGUI.m', 'roombaSimGUI.fig'}; % ตำแหน่งที่จะติดตั้งจากตัวเลือก = weboptions ('CertificateFilename', ''); % บอกให้ละเว้นข้อกำหนดใบรับรองเซิร์ฟเวอร์ = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/'; dlgTitle = 'ติดตั้ง/อัปเดต Roomba'; % วัตถุประสงค์ในการแสดงผลและรับข้อความยืนยัน = { 'โปรแกรมนี้จะดาวน์โหลดไฟล์ EF 230 Roomba เหล่านี้:' '' strjoin (ไฟล์, ' ') '' 'ไปยังโฟลเดอร์นี้:' '' cd '' 'คุณต้องการดำเนินการต่อหรือไม่? ' }; เสียงบี๊บ; yn = questdlg(พร้อมท์, … dlgTitle, … 'ใช่', 'ไม่', 'ใช่');

ถ้า ~strcmp(yn, 'ใช่') ให้ส่งคืน; จบ

% รับรายการไฟล์ที่มีอยู่ที่มีอยู่_files = files(cellfun(@exist, files) > 0); if ~isempty(existing_files) % ตรวจสอบให้แน่ใจว่าสามารถแทนที่ได้ prompt = {'คุณกำลังแทนที่ไฟล์เหล่านี้:' '' strjoin (existing_files, ' ') '' 'ตกลงที่จะแทนที่หรือไม่' }; เสียงบี๊บ; yn = questdlg(พร้อมท์, … dlgTitle, … 'ใช่', 'ไม่', 'ใช่'); ถ้า ~strcmp(yn, 'ใช่') ให้ส่งคืน; ปลาย ปลาย

% ดาวน์โหลดไฟล์ cnt = 0; สำหรับ i=1:length(files) f=files{i}; disp(['กำลังดาวน์โหลด' f]); ลอง url = [เซิร์ฟเวอร์ f]; บันทึกเว็บ (f, url, ตัวเลือก); % เพิ่มตัวเลือกเพื่อหลีกเลี่ยงข้อผิดพลาดด้านความปลอดภัย cnt = cnt + 1; catch disp(['เกิดข้อผิดพลาดในการดาวน์โหลด' f]); หุ่น = [f '.html']; ถ้ามี (จำลอง, 'ไฟล์')==2 ลบ (จำลอง) สิ้นสุดปลายสิ้นสุด

ถ้า cnt == length(files) msg = 'การติดตั้งสำเร็จ'; waitfor(msgbox(msg, dlgTitle)); else msg = 'ข้อผิดพลาดในการติดตั้ง - โปรดดูรายละเอียดที่หน้าต่างคำสั่ง'; รอ (errordlg(msg, dlgTitle)); จบ

สิ้นสุด %roombaInstall

ขั้นตอนที่ 2: การเตรียมการเชื่อมต่อ

กำลังเตรียมเชื่อมต่อ
กำลังเตรียมเชื่อมต่อ
กำลังเตรียมเชื่อมต่อ
กำลังเตรียมเชื่อมต่อ

เชื่อมต่อ micro-USB ที่ยื่นออกมาจากหุ่นยนต์เข้ากับพอร์ตด้านล่างของ Raspberry Pi จากนั้นที่ด้านบนของ Roomba ให้กดปุ่ม Dock และ Spot ค้างไว้พร้อมกันจนกว่าไฟบน Roomba จะหรี่ลง คุณควรได้ยินเครื่องชั่งอิเล็กทรอนิกส์จาก Roomba เมื่อคุณปล่อย

ขั้นตอนที่ 3: การเชื่อมต่อกับ Robot

การเชื่อมต่อกับหุ่นยนต์
การเชื่อมต่อกับหุ่นยนต์

เปิดเครือข่ายที่พร้อมใช้งานบนคอมพิวเตอร์ของคุณและเลือกเครือข่ายที่มีอยู่ระหว่างคอมพิวเตอร์กับ Raspberry Pi ในโฟลเดอร์ปัจจุบันของ MATLAB ให้คลิกขวาที่โฟลเดอร์โปรเจ็กต์ปัจจุบันของคุณ แล้วเลือกกล่องเครื่องมือ roomba ที่ดาวน์โหลดมาในขั้นตอนที่ 1 และเพิ่มลงในพาธ ในเครือข่ายที่ออกแบบมาสำหรับการเชื่อมต่อ Pi หลายตัว ระบุหุ่นยนต์ของคุณโดยสร้างวัตถุของคลาส Roomba ดูตัวอย่างด้านล่าง

หากคุณมี Roomba ที่กำหนดให้กับหมายเลข 7 ให้ป้อนข้อมูลต่อไปนี้:

ร=รูมบ้า(7)

โปรดจำไว้ว่าตัวแปรนี้ถูกกำหนดให้กับ roomba แล้ว คำสั่งใดๆ ที่ให้กับหุ่นยนต์จะต้องนำโดยตัวแปรที่กำหนด

ขั้นตอนที่ 4: รหัส

รหัส
รหัส

drive.google.com/drive/folders/1OVR5oTHUsn…

ใช้ลิงก์ด้านบน บันทึกไฟล์.m ทั้งหมดลงในโฟลเดอร์ที่กำหนดซึ่งโปรแกรมหลักจะทำงาน ลิงก์ควรเปิดสำหรับทุกคนที่มีลิงก์ เปิดสคริปต์ใหม่ในโฟลเดอร์ปัจจุบันและเรียกใช้ mycontrolprogram.m ดังที่แสดงด้านล่าง:

ฟังก์ชั่น mycontrolprogram(r) global m m = mobiledev; emailInit(); วิ่ง = 1; global f นับจำนวนทั่วโลก = 0; ฉ = ร; ไดเร็กไดเร็กทั่วโลก = 0; r.getAngle; r.getDistance; โกลบอล curLoc curLoc = [0, 0]; แต้มทั่วโลก pts = ศูนย์ (1, 2, 2); คู่มือ = จริง; กราฟObs(1); วี = 0.15; ในขณะที่นับ < 50 ถ้า (manual == false) obsDetect(r, v, pts); direc = direc + r.getAngle; r.setLEDDigits(num2str(นับ)); อื่น direc = direc + r.getAngle; คู่มือไดรฟ์ (); สิ้นสุด สิ้นสุด figSend(); จบ

หุ่นยนต์ควรทำงานที่ออกแบบไว้ในขณะนี้

แนะนำ: