Mục lục:

Robot theo dõi bóng: 8 bước
Robot theo dõi bóng: 8 bước

Video: Robot theo dõi bóng: 8 bước

Video: Robot theo dõi bóng: 8 bước
Video: Khi bạn thua về cơ bắp thì hãy tập trung vào trí óc| Ben Eagle | Eagles Training Center | #Shorts 2024, Tháng mười một
Anonim
Robot theo dõi bóng
Robot theo dõi bóng
Robot theo dõi bóng
Robot theo dõi bóng
Robot theo dõi bóng
Robot theo dõi bóng

Vì vậy, trong phần này, tôi sẽ nói làm thế nào để tạo ra một robot theo dõi bóng đó là một robot sẽ xác định một quả bóng và theo dõi nó. Về cơ bản, nó là một kỹ thuật giám sát tự động có thể được sử dụng trong thế giới hiện đại. Vì vậy, hãy để chúng tôi chỉ cần tham gia và bắt đầu xây dựng…

LƯU Ý: Đây là bài tập được nộp cho Đại học Deakin, Trường CNTT, Phát triển Hệ thống Nhúng SIT-210

Quân nhu

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Bước 1: Giới thiệu

Giới thiệu
Giới thiệu

Việc giám sát ngày nay cung cấp một nhược điểm lớn là nó phụ thuộc vào sự tham gia của con người mà như chúng ta đều biết có thể dễ bị phân tâm, vì vậy điều quan trọng nhất của chúng tôi là phát hiện ra một hệ thống có thể giám sát các khu vực một cách tự động và liên tục. Và chúng tôi cũng muốn xác định những điều và nguy hiểm đáng ghét hoặc không mong muốn đồng thời đưa ra quyết định và phản ứng phù hợp. Vì vậy, theo dõi đối tượng với việc sử dụng các hệ thống thông minh và máy tính là điều cần thiết và quan trọng để đạt được giám sát tự động.

Bất kỳ hệ thống giám sát ngoài trời nào cũng phải có khả năng theo dõi các đối tượng di chuyển trong trường nhìn của nó, phân loại các đối tượng này và phát hiện một số hoạt động của chúng. Tôi đã phát triển một phương pháp để theo dõi và phân loại các đối tượng này trong các tình huống thực tế. Theo dõi đối tượng trong một máy ảnh duy nhất được thực hiện bằng cách sử dụng phép trừ nền, tiếp theo là tương ứng vùng. Điều này tính đến nhiều tín hiệu bao gồm vận tốc, kích thước và khoảng cách của các hộp giới hạn.

Bước 2: Vật liệu và đồ mềm được sử dụng trong dự án này

Vật liệu và đồ mềm được sử dụng trong dự án này
Vật liệu và đồ mềm được sử dụng trong dự án này
Vật liệu và đồ mềm được sử dụng trong dự án này
Vật liệu và đồ mềm được sử dụng trong dự án này
Vật liệu và đồ mềm được sử dụng trong dự án này
Vật liệu và đồ mềm được sử dụng trong dự án này

Các thành phần phần cứng được sử dụng:

  • Raspberry Pi (x1)
  • Mô-đun máy ảnh Raspberry Pi (x1)
  • Cảm biến siêu âm (x3)
  • Trình điều khiển động cơ SparkFun Dual H-Bridge L298 (x1)
  • Động cơ DC (x1)
  • Bảng mạch (x1)
  • Kết nối dây

Phần mềm được sử dụng:

OpenCV

Dụng cụ cầm tay:

Python

Bước 3: Làm gì?

Bất kỳ hệ thống giám sát ngoài trời nào cũng phải có khả năng theo dõi các đối tượng di chuyển trong trường nhìn của nó, phân loại các đối tượng này và phát hiện một số hoạt động của chúng. Tôi đã phát triển một phương pháp để theo dõi và phân loại các đối tượng này trong các tình huống thực tế. Theo dõi đối tượng trong một máy ảnh duy nhất được thực hiện bằng cách sử dụng phép trừ nền, tiếp theo là tương ứng vùng. Điều này tính đến nhiều tín hiệu bao gồm vận tốc, kích thước và khoảng cách của các hộp giới hạn.

Điều quan trọng trong khi phát hiện hình ảnh từng khung hình là tránh bất kỳ sự cố giảm khung hình nào vì khi đó bot có thể rơi vào trạng thái lấp lửng nếu bot không nhận thấy hướng chuyển động của quả bóng do khung hình bị giảm. Nếu quả bóng đi ra khỏi phạm vi của máy ảnh, nó sẽ chuyển sang trạng thái mà chúng ta gọi là trạng thái lấp lửng, trong trường hợp đó, bot sẽ quay 360 độ để xem không gian xung quanh nó cho đến khi quả bóng quay trở lại khung hình máy ảnh và sau đó bắt đầu di chuyển theo hướng của nó.

Để phân tích hình ảnh, tôi sẽ lấy từng khung hình và sau đó che nó bằng màu sắc cần thiết. Sau đó, tôi tìm tất cả các đường viền và tìm đường viền lớn nhất trong số chúng và ràng buộc nó thành một hình chữ nhật. Và hiển thị hình chữ nhật trên hình ảnh chính và tìm tọa độ của tâm hình chữ nhật.

Cuối cùng, bot cố gắng đưa tọa độ của quả bóng về tâm trục tọa độ của nó. Đây là cách hoạt động của robot. Điều này có thể được nâng cao hơn nữa bằng cách sử dụng một thiết bị IoT như một hạt photon có thể cho phép bạn được thông báo khi một vật được phát hiện và rô bốt đang theo dõi nó hoặc khi rô bốt đã mất dấu vết của nó và bây giờ đang quay trở lại cơ sở.

Đối với mục đích xử lý hình ảnh, bạn cần cài đặt phần mềm OpenCV trên raspberry pi của mình, điều này khá phức tạp đối với tôi.

Bạn có thể nhận được bất kỳ thông tin cần thiết nào để cài đặt OpenCV thông qua liên kết này: bấm vào đây

Bước 4: Sơ đồ

Image
Image
Sơ đồ
Sơ đồ
Sơ đồ
Sơ đồ

Ở trên tôi đã cung cấp các sơ đồ cho dự án của mình và cùng với nó là Bảng mạch in (PCB).

Và đây là một số kết nối chính mà bạn cần thực hiện:

• Trước hết, mô-đun Máy ảnh Raspberry Pi được kết nối trực tiếp với Raspberry Pi.

• Các cảm biến siêu âm VCC được kết nối với đầu cuối chung là với GND (mặt đất) và hai cổng còn lại của cảm biến siêu âm được kết nối với các chân GPIO trên Raspberry Pi.

• Các Động cơ được kết nối bằng Cầu H.

• Nguồn được cung cấp bằng Pin.

Tôi cũng đã thêm video có thể giúp hiểu được hoạt động của cảm biến siêu âm và cách hoạt động của nó.

và bạn cũng có thể theo liên kết này nếu bạn không thể tìm thấy video trên.

Bước 5: Làm thế nào để làm?

Tôi đã thực hiện dự án này mô tả một robot cơ bản có thể theo dõi một quả bóng. Robot sử dụng một camera để xử lý hình ảnh bằng cách lấy khung hình và theo dõi quả bóng. Để theo dõi quả bóng, các tính năng khác nhau như màu sắc, kích thước, hình dạng được sử dụng.

Robot tìm thấy một màu được mã hóa cứng và sau đó tìm kiếm quả bóng có màu đó và theo dõi nó. Tôi đã chọn Raspberry Pi làm bộ điều khiển vi mô trong dự án này vì nó cho phép chúng tôi sử dụng mô-đun máy ảnh của nó và mang lại tính linh hoạt cao trong mã vì nó sử dụng ngôn ngữ python rất thân thiện với người dùng và nó cũng cho phép chúng tôi sử dụng thư viện OpenCV để phân tích hình ảnh.

Cầu H đã được sử dụng để chuyển hướng quay của động cơ hoặc để dừng chúng.

Để phân tích hình ảnh, tôi sẽ lấy từng khung hình và sau đó che nó bằng màu sắc cần thiết. Sau đó, tôi tìm tất cả các đường viền và tìm đường viền lớn nhất trong số chúng và ràng buộc nó thành một hình chữ nhật. Và hiển thị hình chữ nhật trên hình ảnh chính và tìm tọa độ của tâm hình chữ nhật.

Cuối cùng, bot cố gắng đưa tọa độ của quả bóng về tâm trục tọa độ của nó. Đây là cách hoạt động của robot. Điều này có thể được nâng cao hơn nữa bằng cách sử dụng một thiết bị IoT như hạt photon có thể cho phép bạn được thông báo khi một vật được phát hiện và rô bốt đang theo dõi nó hoặc khi rô bốt mất dấu vết và hiện đang quay trở lại cơ sở. Và để làm điều này, chúng tôi sẽ sử dụng một nền tảng phần mềm trực tuyến kết nối các thiết bị và cho phép chúng thực hiện các hành động nhất định trên các trình kích hoạt cụ thể là trình kích hoạt IFTTT.

Bước 6: Mã giả

Mã giả
Mã giả

Đây là mã giả cho phần phát hiện sử dụng OpenCV nơi chúng tôi phát hiện một quả bóng.

Bước 7: Mã

Mã số
Mã số
Mã số
Mã số
Mã số
Mã số
Mã số
Mã số

