Mục lục:
Video: Roomba với MATLAB: 4 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Dự án này sử dụng MATLAB và rô bốt có thể lập trình iRobot Create2. Bằng cách đưa kiến thức của chúng tôi về MATLAB vào thử nghiệm, chúng tôi có thể lập trình Create2 để giải thích hình ảnh và phát hiện tín hiệu. Chức năng của robot chủ yếu phụ thuộc vào ứng dụng di động MATLAB và mô-đun máy ảnh Raspberry Pi.
Bước 1: Các bộ phận và vật liệu
1. iRobot Create, Phiên bản 2
- Đây là một robot có thể lập trình trông giống như một Roomba. Hãy lưu ý rằng sản phẩm này từ iRobot không phải là máy hút chân không. Nó dành cho người dùng lập trình tùy chỉnh.
2. MATLAB 2017a
- Hầu hết các phiên bản cũ hơn sẽ tương thích với mã chúng tôi đã sử dụng bên dưới. MATLAB sẽ xác định một lệnh không tương thích với phiên bản bạn có và sẽ đề xuất một lệnh phù hợp nhất.
3. Raspberry Pi 3 Model B, Phiên bản 1.2
- Kiểm tra xem Raspberry Pi nào tương thích với iRobot của bạn. Xem liên kết này để được hỗ trợ thêm: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Phần hướng dẫn này giả định rằng bạn đang làm việc với Raspberry Pi được lập trình trước. Xin lưu ý rằng bạn sẽ cần làm việc với số Pi được lập trình trước để các bước sau hoạt động. Sử dụng số Pi được lập trình trước sẽ cho phép bạn thực hiện tất cả mã hóa của mình trong MATLAB một mình.
4. Mô-đun máy ảnh V2 (dành cho Raspberry Pi)
- Bạn có thể ngạc nhiên; Mặc dù có kích thước lớn, nhưng Mô-đun Máy ảnh Raspberry Pi có chất lượng rất tốt. Đây là lựa chọn rẻ nhất và tương thích nhất cho dự án này.
Tùy chọn: Chân đế in 3D. Điều này được sử dụng để ổn định máy ảnh. Nó không ảnh hưởng đến chức năng của robot, nhưng nó sẽ giúp hỗ trợ mã hóa của bạn nếu bạn muốn sử dụng dữ liệu hình ảnh để nhận dạng màu sắc và / hoặc đối tượng.
Bước 2: Cấu hình
1. Kết nối Raspberry Pi và mô-đun máy ảnh (Phần cứng)
- Để cấp nguồn cho Raspberry Pi, bạn sẽ cần chạy một đầu micro USB đầu đực đến cổng nguồn cái trên bộ vi điều khiển. Tùy chọn: Có thể sử dụng bộ điều chỉnh điện áp để đảm bảo điện áp không vượt quá 5V. Sau khi cấp nguồn cho Raspberry Pi, bạn có thể kết nối nó với rô bốt của mình bằng cách chạy USB đầu nam a từ bo mạch chủ đến cổng USB A trên vi điều khiển.
- Sau khi kết nối Pi với Roomba, camera đã sẵn sàng được lắp đặt. Mô-đun Máy ảnh sẽ nhỏ hơn nhiều so với bạn mong đợi. Lưu ý rằng ống kính được gắn vào một cảm biến và một dải băng trắng kéo dài từ máy ảnh. KHÔNG tháo hoặc làm rách ruy-băng! Đây là cáp bạn cần để kết nối nó với Raspberry Pi. Đầu tiên, giữ phần cuối của dải băng và tìm các đầu nối màu bạc và cáp màu xanh lam. Đây là những mặt đối lập. Tiếp theo, tìm khe giữa cổng ethernet và HDMI trên Raspberry Pi của bạn. Chú ý có một chiếc khóa nhỏ màu trắng bao phủ bên ngoài. Từ từ nhấc khóa lên, nhưng không tháo khóa ra khỏi khe cắm, vì khóa sẽ bị kẹt và hỏng vĩnh viễn. Khi bạn đã mở khóa, hãy lấy dải băng và hướng các đầu nối màu bạc vào cổng HDMI. Mặt màu xanh sẽ đối diện với cổng Ethernet. Từ từ trượt dải băng vào khe trong khi nó vẫn đang mở khóa. Bạn không cần phải ép nó vào khe. Sau khi lắp, đẩy khóa xuống. Nếu máy ảnh của bạn được cố định đúng cách, bạn sẽ có thể (nhẹ nhàng) kéo dải băng và cảm thấy căng. Ruy-băng không được lỏng lẻo. Sau khi kết nối máy ảnh của bạn với Pi, bạn có thể nhận thấy nó lỏng lẻo như thế nào. Đây là lý do tại sao chúng tôi sử dụng ngàm in 3D để cố định nó. Lựa chọn của bạn là xác định loại vật liệu bạn muốn sử dụng để giữ cho máy ảnh của bạn luôn ổn định để có hình ảnh chất lượng cao.
2. Cài đặt tệp thích hợp và kết nối Roomba với máy tính của bạn Sau khi tất cả phần cứng của bạn được định cấu hình, bây giờ bạn có thể chuyển sang cài đặt MATLAB cùng với m-tệp liên quan cho phép bạn giao tiếp với rô bốt. Để thực hiện việc này, hãy mở MATLAB và tạo một thư mục mới để giữ tất cả các tệp liên quan lại với nhau. Sử dụng tập lệnh này để cài đặt / cập nhật các tệp cần thiết:
- Tất cả các tệp bây giờ sẽ hiển thị trong thư mục đã tạo của bạn. Nhấp chuột phải vào cửa sổ Thư mục Hiện tại và chọn ‘Thêm vào đường dẫn’ để thêm đường dẫn đó vào danh sách thư mục nơi MATLAB tìm kiếm tệp. Đảm bảo tất cả các tệp của bạn ở đúng đường dẫn.
3. Sau khi các tệp được cài đặt, bây giờ bạn có thể bắt đầu kết nối với rô bốt của mình. Bắt đầu bằng cách bật rô-bốt của bạn và sau đó khôi phục cài đặt gốc trực tiếp sau khi khởi động (đừng quên khôi phục cài đặt gốc rô-bốt của bạn mọi lúc trước và sau khi sử dụng). Thứ hai, kết nối cả robot và máy tính xách tay của bạn vào cùng một mạng wifi. Sau đó, chúng ta sẽ nói chuyện với Raspberry Pi được lập trình trước thông qua MATLAB bằng cách gọi Roomba bằng tên đã cho của nó và chức năng roomba. Ví dụ: tôi sẽ kết nối với rô bốt 28 bằng dòng sau: R = roomba (28).
- Lưu ý cách tôi đã gán đối tượng cho một biến R. Bây giờ tôi có thể truy cập các hàm Roomba được liên kết từ tệp cài đặt bằng cách coi biến R giống như một cấu trúc.
- R.turnAngle (90) Nếu mọi thứ suôn sẻ, một giai điệu âm nhạc sẽ phát ra, xác nhận kết nối.
Bước 3: Logic MATLAB
Tài liệu PDF ở cuối bước này là biểu đồ luồng logic chi tiết cho quá trình viết mã của chúng tôi trong MATLAB. Chúng tôi đã kích hoạt các cảm biến vách đá, ánh sáng và va chạm nhẹ để cho phép robot giao tiếp với chúng tôi khi nó phát hiện một vật thể trong vùng lân cận. Ví dụ: khi robot di chuyển về phía trước, cảm biến ánh sáng của nó sẽ quét các vật thể trên đường đi của nó theo vectơ mà nó đang di chuyển. Chúng tôi đã chọn một ngưỡng khoảng cách cho robot để khi nó đến gần một vật thể, nó sẽ đảo ngược thay vì va chạm với nó. Robot của chúng tôi cũng được định cấu hình với Twitter, mà chúng tôi đã chỉ định trong quá trình mã hóa của mình (điều này sẽ được hiển thị bên dưới).
Để nâng cao trải nghiệm, chúng tôi đã sử dụng ứng dụng MATLAB trên thiết bị di động của mình để chúng tôi có thể điều khiển chuyển động của rô-bốt chỉ bằng cách nghiêng điện thoại của mình. Đây là một hoạt động tùy chọn, vì bạn chắc chắn có thể cho rô bốt di chuyển bằng cách sử dụng lệnh moveDistance trong đoạn mã MATLAB để thay thế. Hãy nhớ rằng việc sử dụng các lệnh MATLAB để điều khiển rô bốt của bạn được ưu tiên nếu mục tiêu của bạn là chính xác. Nếu bạn muốn nhắm vào rô bốt của mình để máy ảnh chụp ảnh ở một vị trí cụ thể, thì tốt hơn là nên mã các chuyển động của rô bốt trong MATLAB. Trong khi giải trí, việc sử dụng ứng dụng MATLAB để điều khiển robot của bạn là điều không mong muốn về độ chính xác.
Code ra lệnh cho Roomba thực hiện thiết lập cơ bản sau đó tiếp tục qua một vòng lặp liên tục. Ban đầu máy tính xách tay sẽ thiết lập liên kết với Roomba bằng lệnh Roomba (). Nó cũng thiết lập kết nối twitter bằng lệnh webwrite () trong MATLAB. Vòng lặp chứa năm luồng logic chính tùy thuộc vào môi trường xung quanh Roomba. Đầu tiên, Roomba kiểm tra các chướng ngại vật và điều chỉnh ngược lại nếu phát hiện thấy chướng ngại vật. Được chèn trong vòng lặp đó là đường dẫn thứ hai cảnh báo người dùng nếu Roomba đang bị mang đi. Một tiện ích quan trọng trong Martian Warzone khắc nghiệt. Sau khi Roomba xác định vị trí của nó là an toàn, nó sẽ nhìn vào thiết bị di động để xác định chuyển động tiếp theo của nó. Nếu thiết bị di động bị nghiêng về phía trước, nó sẽ tính toán vận tốc cơ bản tùy thuộc vào mức độ nghiêm trọng của phép đo cuộn hơn là điều chỉnh tốc độ bánh xe riêng lẻ để quay dựa trên cao độ. Điện thoại cũng có thể di chuyển Roomba theo chiều ngược lại. Trạng thái thiết bị di động trung tính cổng hai đường dẫn cuối cùng. Roomba đang nghỉ ngơi sẽ tìm kiếm cờ Alien và cảnh báo người dùng tương ứng.
Dưới đây là mã của chúng tôi (hoàn thành trong MATLAB 2017a)
% đầu vào: Dữ liệu định hướng từ thiết bị kết nối wifi, máy ảnh
% thông tin, dữ liệu cảm biến
% đầu ra: chuyển động được điều khiển bởi thiết bị kết nối wifi và chuyển động
% được kiểm tra an toàn bằng cách đọc dữ liệu cảm biến. Nếu máy ảnh phát hiện
% một cờ người ngoài hành tinh thì roomba phản hồi bằng cách tweet cờ đối phương
% đã được phát hiện.
% mục đích: thiết bị của chúng tôi hoạt động không có mục đích ngoại trừ để bảo vệ những người
% đã tạo ra nó, nó phục vụ người tạo ra nó và làm
% chính xác những gì nó đã nói.
% Cách sử dụng: về cơ bản chương trình sẽ tự chạy.
xóa tất cả, đóng tất cả, clc
% Khởi tạo đối tượng và biến
r = roomba (28);
m = mobiledev;
% use response = webwrite (hostname, data)
hostname = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';
API = 'SGZCTNQXCWAHRCT5';
tweet = 'RoboCop đang hoạt động … Đang chờ lệnh';
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (tên máy chủ, dữ liệu);
% liên tục chạy vòng lặp
trong khi 1 == 1
% Cấu trúc chứa dữ liệu tương đối
o = m. định hướng; % hướng của thiết bị di động
light = r.getLightBumpers (); % Giá trị bộ đệm nhẹ
a = r.getCliffSensors (); Giá trị cảm biến% CLiff
va chạm = r.getBumpers (); % Cảm biến đệm
% kiểm tra phần đệm
nếu va chạm.right == 1 || va chạm.left == 1 || va chạm.front == 1
r.moveDistance (-. 2,.2);
% kiểm tra cảm biến ánh sáng
elseif light.left> 60 || light.leftFront> 60 || light.leftCenter> 60 || light.right> 60 || light.rightFront> 60 || light.rightCenter> 60
r.moveDistance (-. 2,.2);
% kiểm tra Cảm biến vách đá
% Tín hiệu Chống trộm và thông báo
elseif a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300
r.stop ();
r.beep ();
tweet = 'RoboCop đã được dỡ bỏ!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (tên máy chủ, dữ liệu);
% Hoạt động tránh vách đá bình thường
elseif a.left <300 || a.phải <300 || a.leftFront <300 || a.rightFront <300
r.moveDistance (-. 2,.2);
% Roomba đã vượt qua kiểm tra và bây giờ sẽ chạy với hoạt động bình thường.
% Ban đầu cuộn của thiết bị được đo và trở thành cơ sở
% vận tốc sau đó được sử dụng để tính toán tốc độ bánh xe
%Chuyển động về phía trước
elseif o (3)> = 0 && o (3) <= 60
baseVel = (-. 5/60) * (o (3) -60);
nếu o (2)> = - 70 && o (2) <0
r.setDriveVelocity (baseVel + (. 3/50) * abs (o (2)), baseVel - (. 3/50) * abs (o (2)));
elseif o (2) = 0
r.setDriveVelocity (baseVel - (. 3/50) * abs (o (2)), baseVel + (. 3/50) * abs (o (2)));
khác r.stop
kết thúc
% Chuyển động ngược
elseif o (3)> 100 && o (3) <150
r.setDriveVelocity (-. 2, -.2)
r.beep ();
r.beep ();
% rest roomba sẽ tìm kiếm Cờ người ngoài hành tinh được đánh dấu là hình lưỡi liềm
% màu xanh lá cây Mảnh giấy
khác
r.stop
img = r.getImage (); % chụp ảnh
ngưỡng = graythresh (img (200: 383,:, 2)) +. 1; % calc mức xanh
nếu ngưỡng>.42
tweet = 'Đốm kẻ thù !!'
data = strcat ('api_key =', API, '& status =', tweet);
reponse = webwrite (tên máy chủ, dữ liệu);
khác
r.stop
kết thúc
kết thúc
kết thúc
Bước 4: Kết luận
Hãy nhớ rằng, bạn có thể sử dụng tập lệnh mà chúng tôi đã viết ở trên, nhưng bạn luôn có thể thay đổi nó để phù hợp với nhu cầu của mình. Nó không cần phải được điều khiển bởi điện thoại của bạn! (Tuy nhiên, nó làm cho nó thú vị hơn.) Chọn phương pháp bạn muốn sử dụng để điều khiển rô bốt của mình. Lái xe xung quanh với robot của bạn và tận hưởng!
Đề xuất:
Chỉnh sửa ảnh nhanh chóng và tuyệt vời với Picasa: 10 bước (với ảnh)
Chỉnh sửa ảnh nhanh chóng và tuyệt vời với Picasa: Với một máy ảnh kỹ thuật số tuyệt vời, trách nhiệm lớn là quản lý hàng nghìn bức ảnh. Điều này có thể là một khó khăn, đặc biệt nếu bạn muốn sử dụng chúng để ghi lại một quy trình cho Các tài liệu hướng dẫn. Tôi biết cách sử dụng Photoshop, nhưng thường xuyên hơn là tôi chuyển sang sử dụng G
Cách tháo rời máy tính với các bước đơn giản và hình ảnh: 13 bước (có hình ảnh)
Cách tháo rời máy tính với các bước đơn giản và hình ảnh: Đây là hướng dẫn về cách tháo rời PC. Hầu hết các thành phần cơ bản là mô-đun và dễ dàng loại bỏ. Tuy nhiên, điều quan trọng là bạn phải có tổ chức về nó. Điều này sẽ giúp bạn không bị mất các bộ phận và cũng giúp cho việc lắp ráp lại
Arduino Uno: Hình ảnh động bitmap trên Tấm chắn hiển thị màn hình cảm ứng TFT ILI9341 Với Visuino: 12 bước (có Hình ảnh)
Arduino Uno: Ảnh động bitmap trên Tấm chắn hiển thị màn hình cảm ứng TFT ILI9341 Với Tấm chắn màn hình cảm ứng TFT dựa trên Visuino: ILI9341 là Tấm chắn hiển thị chi phí thấp rất phổ biến cho Arduino. Visuino đã hỗ trợ chúng trong một thời gian khá dài, nhưng tôi chưa bao giờ có cơ hội viết Hướng dẫn về cách sử dụng chúng. Tuy nhiên, gần đây có rất ít người hỏi
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: 7 bước (với hình ảnh)
Ánh sáng video thân mật / Ánh sáng chụp ảnh cầm tay: Tôi biết bạn đang nghĩ gì. Bằng cách " thân mật, " Ý tôi là chiếu sáng cận cảnh trong các tình huống ánh sáng khó - không nhất thiết dành cho " các tình huống thân mật. &Quot; (Tuy nhiên, nó cũng có thể được sử dụng cho việc đó …) Là một nhà quay phim thành phố New York - hoặc
Tạo hình ảnh liền mạch theo chiều ngang hoặc chiều dọc (đối với "GIMP").: 11 bước (với hình ảnh)
Tạo hình ảnh liền mạch theo chiều ngang hoặc chỉ theo chiều dọc (đối với "GIMP"): Nếu bạn dùng thử plugin "Tạo liền mạch" trong GIMP, nó sẽ giúp hình ảnh liền mạch theo cả chiều ngang và chiều dọc cùng một lúc. Nó sẽ không cho phép bạn làm cho nó liền mạch chỉ trong một chiều. Hướng dẫn này sẽ giúp bạn làm cho