Mục lục:
Video: Roomba Explorer: 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
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
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
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:
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Phím tắt cho Internet Explorer !!: 4 bước
Phím tắt cho Internet Explorer !!: Có thể hướng dẫn này sẽ chỉ cho bạn một số phím tắt hữu ích cho Internet Explorer Xin vui lòng đăng ký kênh của tôi
Roomba Scout Explorer: 8 bước
Roomba Scout Explorer: Là một trong những dự án được người Mỹ mong đợi nhất và được nghiên cứu kỹ lưỡng, dự án Mars rover đã trở thành thành tựu của con người trong việc sản xuất ngày càng tiến bộ các hệ thống tự hành công nghệ cao cho mục đích duy nhất là điều tra và
Từ Roomba đến Rover chỉ trong 5 bước!: 5 bước
Từ Roomba đến Rover chỉ trong 5 bước !: Robot Roomba là một cách thú vị và dễ dàng để nhúng ngón chân của bạn vào thế giới người máy. Trong phần Có thể hướng dẫn này, chúng tôi sẽ trình bày chi tiết cách chuyển đổi một Roomba đơn giản thành một máy quay có thể điều khiển được đồng thời phân tích môi trường xung quanh nó
Bus Pirate 3EEPROM Explorer Board: 5 bước
Bus Pirate 3EEPROM Explorer Board: Nếu bạn có một trong những Hack một ngày Bus Pirates, bạn sẽ làm gì với nó? Tìm hiểu về EEPROM 1 dây, I2C và SPI với bảng khám phá 3EEPROM (chúng tôi gọi nó là THR-EE-PROM) .EEPROM là một loại chip nhớ lưu trữ dữ liệu mà không cần nguồn điện liên tục