Trên đây là các đoạn mã và dưới đây là mô tả chi tiết của đoạn mã.

# nhập các gói cần thiết

CHÚNG TÔI NHẬP KHẨU TẤT CẢ CÁC GÓI CẦN THIẾT

from picamera.array import PiRGBArray # Vì có vấn đề về độ phân giải trong raspberry pi, sẽ không thể chụp các khung hình bằng VideoCapture

từ picamera nhập PiCamera nhập RPi. GPIO dưới dạng thời gian nhập GPIO nhập numpy dưới dạng np

BÂY GIỜ CHÚNG TÔI THIẾT LẬP PHẦN CỨNG VÀ GỬI CÁC PIN ĐƯỢC KẾT NỐI TRÊN RASPBERRY PI

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 # Cảm biến siêu âm #Left

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 # Cảm biến siêu âm mặt trước

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 # Cảm biến siêu âm #Right

GPIO_ECHO3 = 35

MOTOR1B = 18 #Left Motor

MOTOR1E = 22

MOTOR2B = 21 #Right Motor

MOTOR2E = 19

LED_PIN = 13 #Nếu tìm thấy bóng thì đèn sẽ sáng

# Đặt chân làm đầu ra và đầu vào

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Kích hoạt GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Kích hoạt GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Kích hoạt GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# Đặt trình kích hoạt thành Sai (Thấp)

GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)

CHỨC NĂNG NÀY SỬ DỤNG TẤT CẢ CÁC CẢM BIẾN SIÊU ÂM THU THẬP KHOẢNG CÁCH TỪ CÁC ĐỐI TƯỢNG QUA BOT CỦA CHÚNG TÔI

# Cho phép mô-đun ổn định

def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Đặt chân làm đầu ra và đầu vào GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Kích hoạt GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Đặt kích hoạt thành Sai (Thấp) GPIO.output (GPIO_TRIGGER, False) # Cho phép mô-đun giải quyết thời gian. đầu ra (GPIO_TRIGGER, False) begin = time.time () trong khi GPIO.input (GPIO_ECHO) == 0 và time.time ()

HÃY ĐỂ CÁC ĐỘNG CƠ DC LÀM VIỆC VỚI RASPBERRY PI

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)

XÁC ĐỊNH CÁC CHỨC NĂNG ĐỂ VẬN HÀNH ROBOT VÀ LÀM cho nó di chuyển theo các hướng khác nhau

def forward ():

GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def lùi (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)

def stop ():

GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)

LÀM CHO MÔ ĐUN MÁY ẢNH HOẠT ĐỘNG VÀ ĐIỀU CHỈNH CÀI ĐẶT

# CAMERA CAPTURE

#initialize camera và lấy tham chiếu đến camera chụp ảnh raw = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # allow camera đến thời gian khởi động. ngủ (0,001)

NGAY BÂY GIỜ THỰC HIỆN VIỆC CHÍNH KHI BOT THEO BÓNG VÀ TRÁNH BẤT KỲ ĐỐI TƯỢNG NÀO TRÊN ĐƯỜNG

trong khi (1 <10): {# khoảng cách đến từ khoảng cách cảm biến siêu âm phía trướcC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) # khoảng cách đến từ khoảng cách cảm biến siêu âm bên phảiR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) # khoảng cách đến từ khoảng cách cảm biến siêu âm bên tráiL = sonar (GPIO_TRIGGER1, GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0,00625) stop () time.sleep (0,0125) phía trước () time.sleep (0,00625) stop () time.sleep (0,0125) # while found == 0: leftturn () time.sleep (0,00625) elif distanceL> = 8: leftturn () time.sleep (0,00625) stop () time.sleep (0,0125) forward () time.sleep (0,00625) stop () time.sleep (0,0125) rightturn () time.sleep (0,00625) stop () time.sleep (0,0125) else: dừng () time.sleep (0,01) else: #otherwise nó di chuyển về phía trước () time.sleep (0,00625) nếu (distanceC> 10): #it đưa tọa độ của quả bóng đến tâm trục tưởng tượng của máy ảnh. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0,025) forward () time.sleep (0,00003125) stop () time.sleep (0,00625) khác: dừng () time.sleep (0,01)

khác:

# nếu nó bám vào bóng và quá gần, nó sẽ làm sáng đèn led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # xóa luồng để chuẩn bị cho Khung tiếp theo }

LÀM NHỮNG VIỆC VỆ SINH CẦN THIẾT

GPIO.cleanup () #free tất cả các chân GPIO

Bước 8: Liên kết bên ngoài

Liên kết đến video trình diễn: bấm vào đây (Youtube)

Liên kết đến Mã trên Git-hub: nhấp vào đây (Git-Hub)

Đề xuất: