Mục lục:

Dự án Roomba MATLAB: 5 bước
Dự án Roomba MATLAB: 5 bước

Video: Dự án Roomba MATLAB: 5 bước

Video: Dự án Roomba MATLAB: 5 bước
Video: Dự án robot - bám quỹ đạo (PBL - tuần 8) 2024, Tháng bảy
Anonim
Dự án Roomba MATLAB
Dự án Roomba MATLAB

Kế hoạch hiện tại của NASA đối với tàu thám hiểm sao Hỏa là để nó trở thành một công cụ thu thập dữ liệu và đi vòng quanh sao Hỏa, thu thập các mẫu đất mang về Trái đất để các nhà khoa học có thể xem liệu có bất kỳ dạng sống nào trước đây trên hành tinh này hay không. Ngoài ra, rover gửi lại hình ảnh cho các nhà khoa học để họ có thể giúp điều hướng rover và khắc phục bất kỳ sự cố nào mà nó có thể gặp phải.

Ý tưởng của nhóm chúng tôi cho dự án của chúng tôi là để chiếc máy bay hoạt động giống như chiếc máy bay thám hiểm của NASA sẽ rời trái đất vào năm 2020, nhưng nó cũng để vạch ra địa lý của vùng đất. Roomba sẽ có thể cảm nhận được các vách đá và tự dừng lại trước khi rơi xuống, sau đó lùi lại, quay và thay đổi hướng đi để không bị rơi và bị hư hỏng. Một ý tưởng khác của chúng tôi được tích hợp vào dự án của chúng tôi là để roomba có thể vẽ ra các điểm mốc mà nó nhìn thấy và hiển thị một âm mưu mỗi khi vòng lặp kết thúc và quá trình của nó đã được chạy.

Hướng dẫn này dành cho bất kỳ ai khác muốn tạo cùng một loại mã cho roomba của họ.

Bước 1: Bước 1: Vật liệu cần thiết

Bước 1: Vật liệu cần thiết
Bước 1: Vật liệu cần thiết
Bước 1: Vật liệu cần thiết
Bước 1: Vật liệu cần thiết

Bạn sẽ cần:

  1. A roomba
  2. MATLAB
  3. Tệp này để chạy roomba
  4. Một bề mặt phẳng
  5. Mặt bàn hoạt động như một "vách đá"

Bước 2: Bước 2: Thiết lập / Lấy mã cho Roomba

Bước 2: Thiết lập / Lấy mã cho Roomba
Bước 2: Thiết lập / Lấy mã cho Roomba

Màn hình của bạn sẽ trông như thế này sau khi bạn nhập các tệp.

Bước 3: Bước 3: Thiết lập Cảm biến Vách đá / Đèn LED

Mã này sẽ cho roomba của bạn biết chính xác góc quay, kiểm tra thông tin pin, cho biết roomba của bạn chạy nhanh như thế nào và kiểm tra một người thông qua camera của roomba. Nó cũng sẽ phát ra tiếng bíp nếu xác định được một người và tự dừng lại trước khi đi ra khỏi vách đá.

% thử rob.setLEDDigits ('') x = 0; y = 0; theta = 0; chướng ngại vật = ; chu kỳ = 1; AngCorr = @ (x) x + 3.059. * X. ^ 0.4205; % Chức năng sửa góc rẽ khi rob.getBatteryInfo.percent> 15 rob.setLEDDigits ('') rob.setDriveVelocity (0.1)% Đi% Kiểm tra người nếu AA_checkwoman (rob) rob.beep end% Kiểm tra cảm biến vách đá nếu AA_cliffcheck (cướp) rob.stop rob.setLEDDigits ('Vách đá') tạm dừng (0,5) chướng ngại vật (chu kỳ) = 2; AA_cliffbeep (cướp)% Sao lưu và quay rob.moveDistance (-. 15) rob.turnAngle (30) kết thúc

Bước 4: Bước 4: Kiểm tra chướng ngại vật

Mã này sẽ lấy roomba để kiểm tra các vật dụng xung quanh nó và sẽ kiểm tra cảm biến va đập để đảm bảo nó dừng lại trước khi tự hỏng.

% Kiểm tra Cảm biến ánh sáng nếu AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Tường') tạm dừng (0.5) chướng ngại vật (chu kỳ) = 1; % Wall AA_wallbeep (rob)% Sao lưu và quay rob.moveDistance (-. 15) rob.turnAngle (30) end% Kiểm tra cảm biến Bump nếu AA_bumpcheck (cướp) rob.stop rob.setLEDDigits ('Tường') tạm dừng (0.5) chướng ngại vật (chu kỳ) = 1; % Wall AA_wallbeep (rob)% Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end% Nếu không có nếu isempty (chướng ngại vật) chướng ngại vật (chu kỳ) = 0; elseif chiều dài (chướng ngại vật) <chướng ngại vật chu kỳ (chu kỳ) = 0; kết thúc

Bước 5: Bước 5: Vẽ đồ thị

Bước 5: Lập kế hoạch
Bước 5: Lập kế hoạch

Mã này sẽ cho roomba của bạn biết để tìm ra những gì nó gặp phải trên hành trình của nó. Một âm mưu như thế này sẽ xuất hiện sau khi roomba dừng lại.

% Nhận Vị trí d = rob.getDistance; if cycle == 1 theta (cycle) = 0; x (chu kỳ) = d. * cosd (theta (chu kỳ)); % tổng số dist đi được trong x y (chu kỳ) = d. * sind (theta (chu kỳ)); % tổng số dist đã đi trong năm khác theta (cycle) = theta (cycle-1) + rob.getAngle; x (chu kỳ) = d. * cosd (theta (chu kỳ)) + x (chu kỳ-1); % tổng số dist đi được trong x y (chu kỳ) = d. * sind (theta (chu kỳ)). * d + y (chu kỳ-1); % tổng số dist đã di chuyển trong y end% Break condition if rob.getButtons.clean break end% Gia tăng chu kỳ chu kỳ = chu kỳ + 1; end rob.stop cho i = 1: cycle if chướng ngại vật (i) == 1% Biểu đồ tường (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') elseif chướng ngại vật (i) == 2% Biểu đồ vách đá (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') văn bản kết thúc (.9, 0.9, sprintf ('Square = Wall / nCircle = Cliff '),' Units ',' normalized ') giữ ở cuối% Tín hiệu phiền muộn trong khi true rob.beep pause (3) nếu rob.getButtons.clean break end end% catch% rob.stop% end

Đề xuất: