Mục lục:
- Quân nhu
- Bước 1: Giới thiệu
- Bước 2: Vật liệu và đồ mềm được sử dụng trong dự án này
- Bước 3: Làm gì?
- Bước 4: Sơ đồ
- Bước 5: Làm thế nào để làm?
- Bước 6: Mã giả
- Bước 7: Mã
- Bước 8: Liên kết bên ngoài
Video: Robot theo dõi bóng: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:31
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
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
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ơ đồ
Ở 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ả
Đâ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ã
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:
Sắp xếp bong bóng theo lô!: 4 bước
Bubble Sort in Batch !: Bạn đã bao giờ tự hỏi tạo một thuật toán sắp xếp đơn giản theo lô thuần túy chưa? Đừng lo lắng, nó đơn giản như chiếc bánh! Điều này cũng cho thấy quá trình sắp xếp của nó. (Lưu ý: Tôi đã thực hiện điều này trong máy tính Windows XP nên một số mã có thể không hoạt động. Mặc dù vậy, tôi không chắc. Xin lỗi …)
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi cho các cửa hàng nhỏ: Đây là một hệ thống dành cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt. Theo dõi và theo dõi nghĩa là gì? Theo dõi và theo dõi là một hệ thống được sử dụng bởi ca
Bộ dụng cụ theo dõi xe ô tô tự làm bằng rô bốt thông minh Theo dõi ô tô cảm quang: 7 bước
Tự làm bộ dụng cụ theo dõi rô bốt thông minh theo dõi ô tô Theo dõi ô tô cảm quang: Thiết kế bởi SINONING ROBOT Bạn có thể mua từ rô bốt theo dõi ô tô ChipLM393 so sánh hai điện trở quang, khi có một đèn LED cảm quang một bên TRẮNG thì bên của động cơ sẽ dừng ngay lập tức, bên kia của động cơ quay lên, để
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Theo dõi bóng 180 ° Máy ảnh: 5 bước (có hình ảnh)
Theo dõi bóng 180 ° Camera: Chào mừng bạn đến với dự án đầu tiên của tôi! Tôi rất vui được chia sẻ những gì tôi đã làm và chỉ cho bạn các bước để xây dựng camera theo dõi của riêng bạn. Dự án này đã được thực hiện bằng cách sử dụng thư viện OpenCV kết hợp với Python