Mục lục:

Roomba hỗ trợ phi hành gia: 4 bước
Roomba hỗ trợ phi hành gia: 4 bước

Video: Roomba hỗ trợ phi hành gia: 4 bước

Video: Roomba hỗ trợ phi hành gia: 4 bước
Video: #36. IROBOT ROOMBA 891 - ĐÁNH GIÁ & HƯỚNG DẪN SỬ DỤNG 2024, Tháng bảy
Anonim
Roomba hỗ trợ phi hành gia
Roomba hỗ trợ phi hành gia

Dự án này được thực hiện bằng cách sử dụng Raspberry Pi 3 trên iRobot Create Version 2. MATLAB được sử dụng để lập trình robot làm theo các hướng dẫn cụ thể bằng cách sử dụng cảm biến và máy ảnh của nó. Các cảm biến và máy ảnh được sử dụng để thực hiện các nhiệm vụ cụ thể theo sau một phi hành gia và cung cấp cho anh ta / cô ta khả năng liên lạc với căn cứ địa của anh ta / cô ta nếu có bất kỳ sự cố nào xảy ra.

Bước 1: Các bộ phận cần thiết

Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết
Các bộ phận cần thiết

1. iRobot Tạo phiên bản 2

IRobot Create là phần thiết yếu nhất của dự án này vì nó có thể lập trình được và có thể là một đại diện tuyệt vời cho một máy bay thám hiểm thực tế theo dõi các phi hành gia và hỗ trợ họ trong tương lai

2. Raspberry Pi 3

Raspberry Pi là thiết bị có thể lập trình được sử dụng cho dự án này. Mã được thiết kế cho Pi và phiên bản của Pi kèm theo là 3 (kiểu B). Các bo mạch lập trình khác như arduino đều có thể sử dụng được, tuy nhiên, arduino và hầu hết các bo mạch khác sẽ yêu cầu mã hóa khác với mô tả trong bước khác

3. Mô-đun máy ảnh Raspberry Pi

Kết nối không liên quan duy nhất với Raspberry Pi cần thiết cho dự án này là Mô-đun máy ảnh. Mô-đun máy ảnh là phần không thể thiếu đối với dự án này, vì roomba sẽ chỉ thực hiện các tác vụ dựa trên những gì nó nhìn thấy trong máy ảnh

4. MATLAB 2018a

Phiên bản gần đây nhất thứ hai của MATLAB, 2018a, đã được sử dụng để mã hóa liên quan đến thiết lập này. Có khả năng nhiều phiên bản khác của MATLAB sẽ hoạt động với điều này vì chương trình roomba đã tồn tại được một thời gian

Bước 2: Tệp và cấu hình máy ảnh

Cấu hình tệp và máy ảnh
Cấu hình tệp và máy ảnh

1. Kết nối Raspberry Pi và Camera với roomba

  • Pi có thể kết nối trực tiếp với iRobot bằng micro USB. Đó là tất cả những gì nó cần để sẵn sàng sử dụng. Tuy nhiên, chúng tôi khuyến nghị rằng nó nên được đặt an toàn trên roomba, chẳng hạn như trong hình ảnh trong suốt bài thuyết trình cho đến nay.
  • Máy ảnh có kết nối trực tiếp với Raspberry Pi và chúng tôi khuyên bạn nên mua hoặc chế tạo thứ gì đó để giữ máy ảnh trực tiếp lên. Sẽ không có điểm nào thực sự đối với máy ảnh nếu nó không thể được giữ ở vị trí để hiển thị những gì roomba nhìn thấy.

2. Tệp

  • Sau khi thiết lập và kết nối mọi thứ, hãy đảm bảo rằng rô-bốt đã được đặt lại và sẵn sàng hoạt động bằng cách giữ các nút "Vị trí" và "Dock" trong 10 giây cùng nhau.
  • Đây là nơi cần sử dụng MATLAB đầu tiên. Các tệp cho roomba trước tiên cần được cài đặt và tất cả những gì cần thiết cho các tệp này để chạy là mã được cung cấp trên liên kết này:
  • https://ef.engr.utk.edu/ef230-2017-08//projects/ro…

Bước 3: Thử nghiệm Roomba ban đầu

Có nhiều bước kiểm tra ban đầu được thực hiện trên roomba để đảm bảo rằng nó đang hoạt động.

1. Đảm bảo rằng bạn được kết nối với cùng một mạng WiFi như roomba. Nếu không có điều này, bạn sẽ không bao giờ kết nối qua MATLAB.

2. Tìm hiểu số lượng roomba của bạn được chỉ định để bạn có thể kết nối cụ thể với roomba mà bạn đã chọn. Ví dụ: nếu số của roomba của bạn là 30, bạn sẽ kết nối với nó bằng cách gõ roomba (30) vào cửa sổ lệnh trong MATLAB.

3. Roomba có thể được điều khiển thông qua các cấu trúc trong MATLAB. Ví dụ: nếu bạn đặt mã của mình cho roomba (30) thành biến 'r', rô bốt có thể được di chuyển về phía trước bằng lệnh r.moveDistance (0,2, 0,1).

4. Có nhiều lệnh khác nhau có thể được giao tiếp với roomba và bạn có thể thấy những lệnh này bằng cách gõ 'doc roomba' vào cửa sổ lệnh.

5. Tất cả các cảm biến đo ánh sáng, va chạm và vách đá đều có thể được đọc bằng cách sử dụng các lệnh được thấy trong 'doc roomba' nhưng một cách để có menu liên tục, gọn gàng để xem dữ liệu cảm biến có thể được nhìn thấy bằng cách sử dụng 'r.testSensors '.

