Mục lục:

Roomba Parking Pal: 6 bước
Roomba Parking Pal: 6 bước

Video: Roomba Parking Pal: 6 bước

Video: Roomba Parking Pal: 6 bước
Video: Chương Trình Tập Planche 6-8 Tháng - Part1: Hướng Dẫn Tuck-Advanced Tuck | Planche Tutolrial 2024, Tháng mười một
Anonim
Roomba đậu xe Pal
Roomba đậu xe Pal

Dự án này sử dụng iRobot Tạo roomba có thể lập trình, MATLAB r2018a và MATLAB di động. Bằng cách sử dụng ba phương tiện này và kiến thức của chúng tôi về mã hóa, chúng tôi đã lập trình iRobot Create để giải thích màu sắc và sử dụng các cảm biến trên bo mạch để hoàn thành nhiệm vụ. Các dự án này phụ thuộc vào giao tiếp Raspberry Pi và MATLAB để thực hiện các tác vụ này.

Bước 1: Vật liệu

Vật liệu
Vật liệu
Vật liệu
Vật liệu

1. iRobot Tạo Robot

2. MATLAB r2018a

3. Raspberry Pi

4. Mô-đun máy ảnh

5. Chân đế ổn định máy ảnh in 3-D

6. Điện thoại thông minh có cài đặt MATLAB di động

7. Máy tính xách tay / Máy tính có cài đặt MATLAB

Bước 2: Kết nối

Bước này là kết nối Raspberry Pi với rô bốt, thứ hai là kết nối rô bốt với máy tính của bạn và kết nối điện thoại thông minh với máy tính.

Phần dễ nhất của quá trình này là kết nối Raspberry Pi với rô bốt của bạn, vì Raspberry Pi được gắn vào đầu rô bốt. Có một sợi dây từ robot mà tất cả những gì bạn phải làm là cắm vào mặt bên của Raspberry Pi.

Bước tiếp theo là kết nối robot với máy tính của bạn để bạn có thể chạy các lệnh để robot thực hiện. Điều đầu tiên bạn phải làm là kết nối máy tính của bạn với mạng không dây mà roomba của bạn đang tạo. Bây giờ, bạn nên sử dụng biểu tượng Đặt Đường dẫn trong MATLAB để đặt đường dẫn để bạn có thể sử dụng các chức năng trong hộp công cụ Roomba từ MATLAB. Mỗi khi bạn bắt đầu và kết thúc việc sử dụng với rô bốt, bạn phải thực hiện động tác "Chào hai ngón tay" để đặt lại rô bốt, có nghĩa là bạn nhấn giữ các nút đế và vị trí trong mười giây cho đến khi đèn mờ đi cho biết để nhả ra. Bạn đã thành công với việc khôi phục cài đặt gốc này nếu bạn nghe thấy rô-bốt phát âm vực ngắn. Tiếp theo, bạn phải kết nối với roomba bằng một dòng mã như sau "r = roomba (x)" trong đó 'x' là số được chỉ định cho rô bốt mà bạn có.

Cuối cùng, bạn cần tải xuống MATLAB di động trên bất kỳ thiết bị di động nào mà bạn sẽ sử dụng cho dự án này và ứng dụng này có sẵn trên cả thiết bị Android và Apple. Sau khi ứng dụng được cài đặt, bạn sẽ phải đăng nhập bằng thông tin đăng nhập của mình. Sau đó, bạn phải kết nối thiết bị này với máy tính của mình, sử dụng tab có nhãn "Thêm" -> sau đó nhấp vào "cài đặt" -> sau đó nhấp vào "Thêm máy tính", thao tác này sẽ hiển thị màn hình hiển thị trong hình trên. Sau khi bạn thấy điều này, Bước tiếp theo mà bạn phải thực hiện chỉ là cắm và ghi lại thông tin mà nó yêu cầu. Sau khi kết nối thành công, bạn sẽ có thể gọi các chức năng mà bạn xác định trên máy tính trên điện thoại để điều khiển rô bốt của mình.

Bước 3: Tạo mã MATLAB một cách hợp lý để sử dụng cảm biến

Tạo mã MATLAB một cách hợp lý để sử dụng cảm biến
Tạo mã MATLAB một cách hợp lý để sử dụng cảm biến

Mã sẽ dễ tạo nhất khi phần lớn mã nằm trong vòng lặp on while, để roomba có thể cập nhật liên tục các giá trị hợp lệ mà nó đang xem xét. Nếu có lỗi, MATLAB sẽ hiển thị lỗi và vị trí nó xuất hiện trong mã, giúp việc khắc phục sự cố tương đối đơn giản.

Được thiết kế trong r2018a MATLAB, mã này sử dụng các hộp công cụ tiêu chuẩn, hộp công cụ iRobot Create, cũng như hộp công cụ di động MATLAB. Roomba được sử dụng trong ví dụ này được chỉ định là 26 và r = roomba (26) chỉ cần chạy một lần để giao tiếp hoàn toàn với roomba.

Mã số:

hàm parkassist (x) nếu x == 1

r = roomba (26)% kết nối với roomba

trong khi đúng

r.setDriveVelocity (.05,.05)% đặt roomba thành tốc độ lái xe chậm hơn

va chạm = r.getBumpers% lấy dữ liệu từ các cảm biến va đập

vách đá = r.getCliffSensors% lấy dữ liệu từ các cảm biến vách đá

light = r.getLightBumpers% lấy dữ liệu từ các cảm biến cản sáng

img = r.getImage;% đọc máy ảnh của rô bốt

red_mean = mean (mean (img (:,:, 1)))% đọc số lượng pixel màu đỏ trung bình

green_mean = mean (mean (img (:,:, 2)))% đọc số lượng pixel màu xanh lá cây trung bình

blue_mean = mean (mean (img (:,:, 3)))% đọc số lượng pixel màu xanh lam trung bình

if Impact.front == 1% đọc các cảm biến va chạm phía trước

r.stop% dừng roomba

msgbox ('Đường dẫn bị che khuất!', 'Thông báo hỗ trợ đỗ xe')% hiển thị thông báo cho biết đường dẫn bị che khuất ngắt% kết thúc vòng lặp

elseif green_mean> 150

r.stop% dừng roomba

cont = questdlg ('Tiếp tục?', 'Đường dẫn Đã hoàn thành')% hiển thị hộp câu hỏi yêu cầu tiếp tục

nếu tiếp tục == 'Có'

parkassist (1)% khởi động lại mã

khác

kết thúc

break% kết thúc vòng lặp

elseif red_mean> 140

r.turnAngle (45)% xoay roomba 45 độ

r.timeStart% bắt đầu bộ đếm thời gian

trong khi đúng

r.setDriveVelocity (.05,.05)% đặt tốc độ của roomba

time = r.timeGet% gán thời gian cho một biến

va chạm = r.getBumpers% lấy dữ liệu từ các cảm biến va đập

vách đá = r.getCliffSensors% lấy dữ liệu từ các cảm biến vách đá

light = r.getLightBumpers% lấy dữ liệu từ các cảm biến cản sáng

img = r.getImage;% đọc máy ảnh của rô bốt

red_mean = mean (mean (img (:,:, 1)))% đọc số lượng pixel màu đỏ trung bình

green_mean = mean (mean (img (:,:, 2)))% đọc số lượng pixel màu xanh lá cây trung bình

blue_mean = mean (mean (img (:,:, 3)))% đọc số lượng pixel màu xanh lam trung bình

nếu blue_mean> 120

r.moveDistance (-0,01)% di chuyển roomba về phía sau một khoảng cách đã đặt

msgbox ('Tìm thấy nước!', 'Thông báo hỗ trợ đỗ xe')% hiển thị thông báo cho biết đã tìm thấy nước r.turnAngle (-80)% xoay roomba 80 độ

break% kết thúc vòng lặp hiện tại

elseif light.rightFront> 25 || light.leftFront> 25% đọc cảm biến va chạm ánh sáng

r.moveDistance (-0.01)% di chuyển roomba về phía sau một khoảng cách đã đặt

r.turnAngle (-35)% xoay roomba 35 độ

break% kết thúc vòng lặp hiện tại

elseif vách đá.rightFront <2500 && vách đá.leftFront <2500% đọc cả hai cảm biến vách đá

r.moveDistance (-0,1)% di chuyển roomba về phía sau một khoảng cách đã đặt

r.turnAngle (-80)% xoay roomba 80 độ

break% kết thúc vòng lặp hiện tại

elseif thời gian> = 3

r.stop% dừng roomba

Contin = questdlg ('Trạm Miễn phí, Tiếp tục?', 'Thông báo Hỗ trợ Đỗ xe')% hỏi liệu roomba có nên tiếp tục không nếu continue == 'Có'

r.turnAngle (-90)% xoay roomba 90 độ

parkassist (1)% khởi động lại chức năng

khác

r.stop% dừng roomba

kết thúc

khác

kết thúc

kết thúc

elseif vách đá.rightFront <2500 && vách đá.leftFront <2500% đọc cả hai cảm biến vách đá

r.moveDistance (-0,1)% di chuyển roomba về phía sau một khoảng cách đã đặt

r.turnAngle (-90)% xoay roomba 90 độ

elseif vách đá.rightFront <2500% đọc cảm biến vách đá bên phải

r.turnAngle (-5)% hơi xoay roomba theo hướng ngược lại của cảm biến vách đá

elseif vách đá.leftFront <2500% đọc cảm biến vách đá bên trái

r.turnAngle (5)% hơi xoay roomba theo hướng ngược lại của cảm biến vách đá

khác

kết thúc

kết thúc

kết thúc

Bước 4: Kiểm tra mã và rô bốt

Kiểm tra mã và rô bốt
Kiểm tra mã và rô bốt
Kiểm tra mã và rô bốt
Kiểm tra mã và rô bốt
Kiểm tra mã và rô bốt
Kiểm tra mã và rô bốt

Sau khi mã được phát triển, bước tiếp theo là kiểm tra mã và robot. Vì có rất nhiều điều chỉnh khác nhau có thể được thực hiện trong mã, chẳng hạn như góc quay của rô bốt, tốc độ di chuyển và ngưỡng cho từng màu, cách tốt nhất để tìm ra các giá trị này cho rô bốt của bạn là kiểm tra chúng và thay đổi khi bạn đi. Đối với mỗi ngày làm việc, chúng tôi đã liên tục thay đổi các giá trị này vì một số trong số chúng phụ thuộc vào môi trường mà rô bốt của bạn đang hoạt động. Cách tốt nhất mà chúng tôi tìm thấy là đặt roomba trên con đường bạn muốn nó đi theo và một rào cản đủ cao để máy ảnh không thể phát hiện ra các màu mà bạn không muốn. Bước tiếp theo là để nó chạy và hiển thị các màu bạn muốn, khi bạn muốn nó hoàn thành nhiệm vụ đó. Khi bạn tiếp tục, nếu bạn thấy một vấn đề, điều tốt nhất nên làm là đẩy cản trước vào, làm cho nó dừng lại, sau đó thay đổi thông số mà bạn gặp sự cố.

Bước 5: Nhận biết lỗi

Với mỗi dự án đã hoàn thành, luôn có những nguồn sai sót. Đối với chúng tôi, chúng tôi đã gặp lỗi với thực tế đơn giản là robot không chính xác với góc mà nó quay, vì vậy nếu bạn bảo nó quay 45 độ thì nó sẽ không chính xác. Một nguồn lỗi khác đối với chúng tôi là đôi khi rô-bốt bị trục trặc và bạn phải khôi phục cài đặt gốc trước khi rô-bốt hoạt động trở lại. Nguyên nhân chính cuối cùng của lỗi đối với chúng tôi là cùng một mã sẽ không có tác dụng giống nhau trên các rô bốt khác nhau, vì vậy bạn có thể phải kiên nhẫn với nó và điều chỉnh cho phù hợp.

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

Bây giờ bạn có tất cả các công cụ để chơi với roomba của mình, có nghĩa là bạn có thể thao tác mã theo bất kỳ cách nào bạn muốn để đạt được mục tiêu bạn muốn. Đây sẽ là khoảng thời gian tuyệt vời nhất trong ngày của bạn, vì vậy hãy vui vẻ và lái xe an toàn!

Đề xuất: