Qua việc kết hợp tính ứng dụng và sáng tạo trong lĩnh vực robot hóa, chúng ta có thể tạo ra một người đồng đội tự động cho người chơi tennis, giúp họ tiết kiệmthời gian và năng lượng, đồ
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
- -ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGÀNH: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - VIỄN THÔNG
CHUYÊN NGÀNH: ĐIỆN TỬ - MÁY TÍNH
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN – ĐIỆN TỬ
- -ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
NGÀNH: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ - VIỄN THÔNG
CHUYÊN NGÀNH: ĐIỆN TỬ - MÁY TÍNH
Trang 3Trong thời đại ngày nay, sự tiến bộ nhanh chóng của công nghệ đã mở ranhững cơ hội mới và không ngừng thách thức con người với những ý tưởng độc đáo
và sáng tạo Trong bối cảnh này, việc ứng dụng công nghệ vào thể thao không chỉ làmột xu hướng mà còn là một cơ hội để nâng cao trải nghiệm và hiệu suất trong lĩnhvực này
Một trong những thách thức lớn mà người chơi tennis thường gặp phải là việcphải nhặt những quả bóng tennis sau mỗi buổi tập hay trận đấu Đây là một côngviệc đơn giản nhưng tốn kém về thời gian và sức lực Để giải quyết vấn đề này, sựkết hợp giữa công nghệ và thể thao có thể đưa ra một giải pháp hiệu quả – thiết kế
xe nhặt bóng tennis
Qua việc kết hợp tính ứng dụng và sáng tạo trong lĩnh vực robot hóa, chúng ta
có thể tạo ra một người đồng đội tự động cho người chơi tennis, giúp họ tiết kiệmthời gian và năng lượng, đồng thời tăng cường trải nghiệm tập luyện và thi đấu.Trong bài viết này, chúng ta sẽ khám phá sâu hơn về hướng lựa chọn đề tài thiết kế
xe nhặt bóng tennis, với hy vọng mở ra những cánh cửa mới trong sự kết hợp giữacông nghệ và thể thao, đem lại lợi ích không ngờ cho cả người chơi và người hâm
Chúng em xin chân thành cảm ơn cô Thạc sĩ Phạm Thị Thảo Khương đã tậntình chu đáo giúp đỡ, hướng dẫn chúng em thực hiện đồ án này
Do kiến thức còn hạn chế của chúng em, bài báo cáo này không thể tránh khỏi những thiếu sót Chúng em rất mong được thầy cô giáo nhận xét và góp
ý để chúng em hoàn thiện tốt hơn đề tài của mình
Trang 4CAM ĐOAN
Chúng em xin cam đoan đề tài này là một công trình nghiên cứu với toàn bộnội dung và kết quả là sản phẩm mà chúng em đã nỗ lực nghiên cứu trong quá trìnhthực hiện đồ án dưới sự hướng dẫn của Ths Phạm Thị Thảo Khương
Các kết quả công bố trong đồ án tốt nghiệp là trung thực và không sao chép từbất kỳ công trình nào khác
Đã thực hiện chỉnh sửa, bổ sung theo đúng yêu cầu của GV phản biện và Hộiđồng chấm
Nhóm sinh viên thực hiện
Nguyễn Ngọc Hóa – Trần Mạnh Hoàng
Trang 5
LỜI NÓI ĐẦU i
CAM ĐOAN ii
MỤC LỤC iii
DANH MỤC HÌNH ẢNH v
DANH SÁCH CÁC CHỮ VIẾT TẮT vii
MỞ ĐẦU 1
CHƯƠNG 1: TỔNG QUAN VỀ ROBOT TỰ HÀNH VÀ XE NHẶT BÓNG TENNIS 4
1.1 Tổng quan về robot tự hành 4
1.2 Tổng quan xe nhặt bóng tennis 6
1.3 Sân tennis và phương án di chuyển 7
CHƯƠNG 2: CƠ SƠ LÝ THUYẾT 10
2.1 Giới thiệu về xử lý ảnh 10
2.2 Giới thiệu về thư viện OpenCV 13
2.3 Giới thiệu về raspberry pi 14
2.4 Tổng quan phần mềm Arduino IDE 18
2.5 Cấu trúc một chương trình Arduino 23
2.6 Tổng quan phần mềm python 24
2.7 Tổng quan giao thức UART 24
CHƯƠNG 3 : THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 30
3.1 Sơ đồ khối hệ thống 30
3.2 Các phương án thiết kế 30
3.3 Lựa chọn thiết bị sử dụng 32
3.3.1 Pin cell 18650 2000mAh 32
3.3.2 Mạch tăng áp DC XL6009 32
3.3.3 Động cơ giảm tốc vàng kèm bánh xe 33
3.3.4 Mạch Điều Khiển Động Cơ DC L298N 34
3.3.5 Động Cơ RC Servo MG996R 34
3.3.6 Arduino Mega 2560 ADK 35
3.3.7 Cảm biến hồng ngoại 36
3.3.8 Webcam 39
Trang 63.5 Sơ đồ kết nối thiết bị 44
3.6 Cài đặt cơ bản để cấu hình raspberry pi 45
3.7 Quá trình xử lý ảnh bóng tennis 49
KẾT LUẬN 54
TÀI LIỆU THAM KHẢO 55
PHỤ LỤC 56
Trang 7Hình 1.1: Robot tự hành AGV của Intech 4
Hình 1.2: Xe nhặt bóng tennis tự động 7
Hình 1.3: Sân bóng tennis 8
Hình 2.1: Xử lý ảnh 10
Hình 2.2: Sơ đồ quá trình xử lý ảnh 11
Hình 2.3: Ví dụ về dùng OpenCV để nhận diện khuôn mặt 14
Hình 2.4: Sơ đồ cấu tạo Raspberry Pi 15
Hình 2.5: Sơ đồ chân của Raspberry Pi 16
Hình 2.6: Arduino IDE - Phần mềm lập trình mã nguồn mở 19
Hình 2.7: Code C/C++ 19
Hình 2.8: Tương thích với bo mạch Arduino 20
Hình 2.9: Giao diện đơn giản, dễ sử dụng 20
Hình 2.10: Nút kiểm tra lỗi (Verify) 21
Hình 2.11: Nút tải code vào bo mạch (Upload) 21
Hình 2.12: Vùng lập trình 21
Hình 2.13: Thanh Menu 22
Hình 2.14: Hỗ trợ nhiều nền tảng khác nhau 22
Hình 2.15: Cấu trúc của một chương trình Arduino 23
Hình 2.16: Giao diện phần mềm IDE 23
Hình 2.17: Phần mềm PYTHON 24
Hình 2.18: UART 25
Hình 2.19: Giao tiếp song song 25
Hình 2.20: Sơ đồ khối UART 26
Hình 2.21: Truyền thông UART 27
Hình 2.22: Giao diện UART 28
Hình 3.1: Sơ đồ khối 30
Hình 3.2: Pin 18650 32
Hình 3.3: Mạch tăng áp DC XL6009 33
Hình 3.4: Động cơ giảm tốc vàng 33
Trang 8Hình 3.7: Arduino mega 36
Hình 3.8: Led hồng ngoại 37
Hình 3.9: Nguyên lý hoạt động của mắt thu phát hồng ngoại 37
Hình 3.10: Sơ đồ nguyên lý cảm biến hồng ngoại 38
Hình 3.11: Webcam 40
Hình 3.12: Chương trình tổng 42
Hình 3.13: Chương trình xử lý ảnh 43
Hình 3.14: Sơ đồ kết nối thiết bị hệ thống 44
Hình 3.15: Mô hình 45
Hình 3.16: Giao diện phần mềm Raspberry Pi 46
Hình 3.18: Kiểm tra IP mạng trên Laptop 47
Hình 3.19: Tìm IP 47
Hình 3.20: Câu lệnh liên kết với VNC 48
Hình 3.21: Giao diện hiển thị của raspberry pi trên hệ điều hành raspbian 49
Hình 3.22: Chuyển đổi không gian màu từ RGB sang HSV 49
Hình 3.23: Lọc màu 50
Hình 3.24: Biến đổi hình thái học 51
Hình 3.25: Lọc nhiễu 51
Hình 3.26: Chuyển đổi hough 52
Hình 3.27: Tính toán hướng đi cho xe 53
Trang 9TỪ VIẾT TẮT DIỄN GIẢI DỊCH NGHĨA
OpenCV Open Source Computer Vision
Library
Thư viện thị giác máy tính
mã nguồn mởGPIO General Purpose Input Output Chân đầu ra\đầu vàoUART Universal Asynchronous
Receiver / Transmitter
Bộ tiếp nhận không đồng
bộ / đồng bộ chuyển giaoSPI Serial Peripheral Interface Chuẩn giao tiếp nối tiếp
ngoại viMISO Master In Slave Out Chân dữ liệu ra ủa thiết bị
chủMOSI Master Out Slave In Chân dữ liệu vào của thiết
Trang 10MỞ ĐẦU
1 Lý do chọn đề tài
Trong lựa chọn đề tài về thiết kế xe nhặt bóng tennis, chúng ta không chỉ đốimặt với việc giải quyết một vấn đề thực tế trong thể thao mà còn đứng trước cơ hộitạo nên sự đổi mới và tiện ích tối đa trong lĩnh vực này Việc ứng dụng công nghệ
để tạo ra một người đồng đội tự động cho người chơi tennis không chỉ là giải pháphiệu quả cho vấn đề nhặt bóng mà còn mang lại nhiều lợi ích to lớn
Đầu tiên, từ góc độ cá nhân của người chơi, xe nhặt bóng tự động không chỉđơn giản là một công cụ hỗ trợ, mà còn làm thay đổi toàn diện cách họ tiếp cận vàtiến triển trong tập luyện Việc tự động hóa nhặt bóng giúp họ tập trung tối đa vàoviệc hoàn thiện kỹ thuật và chiến thuật, mà không phải lo lắng về những công việcnhỏ như đuổi theo từng quả bóng Sự chính xác và đồng nhất của robot đồng thờitạo ra một môi trường huấn luyện hiệu quả, thúc đẩy sự phát triển và tăng cườngkhả năng thi đấu
Ngoài ra, đề tài này còn mang đến một chiều sâu xã hội, làm thay đổi cáchchúng ta nhìn nhận và tham gia vào thế giới thể thao Sự tích hợp của công nghệkhông chỉ giúp giải quyết vấn đề nhỏ trong cuộc sống cá nhân mà còn tạo nên sựhiện đại hóa trong quản lý sân tennis và trung tâm huấn luyện Việc giảm bớt côngviệc thủ công không chỉ giúp tăng cường chất lượng dịch vụ mà còn mở ra cánh cửacho sự sáng tạo và hứng thú trong cộng đồng, từ đó góp phần vào sự phát triển toàndiện của thể thao và xã hội Điều này không chỉ là một đề tài, mà là một bước nhảyvọt đối với sự phát triển của thế giới thể thao trong tương lai
2 Mục tiêu của đề tài
Tạo ra một xe nhặt bóng tennis thông minh có khả năng tương tác chính xác,giúp người chơi tập trung vào việc cải thiện kỹ thuật và chiến thuật, đồng thời cungcấp trải nghiệm huấn luyện chất lượng và hiệu quả
Phát triển xe với tính năng an toàn cao, tránh các tình huống đụng độ nguyhiểm và đồng thời mang lại tiện ích tối đa cho người chơi và những người quản lýsân tennis
Trang 11Tạo ra sự thay đổi trong cách cộng đồng thể thao hiểu và tham gia vào côngnghệ, tăng cường tinh thần sáng tạo và đổi mới trong quản lý và trải nghiệm thểthao.
Đưa ra giải pháp hiện đại hóa cho quản lý sân tennis và trung tâm huấn luyện,tạo ra môi trường làm việc và tập luyện tiên tiến, thúc đẩy sự phát triển toàn diệncủa cộng đồng thể thao
3 Nội dung của đề tài
Đề tài sẽ tập trung vào nghiên cứu và ứng dụng các công nghệ tiên tiến như thịgiác máy tính, cảm biến hồng ngoại và các hệ thống điều khiển tự động Sự kết hợplinh hoạt của các phương tiện này sẽ tạo nên một mô hình xe thông minh có khảnăng di chuyển linh hoạt trên sân, nhận biết vị trí của quả bóng, và thực hiện cácthao tác nhặt một cách chính xác
Hệ thống cảm biến sẽ giúp mô hình xe "nhìn thấy" môi trường xung quanh vàxác định vị trí chính xác của bóng Cùng lúc đó, các công nghệ thị giác máy tính sẽđược tích hợp để phân tích hình ảnh và theo dõi quá trình di chuyển của bóng trongthời gian thực Điều này giúp xe có khả năng dự đoán và phản ứng nhanh chóngtheo sự thay đổi của tình huống trên sân
Không chỉ giúp tiết kiệm sức lao động và thời gian trong quá trình thu thậpbóng, xe còn mang lại sự chính xác và đồng đều, giảm thiểu sai sót so với cách thứcthu thập thủ công Ngoài ra, nó cũng có thể được tích hợp vào các buổi tập luyện vàgiải đấu, góp phần nâng cao chất lượng và hiệu suất trong lĩnh vực tennis
là một vấn đề phức tạp Xe cần có khả năng nhận diện người chơi, trọng tài và thậm
Trang 12chí cả đối thủ Sự tương tác này đòi hỏi khả năng xử lý thông tin và đưa ra quyếtđịnh nhanh chóng để tránh va chạm và đảm bảo an toàn trong quá trình hoạt động.Một thách thức khác là về nguồn năng lượng Xe cần có khả năng hoạt độngtrong thời gian dài mà không cần sự can thiệp của người điều khiển Việc tích hợpnguồn năng lượng tái tạo hoặc tối ưu hóa hiệu suất năng lượng sẽ là một yếu tốquan trọng để giải quyết vấn đề này.
Cuối cùng, khía cạnh chi phí cũng là một trong những hạn chế Công nghệ caocấp và các linh kiện chất lượng cao thường đi đôi với chi phí đáng kể Điều này cóthể tạo ra một thách thức đối với việc đưa xe nhặt bóng tennis vào ứng dụng thực tế
và làm cho chúng trở nên khó tiếp cận đối với cộng đồng tennis rộng lớn
5 Cấu trúc của đồ án
CHƯƠNG 1: TỔNG QUAN VỀ ROBOT TỰ HÀNH VÀ XE NHẶT BÓNG
TENNIS
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
Trang 13CHƯƠNG 1: TỔNG QUAN VỀ ROBOT TỰ HÀNH VÀ XE NHẶT
Hình 1.1: Robot tự hành AGV của IntechRobot tự hành AVG là loại Mobile robot có khả năng tự hoạt động, thực thinhiệm vụ mà không cần sự can thiệp của con người Với những cảm biến, chúng cókhả năng nhận biết về môi trường xung quanh Robot tự hành ngày càng có nhiều ýnghĩa trong các ngành công nghiệp, thương mại, y tế, các ứng dụng khoa học vàphục vụ đời sống của con người Với sự phát triển của ngành Robot học, robot tựhành ngày càng có khả năng hoạt động trong các môi trường khác nhau, tùy mỗilĩnh vực áp dụng mà chúng có nhiều loại khác nhau như robot sơn, robot hàn, robotcắt cỏ, robot thám hiểm đại dương, robot làm việc ngoài vũ trụ Cùng với sự pháttriển của yêu cầu trong thực tế, robot tự hành tiếp tục đưa ra những thách thức mớicho các nhà nghiên cứu Vấn đề của robot tự hành AVG là làm thế nào để robot tự
Trang 14hành có thể hoạt động, nhận biết môi trường và thực thi các nhiệm vụ đề ra Vấn đềđầu tiên là di chuyển, Robot tự hành nên di chuyển như thế nào và cơ cấu di chuyểnnào là sự lựa chọn tốt nhất Điều hướng là vấn đề cơ bản trong nghiên cứu và chếtạo Robot tự hành Trong hiệp hội nghiên cứu về Robot tự hành có 2 hướng nghiêncứu khác nhau:
Hướng thứ nhất: là nghiên cứu về Robot tự hành có khả năng điều hướng ở tốc
độ cao nhờ thông tin thu được từ cảm biến, đây là loại robot có khả năng hoạt động
ở môi trường trong phòng cũng như môi trường bên ngoài Loại robot này yêu cầukhả năng tính toán đồ sộ và được trang bị cảm biến có độ nhạy cao, dải đo lớn để cóthể điều khiển robot di chuyển ở tốc độ cao, trong những môi trường có địa hìnhphức tạp
Hướng thứ hai: nhằm giải quyết các vấn đề về các loại robot tự hành chỉ dùng
để hoạt động trong môi trường trong phòng Loại robot tự hành này có kết cấu đơngiản hơn loại trên, thực hiện những nhiệm vụ đơn giản
Bài toán dẫn hướng cho robot tự hành được chia làm 2 loại: bài toán toàn cục(global) và bài toán cục bộ (local) Ở bài toàn cục, môi trường làm việc của robothoàn toàn xác định, đường đi và vật cản là hoàn toàn biết trước Ở bài toán cục bộ,môi trường hoạt động của robot là chưa biết trước hoặc chỉ biết một phần Các cảmbiến và thiết bị định vị cho phép robot xác định được vật cản, vị trí của nó trong môitrường giúp nó đi tới được mục tiêu
Các vấn đề gặp phải khi điều hướng cho Robot tự hành AVG thường khônggiống như các loại robot khác Để có thể điều hướng cho Robot tự hành, quyết địnhtheo thời gian thực phải dựa vào thông tin liên tục về môi trường thông qua các cảmbiến, hoặc ở môi trường trong phòng hoặc ngoài trời, đây là điểm khác biệt lớn nhất
so với kỹ thuật lập kế hoạch ngoại tuyến Robot tự hành phải có khả năng tự quyếtđịnh về phương thức điều hướng, định hướng chuyển động để có thể tới đích thựchiện nhiệm vụ nhất định
Điều hướng cho robot tự hành AVG là công việc đòi hỏi phải thực hiện đượcmột số khả năng khác nhau, bao gồm : khả năng di chuyển ở mức cơ bản, ví dụ nhưhoạt động đi tới vị trí cho trước; khả năng phản ứng các sự kiện theo thời gian thực,
ví dụ như khi có sự xuất hiện đột ngột của vật cản; khả năng xây dựng, sử dụng và
Trang 15duy trì bản đồ môi trường hoạt động; khả năng xác định vị trí của robot trong bản
đồ đó; khả năng thiết lập kế hoạch để đi tới đích hoặc tránh các tình huống khôngmong muốn và khả năng thích nghi với các thay đổi của môi trường hoạt động.Một số loại robot tự hành khác phổ biến trên thế giới bao gồm:
Robot tự lái ô tô: Đây là các phương tiện tự động có khả năng di chuyển trênđường và thực hiện các nhiệm vụ lái xe mà không cần người lái Chúng sử dụngcông nghệ như cảm biến LIDAR, radar, camera và hệ thống điều khiển tự động để
xử lý thông tin và tương tác với môi trường giao thông
Robot dịch vụ: Đây là các robot được thiết kế để cung cấp các dịch vụ và hỗtrợ cho con người Chúng có thể là robot hướng dẫn trong bảo tàng, robot phục vụtrong nhà hàng hoặc khách sạn, hoặc các robot y tế trong các cơ sở chăm sóc sứckhỏe Robot dịch vụ tự hành thường có khả năng di chuyển trong không gian bằngcách sử dụng cảm biến và hệ thống điều khiển thông minh để tránh va chạm vàtương tác với con người
Robot công nghiệp: Loại robot này được sử dụng trong môi trường côngnghiệp để thực hiện các tác vụ sản xuất tự động Chúng có thể là robot hàn, robotlắp ráp, robot vận chuyển, hoặc robot kiểm tra chất lượng Robot tự hành trongngành công nghiệp thường được lập trình để hoạt động trong các quy trình cụ thể vàtương tác với các thiết bị và máy móc khác trong môi trường sản xuất
Robot nghiên cứu và khám phá: Loại robot này được sử dụng trong nghiêncứu khoa học và khám phá môi trường khắc nghiệt mà con người khó tiếp cận.Chúng có thể là robot khám phá dưới nước, robot khám phá không gian hoặc robotkhám phá môi trường địa chất nguy hiểm Robot tự hành nghiên cứu và khám pháđược thiết kế để hoạt động độc lập và thu thập dữ liệu quan trọng từ môi trường màkhông cần sự can thiệp của con người
1.2 Tổng quan xe nhặt bóng tennis
Xe nhặt bóng tennis là một ứng dụng độc đáo trong sự kết hợp giữa công nghệ
và thể thao, mang lại những cải tiến đáng kể trong quá trình tập luyện và huấn luyệntennis Trước đây, việc nhặt bóng sau mỗi cú đánh không chỉ tốn thời gian mà cònđòi hỏi sức lực lớn từ phía người chơi Tuy nhiên, với sự xuất hiện của xe nhặtbóng, những thách thức này đã được giải quyết một cách hiệu quả
Trang 16Hình 1.2: Xe nhặt bóng tennis tự động
Xe nhặt bóng tennis không chỉ đơn giản là một công cụ hỗ trợ, mà còn là mộtđối tác tập luyện đầy tính tương tác Khả năng tự động nhận biết vị trí của quả bóngcùng với khả năng điều chỉnh tốc độ và hướng di chuyển, giúp chúng tương thíchvới mọi cấp độ kỹ thuật và phong cách chơi của người sử dụng
Một điểm mạnh nổi bật của xe nhặt bóng tennis là khả năng tạo ra những bàitập luyện linh hoạt và đa dạng Người chơi có thể điều chỉnh các thông số như tốc
độ, hướng và khoảng cách, từ đó tạo ra những thử thách phù hợp với mức độ khókhăn mong muốn Điều này giúp nâng cao kỹ thuật, phản xạ và khả năng tập trungcủa người chơi một cách hiệu quả
Ngoài ra, xe nhặt bóng tennis cũng có ứng dụng trong việc giảng dạy và huấnluyện chuyên sâu Chúng có thể thực hiện các bài tập luyện cụ thể, giúp ngườihướng dẫn tập trung vào việc chỉnh sửa và cải thiện kỹ thuật của học viên
1.3 Sân tennis và phương án di chuyển
Sân tennis không chỉ là nơi diễn ra các trận đấu căng thẳng mà còn là môitrường thách thức đối với xe nhặt bóng Trong sự linh hoạt của mình, xe phải đốimặt với nhiều thách thức đặc biệt khi di chuyển trên sân tennis
Đặc Điểm của Sân Tennis:
Kích Thước và Định Dạng: Sân tennis có kích thước chuẩn quốc tế với địnhdạng chữ nhật, có đường biên dài và hai dòng đường biên ngắn Kích thước chínhxác của sân cũng phải tuân theo quy định của Liên đoàn Tennis thế giới (ITF)
Trang 17Bề Mặt Sân: Sân tennis có thể là bê tông, đất nện, cỏ hoặc sân nhựa cứng Mỗiloại bề mặt đều đòi hỏi sự điều chỉnh linh hoạt từ phía xe để đảm bảo hiệu suất tốtnhất.
Hình 1.3: Sân bóng tennis
Phương án di chuyển của xe nhặt bóng:
Xe nhặt bóng tennis ứng dụng xử lý ảnh là một loại robot tự động được thiết
kế để tự động thu thập các quả bóng tennis trên sân chơi Điều đặc biệt về loại xenày là nó sử dụng công nghệ xử lý ảnh để nhận dạng và định vị các quả bóng trênsân
Tổng quan về quá trình hoạt động của xe nhặt bóng tennis ứng dụng xử lý ảnhnhư sau:
Cảm biến và hệ thống xử lý ảnh: Xe nhặt bóng tennis được trang bị cáccamera và cảm biến để quét và thu thập thông tin về các quả bóng Hệ thống xử lýảnh sẽ xử lý dữ liệu từ camera để phân tích các đối tượng trong hình ảnh và nhậndạng các quả bóng
Nhận dạng và định vị bóng: Sử dụng các thuật toán xử lý ảnh, hệ thống sẽnhận dạng và định vị các quả bóng trên sân chơi Các đặc điểm như màu sắc, hìnhdạng và kích thước của quả bóng được sử dụng để phân biệt chúng với các đốitượng khác trên sân
Di chuyển: Sau khi xác định vị trí của các quả bóng, xe sẽ tính toán đường đitối ưu để di chuyển đến từng quả bóng
Trang 18Thu thập bóng: Khi xe đến gần một quả bóng, nó sẽ sử dụng các cơ chế và hệthống servo để nhặt bóng và đặt vào vị trí lưu trữ trong ngăn chứa trên xe.
Tái lập quy trình: Xe sẽ tiếp tục quét và nhặt các quả bóng còn lại trên sânchơi cho đến khi hoàn thành tác vụ hoặc đạt đến mức đủ bóng được xác định
Xe nhặt bóng tennis ứng dụng xử lý ảnh giúp tiết kiệm thời gian và công sứccủa người chơi tennis trong việc thu thập bóng trên sân Nó cũng có khả năng làmviệc liên tục trong thời gian dài và cung cấp độ chính xác cao trong việc nhận dạng
và thu thập bóng Tuy nhiên, như mọi công nghệ khác, nó cũng có nhược điểm vàhạn chế của riêng nó, bao gồm độ chính xác hạn chế trong một số tình huống đặcbiệt, khả năng xử lý ảnh hạn chế trong điều kiện ánh sáng yếu, và khả năng tươngtác với môi trường và người chơi
Trang 19CHƯƠNG 2: CƠ SƠ LÝ THUYẾT
Hình 2.1: Xử lý ảnhCác phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chấtlượng ảnh và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chấtlượng ảnh được truyền qua cáp từ London đến New York từ những năm 1920 Vấn
đề nâng cao chất lượng ảnh có liên quan đến phân bố mức sáng và độ phân giải củaảnh Việc nâng cao chất lượng ảnh phát triển vào khoảng năm 1955
Quá trình nâng cao chất lượng ảnh được phát triển và khám phá nhờ vào sựtiến bộ của máy tính Năm 1964, máy tính đã có khả năng xử lý và nâng cao chấtlượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ, bao gồm việc làm nổi đường
Trang 20biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng,nhận dạng ảnh phát triển không ngừng Các phương pháp tri thức nhân tạo nhưmạng nơ-ron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnhngày càng được áp dụng rộng rãi và thu nhiều kết quả khả quan.
Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầu tiên, ảnh tựnhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy chụpảnh) Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại Camera ống kiểuCCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc ảnh trắng đen từCamera sau đó được chuyển trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo.(Máy ảnh số hiện nay là một thí dụ gần gũi) Mặt khác, ảnh cũng có thể tiếp nhận từ
vệ tinh; có thể quét từ ảnh chụp bằng máy quét ảnh Hình 1.1 dưới đây mô tả cácbước cơ bản trong xử lý ảnh
Hình 2.2: Sơ đồ quá trình xử lý ảnh
Sơ đồ này bao gồm các thành phần sau:
a) Phần thu nhận ảnh (Image Acquisition):
Ảnh có thể được thu nhận thông qua camera màu hoặc đen trắng
Camera thường sử dụng là loại quét dòng, tạo ra ảnh hai chiều
b) Phần Tiền xử lý (Image Processing):
Sau khi thu nhận, ảnh có thể trải qua các bước tiền xử lý để nâng cao chấtlượng
Chức năng chính của tiền xử lý là lọc nhiễu, làm nổi bật chi tiết để làm choảnh rõ hơn và nét hơn
c) Phần Phân đoạn (Segmentation) hay Phân vùng ảnh:
Trang 21Phân vùng ảnh nhằm tách ảnh thành các vùng để biểu diễn phân tích và nhậndạng ảnh.
Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong bì thư, cần chia các câu,chữ thành từ, chữ, số riêng biệt để nhận dạng
d) Phần Biểu diễn ảnh (Image Representation):
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phânđoạn), kết hợp với mã liên kết với các vùng lân cận
Biểu diễn số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theobằng máy tính
e) Phần Nhận dạng và Nội suy ảnh (Image Recognition and Interpretation):Phần này liên quan đến việc nhận dạng và giải mã thông tin từ ảnh
Các đặc trưng của ảnh được chọn để phân biệt đối tượng này với đối tượngkhác trong phạm vi ảnh đã nhận được
Cả các phần trên đều đóng vai trò quan trọng trong quá trình xử lý ảnh, giúphiểu và tạo ra thông tin từ các hình ảnh thu thập được từ thế giới thực
Nhận dạng ảnh là quá trình xác định ảnh Quá trình này thường được thực hiệnbằng cách so sánh với mẫu chuẩn đã chọn (hoặc lưu trữ) trước đó Nội suy là quátrình đưa ra dự đoán dựa trên ý nghĩa từ quá trình nhận dạng Ví dụ: một loạt chữ số
và gạch ngang trên phong bì thư có thể được nội suy thành mã vạch điện thoại Cónhiều cách phân loại ảnh khác nhau Theo lý thuyết về nhận dạng, các mô hình toánhọc về ảnh được phân thành hai loại nhận dạng ảnh cơ bản:
a) Nhận dạng theo thuộc tính
b) Nhận dạng theo cấu trúc
Một số đối tượng nhận dạng phổ biến ngày nay trong lĩnh vực khoa học vàcông nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng vănbản, nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người
Cơ sở tri thức (Knowledge Base) như đã đề cập trước đó đóng một vai tròquan trọng Trong quá trình xử lý và phân tích ảnh, việc sử dụng tri thức con người
là quan trọng để tối ưu hóa quy trình Trong các bước xử lý này, nhiều phương pháphiện đại đã tích hợp các phương pháp trí tuệ nhân tạo Ví dụ, nhận dạng ký tự trênảnh có thể sử dụng các mô hình học máy để cải thiện độ chính xác
Trang 22Mô tả (biểu diễn ảnh) ảnh sau khi số hóa sẽ được lưu trữ trong bộ nhớ hoặcchuyển đến các bước tiếp theo để phân tích Việc lưu trữ ảnh trước xử lý từ các ảnhthô yêu cầu một lượng lớn bộ nhớ và không hiệu quả theo quan điểm ứng dụng vàcông nghệ Thông thường, ảnh thô được đặc trưng lại (biểu diễn) bằng các số liệunhư: biên ảnh (Boundary), vùng ảnh (Region) Một số phương pháp biểu diễn ảnhthông dụng bao gồm mã chạy (Run-Length Code), mã xích (Chaine-Code), và mã
tứ phân (Quad-Tree Code)
Để biểu diễn bằng mã chạy, một vùng ảnh có thể được mã hóa dựa trên matrận nhị phân, trong đó:
U(m,n) = 1 nếu (m,n) thuộc R
U(m,n) = 0 nếu (m,n) không thuộc R
2.2 Giới thiệu về thư viện OpenCV
OpenCV là tên viết tắt của open source computer vision library – có thể đượchiểu là một thư viện nguồn mở cho máy tính Cụ thể hơn OpenCV là kho lưu trữcác mã nguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng đồ họatrong thời gian thực
OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động realtime Nó còn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thịgiác máy tính hay các learning machine khác
Thư viện OpenCV được viết bằng C và C++ và chạy trên Linux, Windows vàMac OS X Phát triển tốt trên các giao diện: Python, Ruby, Matlab, và các ngôn ngữkhác OpenCV được thiết kế để tính toán hiệu quả và tập trung mạnh vào các ứngdụng thời gian thực OpenCV được viết tối ưu hóa bằng C và có thể tận dụng lợi thếcủa bộ vi xử lý đa lõi
Chức năng có trong thư viện OpenCV:
Thư viện OpenCV bao gồm một số tính năng nổi bật như:
Trang 23- Điều khiển Robot
- Hỗ trợ thực tế tăng cường
Hình 2.3: Ví dụ về dùng OpenCV để nhận diện khuôn mặt
2.3 Giới thiệu về raspberry pi
Raspberry Pi là cái máy tính giá 35USD kích cỡ như iPhone và chạy HĐHLinux Với mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em Đượcphát triển bởi Raspberry Pi Foundation – là tổ chức phi lợi nhuận với tiêu chí xâydựng hệ thống mà nhiều người có thể sử dụng được trong những công việc tùy biếnkhác nhau
Raspberry Pi sản xuất bởi 3 OEM: Sony, Qsida, Egoman Và được phân phốichính bởi Element14, RS Components và Egoman
Nhiệm vụ ban đầu của dự án Raspberry Pi là tạo ra máy tính rẻ tiền có khảnăng lập trình cho những sinh viên, nhưng Pi đã được sự quan tầm từ nhiều đốitượng khác nhau Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lý SoCBroadcom BCM2835 (là chip xử lý mobile mạnh mẽ có kích thước nhỏ hay đượcdùng trong điện thoại di động) bao gồm CPU, GPU, bộ xử lý âm thanh /video, vàcác tính năng khác… tất cả được tích hợp bên trong chip có điện năng thấp này.Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay ;không thể chạy Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không
hỗ trợ mã x86/x64, nhưng vẫn có thể chạy bằng Linux với các tiện ích như lướtweb, môi trường Desktop và các nhiệm vụ khác Tuy nhiên Raspberry Pi là một
Trang 24thiết bị đa năng đáng ngạc nhiên với nhiều phần cứng có giá thành rẻ nhưng rấthoàn hảo cho những hệ thống điện tử, những dự án DIY, thiết lập hệ thống tính toán
rẻ tiền cho những bài học trải nghiệm lập trình …
Hình 2.4: Sơ đồ cấu tạo Raspberry Pi
Raspberry Pi có hai phiên bản, Model A có giá 25$ và Model B có giá 35$.Model B như hình trên thông dụng hơn cả
Thông số kỹ thuật chi tiết của Raspberry Pi 4:
- Vi xử lý: Broadcom BCM2837B0, quad-core A53 (ARMv8) 64-bit SoC
Trang 25Sơ đồ chân của Raspberry Pi model B
Đây là 40 chân GPIO được sử dụng để kết nối với các thiết bị khác
Hình 2.5: Sơ đồ chân của Raspberry Pi
Các chân GPIO của raspberry pi 4 gồm có:
- 2 chân có mức điện áp 3.3 V (chân số 1 và chân số 17)
- 2 chân có mức điện áp 5V (chân số 2, chân số 4)
- 8 chân Ground (0V) (chân số 6 ,9, 14, 20, 25, 30, 34 và 39)
- 28 chân GPIO
Các chân I2C
Raspberry Pi sử dụng chuẩn giao tiếp I2C để giao tiếp với các thiết bị tươngthích với Inter-Integrated Circuit (một giao thức truyền thông nối tiếp hai dây tốc độthấp) Chuẩn giao tiếp này yêu cầu vai trò chủ-tớ giữa cả hai thiết bị I2C có hai kết
nối: SDA (Serial Data) và SCL (Serial Clock) Chúng hoạt động bằng cách gửi dữ
liệu đến và sử dụng kết nối SDA, và tốc độ truyền dữ liệu được điều khiển thôngqua chân SCL
- Data: (GPIO 2), Clock (GPIO 3)
- EEPROM Data: (GPIO 0), EEPROM Clock (GPIO 1)
Các chân UART
Trang 26Các chân tiếp xúc tiếp nối đuôi nhau hoặc UART (Universal AsynchronousReceiver / Transmitter – Bộ thu / phát không đồng nhất đa năng) cung ứng phươngpháp tiếp xúc giữa hai bộ vi điều khiển và tinh chỉnh hoặc máy tính Chân TX được
sử dụng để truyền tài liệu tiếp nối đuôi nhau và chân RX được sử dụng để nhận tàiliệu tiếp nối đuôi nhau đến từ một thiết bị tiếp nối đuôi nhau khác Có 2 chân tươngquan đến tiếp xúc UART
hồ (SCLK tại chân GPIO 11) từ thiết bị chính (Raspberry Pi) và dữ liệuđược gửi từ Raspberry Pi tới thiết bị SPI bằng chân MOSI (Master OutSlave In) Nếu thiết bị SPI cần giao tiếp lại với Raspberry Pi, thì nó sẽ gửi
dữ liệu trở lại bằng chân MISO (Master In Slave Out) Có 5 chân liên quanđến giao tiếp SPI:
- GND: Kết nối tất cả các chân GND của tất cả các thành phần tớ (slave) và
bo mạch Raspberry Pi 3 với nhau
- SCLK: Tín hiệu đồng hồ của SPI Kết nối tất cả các chân SCLK với nhau
- MOSI (Master Out Slave In): Chân này được sử dụng để gửi dữ liệu từ chủ(master) đến tớ (slave)
- MISO (Master In Slave Out): Chân này được sử dụng để nhận dữ liệu từslave đến master
- CE (Chip Enable): Chúng ta cần kết nối một chân CE cho mỗi thiết bị slave(hoặc các thiết bị ngoại vi) trong mạch của chúng ta Theo mặc định, chúng
ta có hai chân CE nhưng chúng ta có thể cấu hình nhiều chân CE hơn từ cácchân GPIO có sẵn khác
Các chân SPI trên bo mạch Raspberry Pi 4:
Trang 27- SPI0: GPIO 9 (MISO), GPIO 10 (MOSI), GPIO 11 (SCLK), GPIO 8 (CE0),GPIO 7 (CE1)
- SPI1: GPIO 19 (MISO), GPIO 20 (MOSI), GPIO 21 (SCLK), GPIO 18(CE0), GPIO 17 (CE1), GPIO 16 (CE2)
Các chân PWM
PWM (Pulse Width Modulation – Điều chế độ rộng xung) là một kỹ thuật phổ
biến được sử dụng để thay đổi độ rộng của các xung trong một chuỗi xung PWM
có nhiều ứng dụng như điều khiển độ sáng của đèn LED, điều khiển tốc độ củađộng cơ DC, điều khiển động cơ servo hoặc phải lấy ngõ ra analog bằng các thiết bị
kỹ thuật số
- Phần mềm PWM có sẵn trên tất cả các chân
- Phần cứng PWM chỉ khả dụng trên các chân này: GPIO 12, GPIO 13, GPIO
18, GPIO 19
2.4 Tổng quan phần mềm Arduino IDE
Thông tin của Arduino IDE
- Nền tảng: Windows, MacOS, Linux
Hình 2.6: Arduino IDE - Phần mềm lập trình mã nguồn mở
IDE trong Arduino IDE là phần có nghĩa là mã nguồn mở, nghĩa là phần mềmnày miễn phí cả về phần tải về lẫn phần bản quyền: Người dùng có quyền sửa đổi,
Trang 28cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung được nhà phát hành chophép mà không cần xin phép ai, điều mà họ không được phép làm đối với các phầnmềm nguồn đóng.
Tuy là phần mềm mã nguồn mở nhưng khả năng bảo mật thông tin củaArduino IDE là vô cùng tuyệt vời, khi phát hiện lỗi nhà phát hành sẽ vá nó và cậpnhật rất nhanh khiến thông tin của người dùng không bị mất hoặc rò rỉ ra bên ngoài
Sử dụng ngôn ngữ lập trình C/C++ thân thiện với các lập trình viên
Arduino IDE sử dụng ngôn ngữ lập trình C/C++ rất phổ biến trong giới lậptrình Bất kỳ đoạn code nào của C/C++ thì Arduino IDE đều có thể nhận dạng, giúpcác lập trình viên thuận tiện trong việc thiết kế chương trình lập cho các bo mạchArduino
Hình 2.7: Code C/C++
Hỗ trợ lập trình tốt cho bo mạch Arduino
Arduino có một module quản lý bo mạch, nơi người dùng có thể chọn bomạch mà họ muốn làm việc cùng và có thể thay đổi bo mạch thông qua Menu Quátrình sửa đổi lựa chọn cũng liên tục tự động cập nhật để các dữ liệu có sẵn trong bomạch và dữ liệu sửa đổi đồng nhất với nhau Bên cạnh đó, Arduino IDE cũng giúptìm ra lỗi từ code và giúp sửa lỗi kịp thời tránh tình trạng bo mạch Arduino làm việcvới code lỗi quá lâu dẫn đến hư hỏng hoặc tốc độ xử lý bị giảm sút
Trang 29Hình 2.8: Tương thích với bo mạch Arduino
Thư viện hỗ trợ phong phú
Arduino IDE tích hợp với hơn 700 thư viện, được viết và chia sẻ bởi nhà phát hành Arduino Software và thành viên trong cộng đồng Arduino Mọi người có thể tận dụng chúng cho dự án của riêng mình mà không cần phải bỏ ra bất kỳ chi phí nào
Hình 2.9: Giao diện đơn giản, dễ sử dụngArduino IDE có một giao diện đơn giản, dễ sử dụng giúp người dùng thuậntiện hơn trong thao tác Dưới đây là một số tính năng nổi bật chúng ta thường sửdụng:
Nút kiểm tra chương trình (Verify): giúp dò lỗi phần code định truyền xuống
bo mạch Arduino
Trang 30Hình 2.10: Nút kiểm tra lỗi (Verify)Nút tải đoạn code vào bo mạch Arduino (Upload): giúp nhập đoạn code vào
bo mạch Arduino
Hình 2.11: Nút tải code vào bo mạch (Upload)Vùng lập trình: người dùng sẽ viết chương trình tại khu vực này
Hình 2.12: Vùng lập trìnhThanh Menu: gồm những thẻ chức năng nằm trên cùng như File, Edit, Sketch, Tools, Help rất thông dụng có ở hầu hết các chương trình nhập code khác
Trang 31Hình 2.13: Thanh Menu
Hỗ trợ đa nền tảng như Windows, MacOS, Linux
Arduino IDE hoạt động trên 3 hệ điều hành phổ biến nhất là Windows, Mac
OS và Linux giúp người dùng có thể truy cập vào phần mềm ở bất cứ đâu, bất cứkhi nào miễn là họ có một cái máy tính Ngoài ra, người dùng có thể truy cập vàocông cụ từ đám mây Điều này cho phép các nhà lập trình lựa chọn tạo và lưu dự áncủa mình trên đám mây hoặc xây dựng chương trình trên máy tính và upload nó lên
bo mạch Arduino
Hình 2.14: Hỗ trợ nhiều nền tảng khác nhauTóm lại, Arduino IDE là một phần mềm được phân phối chính hãng, tải miễnphí và giao diện thân thiện với người dùng Phần mềm liên tục được nhà phát hànhcập nhật dưới sự giúp đỡ của Cộng đồng người dùng Arduino đông đảo nên độ bảomật là rất cao Arduino IDE là phần mềm nên sử dụng nhất để tải code vào bo mạchArduino
2.5 Cấu trúc một chương trình Arduino
Trang 32nh 2.15: Cấu trúc của một chương trình Arduino
Cấu trúc một chương trình Arduino gồm 2 hàm: hàm setup() và hàm
loop().Những lệnh trong hàm setup() sẽ được chạy khi Arduino khởi động (chỉ
chạy một lần duy nhất).Sau khi hàm setup() chạy xong, những lệnh trong hàm
loop() sẽ được chạy và lặp đi lặp lại cho đến khi reset hoặc shutdown Arduino.
Các bước lập trình và chạy chương trình với Arduino
+ Bước 1: Thiết kế mạch theo yêu cầu
+ Bước 2: Lập trình điều khiển và nạp code
Để lập trình điều khiển và nạp code thì chúng ta sử dụng phần mềm IntegratedDevelopment Environment (viết tắt là IDE), phần mềm IDE hỗ trợ người lập trìnhviết code và nạp code cho vi điều khiển
Hình 2.16: Giao diện phần mềm IDE+ Bước 4: Chạy thử và sửa lỗi nếu có
Trang 33Python là ngôn ngữ lập trình máy tính bậc cao thường được sử dụng để xâydựng trang web và phần mềm, tự động hóa các tác vụ và tiến hành phân tích dữ liệu.
Phân tích dữ liệu và học máy
Python đã trở thành một yếu tố chính trong khoa học dữ liệu, cho phép các nhàphân tích dữ liệu và các chuyên gia khác sử dụng ngôn ngữ này để thực hiện cácphép tính thống kê phức tạp, tạo trực quan hóa dữ liệu, xây dựng thuật toán họcmáy, thao tác và phân tích dữ liệu cũng như hoàn thành các nhiệm vụ khác liênquan đến dữ liệu
Tự động hoá và phát triển phần mềm
Hình 2.17: Phần mềm PYTHONNếu một nhiệm vụ lặp đi lặp lại, có thể làm việc hiệu quả hơn bằng cách tựđộng hóa nó bằng Python Quá trình viết code được sử dụng để xây dựng các quytrình tự động này được gọi là viết script Trong thế giới mã hóa, tự động hóa có thểđược sử dụng để kiểm tra lỗi trên nhiều tệp, chuyển đổi tệp, thực hiện phép toánđơn giản và loại bỏ các bản sao trong dữ liệu
2.7 Tổng quan giao thức UART
Giao thức UART
UART là “Universal Asynchronous Receiver / Transmitter”, và nó là một vimạch sẵn có trong một vi điều khiển nhưng không giống như một giao thức truyềnthông (I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp TrongUART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giao tiếp dữliệu nối tiếp và giao tiếp dữ liệu song song