6. Sau khi kiểm tra tất cả những điều này, phần mềm thu thập hình ảnh của robot có thể được sử dụng để đọc và xem các hình ảnh đã chụp. Mã cơ bản cho điều này sẽ là img = r.getImage và imshow (img);.

7. Giá trị RGB của hình ảnh có thể được tìm thấy với các mã red_mean = mean (mean (img (:,:, 1)));

green_mean = mean (mean (img (:,:, 2))); và blue_mean = mean (mean (img (:,:, 3)));.

Bước 4: Ví dụ về mã MATLAB

Mã MATLAB mẫu
Mã MATLAB mẫu

Tại thời điểm này, bạn đã sẵn sàng sử dụng các cảm biến và phần mềm chụp ảnh để tạo vòng quay của riêng mình trên Mars Rover Nguyên mẫu có sự hỗ trợ của con người. Ví dụ của chúng tôi là theo dõi phi hành gia bằng cách theo dõi màu trắng và di chuyển về phía nó. Robot sẽ phát ra tiếng bíp nếu các cảm biến của nó đang đọc các giá trị cao để phi hành gia có thể đặt lại robot nếu nó bị mắc kẹt hoặc đi nhặt nó và đặt lại nếu nó bị mắc kẹt trên vách đá. Tuy nhiên, nó chỉ đọc những lỗi này miễn là nó nhìn thấy màu trắng. Nếu không thể nhìn thấy màu trắng, robot sẽ vào chế độ lỗi. Nó được lập trình để gửi hai loại email khác nhau trở lại cơ sở chính tùy thuộc vào những gì nó nhìn thấy. Nếu nó nhìn thấy màu da của phi hành gia, điều đó rõ ràng là không tốt, vì vậy nó sẽ cảnh báo căn cứ tại nhà nếu phi hành gia có làn da lộ ra với bộ đồ bị trục trặc. Thông điệp khác được chuẩn bị nếu phi hành gia chỉ đơn giản là biến mất khỏi tầm mắt. Nếu không có màu trắng hoặc màu da hiển thị cho máy ảnh, rô bốt sẽ quay xung quanh và gửi một email khác, nhưng khác. Những hình ảnh mà roomba không thể nhìn thấy phi hành gia sẽ được gửi cùng với thông báo trong email. Mã cho dự án của chúng tôi được hiển thị bên dưới:

cho i = 1:.1: 3 img = r.getImage; image (img) red_mean = mean (mean (img (:,:, 1))); green_mean = mean (mean (img (:,:, 2))); blue_mean = mean (mean (img (:,:, 3))); if red_mean> 110 && red_mean 110 && blue_mean 110 && green_mean0 || va chạm.left> 0 || va chạm.front> 0 r.beep () r.beep () r.beep () r.stop elseif vách đá.left <10 || vách đá.leftFront <10 || vách đá.rightFront <10 || vách đá.right700 || light.leftFront> 700 || light.leftCenter> 700 || light.rightCenter> 700 || light.rightFront> 700 || light.right> 700 r.beep () r.beep () r.beep () r.beep () r.beep () r.stop else for i = 1: 2 r.moveDistance (0,2, 0,1) r. setDriveVelocity (.3,.2) r.stop end end end nếu green_mean <35 && blue_mean <35% hiển thị màu da (cần được điều chỉnh dựa trên màu da của phi hành gia) r.beep (); r.beep (); r.beep (); mail = '[email protected]'; % gửi email cho thấy bộ đồ đã tắt psswd = 'yeah'; host = 'smtp.gmail.com'; cổng = '465'; emailto = '[email protected]'; m_subject = 'chủ đề'; m_text = 'test'; setpref ('Internet', 'E_mail', thư); setpref ('Internet', 'SMTP_Server', máy chủ lưu trữ); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', thư); props.setProperty ('mail.smtp.host', máy chủ lưu trữ); props.setProperty ('mail.smtp.port', cổng); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', cổng); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, "Help!", "Đồng phục phi hành gia đã tắt!", img); end if red_mean 135 || green_mean 135 || blue_mean 135 for j = 1: 2% nếu robot không tìm thấy màu trắng r.turnAngle (360) mail = '[email protected]'; psswd = 'vâng'; host = 'smtp.gmail.com'; cổng = '465'; emailto = '[email protected]'; m_subject = 'chủ đề'; m_text = 'test'; setpref ('Internet', 'E_mail', thư); setpref ('Internet', 'SMTP_Server', máy chủ lưu trữ); setpref ('Internet', 'SMTP_Username', mail); setpref ('Internet', 'SMTP_Password', psswd); props = java.lang. System.getProperties; props.setProperty ('mail.smtp.user', thư); props.setProperty ('mail.smtp.host', máy chủ lưu trữ); props.setProperty ('mail.smtp.port', cổng); props.setProperty ('mail.smtp.starttls.enable', 'true'); props.setProperty ('mail.smtp.debug', 'true'); props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.port', cổng); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.fallback', 'false'); sendmail (emailto, 'Help!', 'Không thể tìm thấy phi hành gia!', img); r.stop end end end

Rõ ràng là nó lộn xộn ở đây, nhưng nó sẽ tốt hơn một khi được sao chép. Mật khẩu và email cho việc này rõ ràng sẽ được cung cấp bởi những người thực hiện dự án này.

Tuy nhiên, ví dụ của chúng tôi chỉ là một trong nhiều cách để làm cho nó phù hợp với mọi người. Có nhiều việc khác nhau phải làm, bạn có thể phù hợp với bản thân.

Đề xuất: