Mục lục:

Roomba Explorer: 4 bước
Roomba Explorer: 4 bước

Video: Roomba Explorer: 4 bước

Video: Roomba Explorer: 4 bước
Video: How To Repair Robot Vacuum Move Around In Circles and Backwards 2024, Tháng mười một
Anonim
Roomba Explorer
Roomba Explorer

Bằng cách sử dụng MATLAB và Robot Create2 của iRobot, dự án này sẽ khám phá các khu vực khác nhau của một địa điểm không xác định. Chúng tôi đã sử dụng các cảm biến trên Robot để giúp điều khiển địa hình nguy hiểm. Bằng cách lấy ảnh và nguồn cấp dữ liệu video từ Raspberry Pi được gắn vào, chúng tôi có thể xác định những trở ngại mà Robot sẽ phải đối mặt và chúng sẽ được phân loại.

Bộ phận và Vật liệu

Đối với dự án này, bạn sẽ cần

-một máy tính

-Phiên bản phía tây của MATLAB (MATLAB R2018b đã được sử dụng cho dự án này)

- hộp công cụ roombaInstall

-iRobot's Create2 Robot

-Raspberry Pi với máy ảnh

Bước 1: Khởi tạo và cảm biến

Khởi tạo và cảm biến
Khởi tạo và cảm biến

Trước khi bắt đầu bất kỳ chương trình nào, chúng tôi đã tải xuống hộp công cụ roombaInstall, cho phép truy cập vào các thành phần khác nhau của Robot.

Ban đầu, chúng tôi tạo GUI để khởi tạo bất kỳ Robot nào. Để làm điều này, bạn cần nhập số của Robot làm đầu vào. Điều này sẽ cho phép truy cập để chạy chương trình của chúng tôi tới Robot. Chúng tôi đã làm việc để đưa Robot cơ động qua nhiều địa hình mà nó sẽ gặp phải. Chúng tôi đã triển khai Cảm biến Vách đá, Cảm biến Độ cao ánh sáng và Cảm biến Độ cao vật lý, bằng cách sử dụng đầu ra của chúng để di chuyển Robot nhằm thay đổi tốc độ và hoặc hướng của nó. Khi bất kỳ cảm biến nào trong số sáu Cảm biến Gù sáng phát hiện một đối tượng, giá trị mà chúng xuất ra sẽ giảm xuống, khiến tốc độ của Robot giảm để tránh va chạm ở tốc độ tối đa. Cuối cùng khi Robot va chạm với chướng ngại vật, các cảm biến Vật lý Bump sẽ báo giá trị lớn hơn 0; vì điều này, Robot sẽ dừng lại, do đó sẽ không có va chạm nữa và nhiều chức năng hơn có thể được đưa vào hoạt động. Đối với Cảm biến vách đá, chúng sẽ đọc độ sáng của khu vực xung quanh chúng. Nếu giá trị lớn hơn 2800, chúng tôi xác định rằng Robot sẽ ở trên mặt đất ổn định và an toàn. Tuy nhiên, nếu giá trị nhỏ hơn 800, các Cảm biến Vách đá sẽ phát hiện một vách đá, dừng lại ngay lập tức để không rơi ra. Bất kỳ giá trị nào ở giữa được xác định là đại diện cho nước và sẽ khiến Robot dừng hoạt động của nó. Bằng cách sử dụng các cảm biến trên, tốc độ của Robot được thay đổi cho phép chúng tôi xác định tốt hơn nếu có bất kỳ nguy hiểm nào.

Dưới đây là mã (từ MATLAB R2018b)

Khởi tạo %%

dlgPrompts = {'Số Roomba'};

dlgTitle = 'Chọn Roomba của bạn';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts)% Tạo cửa sổ nhắc người dùng nhập số roomba của họ

n = str2double (dlgout {1});

r = roomba (n); % Khởi tạo do người dùng chỉ định Roomba %% Xác định tốc độ từ Cảm biến Bumper ánh sáng trong khi true s = r.getLightBumpers; % nhận được cảm biến va chạm nhẹ

lbumpout_1 = extractfield (s, 'left'); % lấy các giá trị số của các cảm biến và làm cho chúng dễ sử dụng hơn lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (s, 'leftCenter');

lbumpout_4 = extractfield (s, 'rightCenter');

lbumpout_5 = extractfield (s, 'rightFront');

lbumpout_6 = extractfield (s, 'right');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6]% chuyển đổi các giá trị thành ma trận

sLbump = sort (lbout); % sắp xếp ma trận đến giá trị thấp nhất có thể được trích xuất

lowLbump = sLbump (1); speed = 0,05 + (lowLbump) *. 005% sử dụng giá trị thấp nhất, đại diện cho các chướng ngại vật gần, để xác định tốc độ, tốc độ cao hơn khi không phát hiện thấy gì

r.setDriveVelocity (tốc độ, tốc độ)

kết thúc

% Vật lý đệm

b = r.getBumpers; % Đầu ra đúng, sai

bsen_1 = extractfield (b, 'left')

bsen_2 = extractfield (b, 'right')

bsen_3 = extractfield (b, 'front')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

va chạm = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

nếu tbump> 0 r.setDriveVelocity (0, 0)

kết thúc

% Cảm biến vách đá

c = r.getCliffSensors %% 2800 an toàn, nước khác

csen_1 = extractfield (c, 'left')

csen_2 = extractfield (c, 'right')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

vách đá = [csen_1, csen_2, csen_3, csen_4]

ordcliff = sort (vách đá)

nếu ordcliff (1) <2750

r.setDriveVelocity (0, 0)

nếu vách đá <800

disp 'vách đá'

khác

disp 'water'

kết thúc

r. TurnAngle (45)

kết thúc

Bước 2: Lấy dữ liệu

Sau khi cảm biến vật lý bị vấp, Robot sẽ thực hiện Raspberry Pi trên bo mạch để chụp ảnh chướng ngại vật. Sau khi chụp ảnh, sử dụng tính năng nhận dạng văn bản nếu có văn bản trong ảnh, Robot sẽ xác định chướng ngại vật là gì và chướng ngại vật nói gì.

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (ảnh)

Công nhậnText = ocrResults. Text;

nhân vật;

imshow (ảnh) text (220, 0, RecognitionText, 'BackgroundColor', [1 1 1]);

Bước 3: Hoàn thành nhiệm vụ

Khi Robot xác định được chướng ngại vật là NHÀ, nó sẽ hoàn thành nhiệm vụ của mình và ở nhà. Sau khi hoàn thành nhiệm vụ, Robot sẽ gửi một e-mail cảnh báo rằng nó đã trở về nhà và nó sẽ gửi những hình ảnh mà nó đã chụp trong chuyến đi của mình.

% Gửi email

setpref ('Internet', 'SMTP_Server', 'smtp.gmail.com');

setpref ('Internet', 'E_mail', '[email protected]'); % tài khoản thư để gửi từ setpref ('Internet', 'SMTP_Username', 'nhập email người gửi'); % người gửi tên người dùng setpref ('Internet', 'SMTP_Password', 'nhập mật khẩu người gửi'); % Người gửi mật khẩu

props = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail ('Nhập email nhận', 'Roomba', 'Roomba đã trở về nhà !!', 'imgfromcamera.jpg')% tài khoản mail để gửi đến

Robot sau đó đã hoàn thành.

Bước 4: Kết luận

Phần kết luận
Phần kết luận

Chương trình MATLAB bao gồm được tách ra khỏi toàn bộ tập lệnh được sử dụng với Robot. Trong bản nháp cuối cùng, hãy đảm bảo đặt tất cả mã, ngoại trừ bước khởi tạo, vào một vòng lặp trong khi để đảm bảo rằng các đoạn đệm liên tục chạy. Chương trình này có thể được chỉnh sửa để phù hợp với nhu cầu của người dùng. Cấu hình của Robot của chúng tôi được hiển thị.

* Nhắc nhở: Đừng quên rằng hộp công cụ roombaInstall là cần thiết để MATLAB tương tác với Robot và Raspberry Pi trên bo mạch.

Đề xuất: