Mục lục:

Mars Roomba: 6 bước
Mars Roomba: 6 bước

Video: Mars Roomba: 6 bước

Video: Mars Roomba: 6 bước
Video: Dùng thử Robot hút bụi iRobot Roomba 692 2024, Tháng mười một
Anonim
Mars Roomba
Mars Roomba

Có thể hướng dẫn này sẽ hướng dẫn bạn các hướng dẫn vận hành bot chân không Roomba được điều khiển bằng Raspberry Pi. Hệ điều hành chúng tôi sẽ sử dụng là thông qua MATLAB.

Bước 1: Nguồn cung cấp

Những gì bạn sẽ cần thu thập để thực hiện dự án này:

  • bot hút bụi Create2 Roomba của iRobot
  • Raspberry Pi
  • Máy ảnh Raspberry Pi
  • Phiên bản mới nhất của MATLAB
  • Hộp công cụ cài đặt Roomba cho MATLAB
  • Ứng dụng MATLAB cho thiết bị di động

Bước 2: Tuyên bố vấn đề

Tuyên bố vấn đề
Tuyên bố vấn đề

Chúng tôi được giao nhiệm vụ sử dụng MATLAB để phát triển một máy dò đường có thể được sử dụng trên sao Hỏa nhằm hỗ trợ các nhà khoa học thu thập dữ liệu hành tinh. Các chức năng mà chúng tôi đã đề cập trong dự án của mình là điều khiển từ xa, nhận dạng tác động của vật thể, nhận dạng nước, nhận dạng sự sống và xử lý hình ảnh. Để đạt được những thành công này, chúng tôi đã viết mã bằng cách sử dụng các lệnh của hộp công cụ Roomba để thao tác nhiều chức năng của Create2 Roomba của iRobot.

Bước 3: Điều khiển từ xa Bluetooth

Điều khiển từ xa Bluetooth
Điều khiển từ xa Bluetooth

Trang trình bày này sẽ xem qua mã để điều khiển chuyển động của Roomba bằng khả năng Bluetooth của thiết bị điện thoại thông minh của bạn. Để bắt đầu, hãy tải ứng dụng MATLAB xuống điện thoại thông minh của bạn và đăng nhập vào tài khoản Mathworks của bạn. Sau khi đăng nhập, hãy đi tới "thêm", "cài đặt" và kết nối với máy tính của bạn bằng địa chỉ IP của nó. Sau khi kết nối, hãy quay lại "thêm" và chọn "cảm biến". Chạm vào cảm biến thứ ba trên thanh công cụ trên cùng của màn hình và chạm vào bắt đầu. Bây giờ, điện thoại thông minh của bạn là một điều khiển từ xa!

Mã như sau:

trong khi 0 == 0

tạm dừng (.5)

PhoneData = M. Orientation;

Azi = PhoneData (1);

Pitch = PhoneData (2);

Bên = Dữ liệu Điện thoại (3);

va chạm = r.getBumpers;

nếu Bên> 80 || Bên <-80

r.stop

r.beep ('C, E, G, C ^, G, E, C')

nghỉ

elseif Side> 20 && Side <40

r.turnAngle (-5);

elseif Bên> 40

r.turnAngle (-25);

elseif Side-40

r.turnAngle (5);

elseif Side <-40

r.turnAngle (25);

kết thúc

nếu Pitch> 10 && Pitch <35

r.moveDistance (.03)

elseif Pitch> -35 && Pitch <-10

r.moveDistance (-. 03)

kết thúc

kết thúc

Bước 4: Nhận biết tác động

Nhận biết tác động
Nhận biết tác động

Một chức năng khác mà chúng tôi đã triển khai là phát hiện tác động của Roomba vào một đối tượng và sau đó sửa đường dẫn hiện tại của nó. Để làm được điều này, chúng tôi phải sử dụng các điều kiện với số đọc từ các cảm biến cản để xác định xem một vật thể có bị va chạm hay không. Nếu rô bốt va vào một vật thể, rô bốt sẽ lùi lại 0,2 mét và quay theo một góc được xác định bởi phần cản đã bị va đập. Khi một mục đã được chọn, một menu bật lên hiển thị từ "oof".

Các mã được hiển thị dưới đây:

trong khi 0 == 0

va chạm = r.getBumpers;

r.setDriveVelocity (.1)

nếu va chạm.left == 1

msgbox ('Oof!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif Impact.front == 1

msgbox ('Oof!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (90)

r.setDriveVelocity (.2)

elseif xóc.right == 1

msgbox ('Oof!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

elseif chướng ngại vật.leftWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (-35)

r.setDriveVelocity (.2)

elseif chướng ngại vật.rightWheelDrop == 1

msgbox ('Oof!');

r.moveDistance (-0,2)

r.setTurnVelocity (.2)

r.turnAngle (35)

r.setDriveVelocity (.2)

kết thúc

kết thúc

Bước 5: Nhận biết cuộc sống

Nhận biết cuộc sống
Nhận biết cuộc sống

Chúng tôi đã mã hóa một hệ thống nhận dạng sự sống để đọc màu sắc của các vật thể trước mặt nó. Ba loại sự sống mà chúng ta mã hóa là thực vật, nước và người ngoài hành tinh. Để làm điều này, chúng tôi đã mã hóa các cảm biến để tính toán các giá trị trung bình của màu đỏ, xanh lam, xanh lục hoặc trắng. Các giá trị này được so sánh với các ngưỡng được đặt theo cách thủ công để xác định màu mà máy ảnh đang nhìn. Mã cũng sẽ vẽ đường dẫn đến đối tượng và tạo bản đồ.

Mã như sau:

t = 10;

i = 0;

trong khi t == 10

img = r.getImage; imshow (img)

tạm dừng (0,167)

i = i + 1;

red_mean = mean (mean (img (:,:, 1)));

blue_mean = mean (mean (img (:,:, 3)));

green_mean = mean (mean (img (:,:, 2)));

white_mean = (blue_mean + green_mean + red_mean) / 3; % muốn giá trị này xấp xỉ 100

nine_plus_ten = 21;

green_threshold = 125;

blue_threshold = 130;

ngưỡng_trắng = 124;

ngưỡng_ đỏ = 115;

trong khi nine_plus_ten == 21% xanh - cuộc sống

nếu green_mean> green_threshold && blue_mean <blue_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('có thể tìm thấy nguồn sống, vị trí được vẽ');

tạm dừng (2)

xóa (a)

[y2, Fs2] = audioread ('z_speak2.wav');

âm thanh (y2, Fs2)

tạm dừng (2)

% plant = r.getImage; % imshow (thực vật);

% save ('plant_img.mat', plant ');

% lô đất vị trí màu xanh lá cây

i = 5;

nghỉ

khác

nine_plus_ten = 19;

kết thúc

kết thúc

nine_plus_ten = 21;

trong khi nine_plus_ten == 21% màu xanh lam - bộ mã hóa

nếu blue_mean> blue_threshold && green_mean <green_threshold && white_mean <white_threshold && red_mean <red_threshold

r.moveDistance (-. 1)

a = msgbox ('một nguồn nước đã được tìm thấy, vị trí được vẽ');

tạm dừng (2)

xóa (a)

[y3, Fs3] = audioread ('z_speak3.wav');

âm thanh (y3, Fs3);

% woder = r.getImage; % imshow (woder)

% save ('water_img.mat', bộ mã hóa)

% lô vị trí màu xanh lam

i = 5;

nghỉ

khác

nine_plus_ten = 19;

kết thúc

kết thúc

nine_plus_ten = 21;

trong khi nine_plus_ten == 21% màu trắng - người ngoài hành tinh monkaS

if white_mean> white_threshold && blue_mean <blue_threshold && green_mean <green_threshold

[y5, Fs5] = audioread ('z_speak5.wav');

âm thanh (y5, Fs5);

tạm dừng (3)

r.setDriveVelocity (0,.5)

[ys, Fss] = audioread ('z_scream.mp3');

âm thanh (ys, Fss);

tạm dừng (3)

r.stop

% người ngoài hành tinh = r.getImage; % imshow (người ngoài hành tinh);

% save ('ngoài hành tinh_img.mat', người ngoài hành tinh);

i = 5;

nghỉ

khác

nine_plus_ten = 19;

kết thúc

kết thúc

nếu tôi == 5

a = 1; % quay góc

t = 9; % kết thúc vòng lặp lớn

i = 0;

kết thúc

kết thúc

Bước 6: Chạy nó !

Sau khi tất cả mã đã được viết, hãy kết hợp tất cả thành một tệp và thì đấy! Bot Roomba của bạn bây giờ sẽ có đầy đủ chức năng và hoạt động như quảng cáo! Tuy nhiên, điều khiển Bluetooth phải nằm trong một tệp riêng biệt hoặc được tách biệt với phần còn lại của mã bằng %%.

Thích sử dụng robot của bạn !!

Đề xuất: