1. Trang chủ
  2. » Luận Văn - Báo Cáo

THIẾT KẾ ROBOT HƯỚNG DẪN ĐƯỜNG ĐI CHO NGƯỜI BẰNG CÁCH NHẬN DIỆN KHUÔN MẶT ĐỒ ÁN TỐT NGHIỆP Đà Nẵng, 2022

52 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN ĐIỆN TỬ NGUYỄN ĐỨC BÌNH THIẾT KẾ ROBOT HƯỚNG DẪN ĐƯỜNG ĐI CHO NGƯỜI BẰNG CÁCH NHẬN DIỆN KHUÔN MẶT ĐỒ ÁN TỐT NGHIỆP Đà Nẵng, 2022 TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN. MỤC LỤC MỞ ĐẦU.....................................................................................................................1 1. Tính cấp thiết của đề tài.......................................................................................1 2. Ý nghĩa khoa học và thực tiễn .............................................................................1 3. Đối tượng .............................................................................................................1 4. Phương pháp nghiên cứu .....................................................................................1 5. Nội dung nghiên cứu............................................................................................2 CHƯƠNG 1. TỔNG QUAN VỀ ROBOT VÀ ROBOT DI ĐỘNG...........................3 1.1 Robot..................................................................................................................3 1.2 Robot di động ....................................................................................................4 1.2.1.Cấu trúc.........................................................................................................................5 1.2.2. Một số ứng dụng của robot di động .......................................................................6 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ...........................................................................7 2.1. Tổng quan xử lý ảnh .........................................................................................7 2.1.1. Xử lý ảnh.....................................................................................................................7 2.1.2.Một số khái niệm cơ bản về ảnh ..............................................................................8 2.1.3. Giới thiệu về không gian màu.................................................................................9 2.1.4. Cải thiện ảnh.............................................................................................................11 2.1.5. Giãn ảnh (DILATION)...........................................................................................12 2.1.6.Co ảnh(EROSION)...................................................................................................13 2.1.7.Phát hiện biên của ảnh .............................................................................................14 2.2. Giới thiệu về thư viện OpenCV......................................................................15 2.2.1. Tổng quan về OpenCV...........................................................................................15 2.2.2. Đặc trưng và cấu trúc trong OpenCV ..................................................................16 2.3 Bài toán phát hiện cách phát hiện khuôn mặt của OpenCV. .........................17 2.3.1 Giới thiệu về cách nhận diện khuôn mặt..............................................................17 2.4. Lựa chọn thiết bị.............................................................................................19 2.4.1. Vi điều khiển ............................................................................................................19 2.4.2. Camera.......................................................................................................................20 2.4.3. Mạch điều khiển động cơ.......................................................................................21 2.4.4. Động cơ DC..............................................................................................................22 2.4.5. Bánh xe thụ động trong khung xe robot..............................................................232.4.6. Pin cell 18650...........................................................................................................23 2.5. Thiết kế phần cứng .........................................................................................24 2.5.1. Thiết kế khung robot...............................................................................................24 2.5.2. Khung robot hoàn chỉnh thực tế ...........................................................................25 2.6. Thiết kế hệ thống điều khiển robot.................................................................26 2.6.1 Truyền dữ liệu qua Serial Port ...............................................................................26 2.6.2. Chương trình trên vi điều khiển............................................................................26 CHƯƠNG 3 XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT..................27 3.1 Phân tích hệ thống: ...................................................................................27 3.2 Xây dựng hệ thống.......................................................................................................28 CHƯƠNG 4. THỰC NGHIỆM VÀ BÁO CÁO KẾT QUẢ ....................................32 4.1 Chương trình xử lý ảnh ...............................................................................................32 4.2. Đánh giá thực nghiệm.....................................................................................36 4.3 Kết luận và hướng phát triển ...........................................................................38 4.3.1 Những kết quả đạt được của khóa luận ................................................................38 4.3.2 Hạn chế .......................................................................................................................38 4.3.3 Hướng nghiên cứu và phát triển ............................................................................38 PHỤ LỤC..................................................................................................................39 TÀI LIỆU THAM KHẢO.........................................................................................45

TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN- ĐIỆN TỬ NGUYỄN ĐỨC BÌNH THIẾT KẾ ROBOT HƯỚNG DẪN ĐƯỜNG ĐI CHO NGƯỜI BẰNG CÁCH NHẬN DIỆN KHUÔN MẶT ĐỒ ÁN TỐT NGHIỆP Đà Nẵng, 2022 TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐIỆN- ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ ROBOT HƯỚNG DẪN ĐƯỜNG ĐI CHO NGƯỜI BẰNG CÁCH NHẬN DIỆN KHUÔN MẶT CHUYÊN NGÀNH: ĐIỆN TỰ ĐỘNG GVHD: T.S TRẦN THUẬN HỒNG SVTH: NGUYỄN ĐỨC BÌNH LỚP : K23 EDT MSSV: 23211710058 Đà Nẵng, 2022 LỜI CẢM ƠN Qua bốn năm phấn đấu và học hỏi không ngừng, cuối cùng em cũng đã hoàn thành đồ án tốt nghiệp Để đạt được thành quả này, phải kể đến công lao to lớn của toàn thể thầy cô, bạn bè đã tận tình dạy dỗ và giúp đỡ em suốt quá trình học tập từ em mới bước vào trường còn nhiều bỡ ngỡ Qua em xin gửi lời cảm ơn chân thành đến toàn thể các thầy giáo, cô giáo trường Đại học Duy Tân, đặc biệt là thầy T.S Trần Thuận Hoàng – Người đã ln ln giúp đỡ, hướng dẫn tận tình em suốt quá trình làm đồ án Em đã học hỏi được ở thầy phương pháp làm việc khoa học, tính kiên trì, sáng tạo nghiên cứu và nhiều kiến thức bổ ích Em cũng xin gửi lời cảm ơn chân thành đến các thầy cô trung tâm Điện-Điện Tử CEE Trường Đại Học Duy Tân Các thầy cô đã truyền đạt và hướng dẫn chúng em những kiến thức nền tảng quan trọng của ngành học giúp chúng em vận dụng phát huy vào thực tế đồ án Em xin cảm ơn các anh, chị công tác tại trung tâm Điện-Điện Tử CEE đã tạo điều kiện, giúp đỡ và truyền đạt nhiều kinh nghiệm quý giúp em hoàn thành tốt đồ án này Em xin kính chúc các thầy giáo, cô giáo, các anh chị và các bạn mạnh khỏe, hạnh phúc và thành công cuộc sống ! Đà Nẵng, ngày tháng năm 2022 Nguyễn Đức Bình LỜI CAM ĐOAN Tơi xin cam đoan: Bản đồ án này là toàn bộ công sức bỏ nghiên cứu nghiêm túc, thực sự dưới sự hướng dẫn tận tình của thầy Trần Thuận Hoàng, không chép của riêng Nội dung của đồ án có tham khảo và sử dụng các tài liệu, thông tin internet đã được xác nhận theo danh mục tài liệu tham khảo ở cuối quyển khóa luận này MỤC LỤC MỞ ĐẦU 1 Tính cấp thiết của đề tài Ý nghĩa khoa học và thực tiễn Đối tượng Phương pháp nghiên cứu Nội dung nghiên cứu CHƯƠNG TỔNG QUAN VỀ ROBOT VÀ ROBOT DI ĐỘNG 1.1 Robot 1.2 Robot di động 1.2.1.Cấu trúc .5 1.2.2 Một số ứng dụng của robot di động .6 CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Tổng quan xử lý ảnh 2.1.1 Xử lý ảnh .7 2.1.2.Một số khái niệm bản về ảnh 2.1.3 Giới thiệu về không gian màu 2.1.4 Cải thiện ảnh .11 2.1.5 Giãn ảnh (DILATION) 12 2.1.6.Co ảnh(EROSION) 13 2.1.7.Phát hiện biên của ảnh .14 2.2 Giới thiệu về thư viện OpenCV 15 2.2.1 Tổng quan về OpenCV 15 2.2.2 Đặc trưng và cấu trúc OpenCV 16 2.3 Bài toán phát hiện cách phát hiện khuôn mặt của OpenCV 17 2.3.1 Giới thiệu về cách nhận diện khuôn mặt 17 2.4 Lựa chọn thiết bị 19 2.4.1 Vi điều khiển 19 2.4.2 Camera .20 2.4.3 Mạch điều khiển động .21 2.4.4 Động DC 22 2.4.5 Bánh xe thụ động khung xe robot 23 2.4.6 Pin cell 18650 23 2.5 Thiết kế phần cứng 24 2.5.1 Thiết kế khung robot .24 2.5.2 Khung robot hoàn chỉnh thực tế 25 2.6 Thiết kế hệ thống điều khiển robot 26 2.6.1 Truyền dữ liệu qua Serial Port .26 2.6.2 Chương trình vi điều khiển 26 CHƯƠNG XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT 27 3.1 Phân tích hệ thống: 27 3.2 Xây dựng hệ thống .28 CHƯƠNG THỰC NGHIỆM VÀ BÁO CÁO KẾT QUẢ 32 4.1 Chương trình xử lý ảnh .32 4.2 Đánh giá thực nghiệm 36 4.3 Kết luận và hướng phát triển 38 4.3.1 Những kết quả đạt được của khóa luận 38 4.3.2 Hạn chế .38 4.3.3 Hướng nghiên cứu và phát triển 38 PHỤ LỤC 39 TÀI LIỆU THAM KHẢO 45 DANH MỤC HÌNH ẢNH Hình 1.1: Ba bợ phận của mợt robot Hình 1.2: Sơ đồ khối cấu trúc của robot di động Hình 2.1: Quá trình xử lý ảnh Hình 2.2: Các bước xử lý ảnh một hệ thống xử lý ảnh Hình 2.3: Mơ hình màu RGB 10 Hình 2.4: Mơ hình màu HSV 11 Hình 2.5 Mợt sớ phương pháp tách biên 15 Hình 2.6 Cấu trúc phần của OpenCV 16 Hình 2.7 Hệ thớng nhận dạng khuôn mặt 18 Hình 2.8: Vi điều khiển Atmega 328 19 Hình 2.9: Sơ đồ chân của Atmega 328 20 Hình 2.10: Module điều khiển động VNH2SP30 21 Hình 2.11: Sơ đồ nguyên lý module VNH2SP30 22 Hình 2.12: Động DC 22 Hình 2.13: Bánh xe thụ động 23 Hình 14: Pin cell 18650 23 Hình 2.15: Bản vẽ khung robot 24 Hình 2.16: Mặt dưới đáy của khung robot thực tế 25 Hình 2.17 Mặt thực tế của Robot 25 Hình 2.18: Sơ đồ đấu dây phần điều khiển 26 Hình 3.1 Ảnh các bước trình hoạt đợng robot 28 Hình 3.2 Ảnh của cảm biến hình ảnh( Camera/webcame) 29 Hình 3.3 Hai hình tam giác tương tự đối diện 30 Hình 3.4 Ảnh đo khoảng cách phương pháp tiêu cự 30 Hình 3.5: Sơ đồ khới robot di động 32 Hình 3.6 Phát hiện khn mặt tạo khung hình 36 Hình 3.7 Khơng đo khoảng cách lệch khung hình 36 Hình 3.8: Kết quả thực nghiệm 37 MỞ ĐẦU Tính cấp thiết của đề tài Khoảng mười năm trở lại đây, phần cứng máy tính và các thiết bị liên quan đã có sự tiến bộ vượt bậc về tốc độ tính toán, dung lượng chứa, khả xử lý v.v và giá cả đã giảm đến mức máy tính và các thiết bị liên quan đến xử lý ảnh đã không còn là thiết bị chuyên dụng nữa Khái niệm ảnh số đã trở nên thông dụng với hầu hết mọi người xã hội và việc thu nhận ảnh số các thiết bị cá nhân hay chuyên dụng cùng với việc đưa vào máy tính xử lý đã trở nên đơn giản Cùng với thời đại công nghiệp hiện nay, robot ngày càng được sử dụng phổ biến sản xuất cũng đời sống người Robot đã có một vị trí quan trọng khó có thể thay thế được, nó giúp người làm việc các điều kiện khó khăn, nguy hiểm Ngoài ra, robot còn được dùng vào các lĩnh vực thám hiểm vũ trụ, quân sự, giải trí…Lĩnh vực robot di động ngày càng chiếm được sự quan tâm của các nhà nghiên cứu và xã hội Từ tình hình thực tế đó, việc xây dựng chương trình hoạt động cho các robot là điều thiết yếu đặc biệt đối với các robot di động Trong khóa luận này đã thực hiện chương trình dựa công nghệ thị giác máy tính để robot có thể phát hiện chuyển động của một vật bất kỳ và bám theo vật đó Ngoài robot còn có thể tìm kiếm vật nhất định Ý nghĩa khoa học thực tiễn Công nghệ thị giác máy tính ứng dụng vào robot di động là một công nghệ tiên tiến, giúp robot cảm nhận được môi trường rộng và rõ thông qua nhận biết môi trường hình ảnh Robot di động bám đối tượng có thể ứng dụng robot vào các nhiệm vụ tuần tra an ninh, tìm kiếm, phát hiện mục tiêu quân sự,… Đối tượng Đối tượng nghiên cứu ở là robot di động có thể hoạt động hoàn toàn tự động Robot được điều khiển từ xa một máy tính thông qua môi trường truyền sóng vô tuyến Phương pháp nghiên cứu Thiết kế một robot di động có gắn cảm biến camera để minh họa cho các chương trình đã phát triển Phát triển các chương trình nhúng vi điều khiển và chương trình máy tính Kết nối các thành phần cứng với và nạp chương trình nhúng vào vi điều khiển Kiểm tra, chạy thử, đánh giá chương trình và đưa hướng phát triển mới Nội dung nghiên cứu Nội dung khóa luận gồm chương:  Chương 1: Tổng quan về robot và robot di động;  Chương 2: Cơ sở lý thuyết;  Chương 3:Xây dựng hệ thống nhận diện khuôn mặt;  Chương 4: Thực nghiệm và báo cáo kết quả CHƯƠNG TỔNG QUAN VỀ ROBOT VÀ ROBOT DI ĐỘNG 1.1 Robot Robot xuất hiện lần đầu tiên ở New York vào 09/10/1922 vở kịch “Rossum’s Universal Robot” của nhà soạn kịch người Tiệp Khắc là Karen Chapek, còn từ robot là một cách gọi khác của từ Robota – theo tiếng Tiệp có nghĩa là công việc lao dịch Khi đó Karen Chapek cho Robot là những người máy có khả làm việc không có khả suy nghĩ Ngày đã có rất nhiều nhà khoa học đưa các định nghĩa khác về robot lại: robot là một tác tử nhân tạo, thực tế là một hệ thống – điện tử, truyền tải một thông tin cảm nhận có mục đích qua sự hiện diện hoặc chuyển động của nó môi trường xung quanh Nói vậy thì robot gồm ba bộ phận bản: Bộ cảm nhận, bộ điều khiển và bộ chấp hành + Bộ cảm nhận: Có nhiệm vụ thu thập thông tin từ môi trường Môi trường ở có thể được biết trước hoặc không biết trước Trong một số trường hợp, trạng thái chính của robot (như số vòng quay của bánh xe di động cho thân robot) cũng được coi là biến môi trường; + Bộ điều khiển: Thông tin từ bộ cảm nhận được đưa vào bộ điều khiển để xử lý và xuất các lệnh thích hợp quyết định hành vi của hệ thống Người ta coi bộ điều khiển là “bộ não” của robot Thường bộ phận này là các máy tính hay các bộ xử lý chuyên dụng và các bộ nhớ cùng các giao diện ghép nối vào/ra; + Bộ chấp hành: Thực hiện các lệnh từ bộ điều khiển để tác động trở lại môi trường hay chính robot; Với một hệ thống vậy thì cấu trúc của robot có liên quan chặt chẽ tới sự phát triển của các công nghệ về điện – điện tử, khí và phần mềm máy tính 31 =>Với phương pháp dự đoán khoảng cách trên, chúng nhận thấy vẫn còn một yếu tố dẫn đến sai sót kết quả Cụ thể, mỗi người khác sẽ có một khuôn mặt khác Khi ở cùng một khoảng cách trước ống kính, kích thước khuôn mặt của mỗi người ảnh cũng sẽ khác vì khuôn mặt của mỗi người là khác và ánh sáng môi trường xung quanh tác động 32 CHƯƠNG THỰC NGHIỆM VÀ BÁO CÁO KẾT QUẢ Dưới xin trình bày chi tiết về tất cả thành phần của robot đã được xây dựng từ phần cứng, phần mềm và được lại với khối lại với Sơ đồ khối chi tiết: Các bus tốc độ cao USB2.0 camera PC Đối tượng Khối điều khiển Cơ cấu chấp hành Hình 3.5: Sơ đồ các khối robot di động Trung tâm của robot di đợng máy tính PC, mợt máy tính xách tay tốc độ 1.8GHz cài hệ điều hành Windows 10 Sử dụng máy tính PC có nhiệm vụ cung cấp cho máy tính hình ảnh cho robot Dữ liệu sau được xử lý từ PC sẽ truyền xuống khối điều khiển Khối điều khiển là vi điều khiển arduino uno kết hợp với module VNH2SP30 cầu H điều khiển động 30A Cơ cấu chấp hành là động DC servo SE38BE27-001 24V-DC 4400RPM 4.1 Chương trình xử lý ảnh Chương trình phần mềm máy tính được viết phần mềm Pycharm 2021 Tôi sử dụng OpenCV 4.60 của hãng Intel để viết chương trình xử lý ảnh Chương trình xử lý ảnh máy tính có nhiệm vụ: Phát hiện vật và bám theo chuyển động đó 33 Các bước trình xử lý ảnh Chụp ảnh -Kết nối Camera với máy tính - Sử dụng một hàm thư viện OpenCV để thực hiện công việc chụp ảnh cap = cv2.VideoCapture(0); Nhận dạng mục tiêu Là quá trình xác định chính xác vật thể cần nhận dạng Phương pháp được sữ dụng ở là nhận dạng dựa vào đường biên vật thể Từ biên dạng này ta sẽ xác định được các đỉnh, các cạnh và tâm của vật thể Phương pháp phổ biến hiện là phương pháp Canny Nội dung phương pháp Canny sau : Bước 1: làm trơn ảnh bộ lọc Gaus để loại bỏ ảnh hưởng của nhiễu; Bước 2: Tính gradient của các phần tử ảnh và hướng của gradient Xác định tâm vật thể Sau đã nhận dạng được vật thể không gian làm việc , ta có thể kê các đường bao quanh vật và dễ dàng xác định được tâm của vật thể sử dụng cấu trúc cv::Moment OpenCV Điều khiển Robot Sau tìm được tâm vật thể thì chương trình xử lý ảnh sẽ gửi các ký tự xuống Vi điều khiển điều khiển Robot di chuyển Tìm kiếm vật( Khuôn mặt) Vật được tìm kiếm ở là khuôn mặt quá trình di chuyển Khi robot tìm thấy khuôn mặt khuôn hình cho phép thì robot sẽ bắt bắt đầu bám khuôn mặt phạm vi cho phép với tốc độ sẽ tăng dần khuôn mặt xa dần với khoảng cách ta đặt từ trước *Nguyên lý hoạt động của hệ thống Hệ thống bao gồm các thành phần , nguyên lý hoạt động hình dưới đây.Trong đó, một camera laptop có nhiệm vụ thu thập hình ảnh và gửi về cho phần mền xử lý ảnh sẽ thực hiện các nhiệm vụ liên quan đến việc nhận diện và đo khoảng cách từ khuôn mặt đến camera gửi tín hiệu xuống phần cứng của của robot bao gồm một hệ xử lý ardunio và truyền tín hiệu sang mạch điều khiển động để điều chỉnh tốc 34 độ quay của bánh xe và tốc độ để bắt đầu di chuyển theo đối tượng khuôn mặt và giữ khoảng cách theo phần mền xử lý máy tính Xử lý ảnh python Serial Gửi tín hiệu qua arduino điều khiển đông Camera gắn ở laptop Nguyên lý hoạt động của robot Robot tự hành 35 Lưu đồ thuật toán 36 4.2 Đánh giá thực nghiệm Nếu tìm thấy khuôn mặt khung hình thì chương trình sẽ hiện đường bao khuôn mặt và khoảng cách từ camera đến laptop hình 4.1 Hình 4.1 Phát hiện khn mặt và tạo khung hình Nếu khuôn mặt lệch khung hình sẽ khơng hiện hình 4.2 Hình 4.2 Không đo khoảng cách lệch khung hình 37 Sau kiểm tra và chạy thử chương trình xử lý ảnh đã hoàn tất, ta tiếp tục thử cả chương trình xử lý ảnh với điều khiển robot Hình 4.2 Kết quả thực nghiệm Dưới là bảng kết quả của trình thực nghiệm: Lần thử Thời gian phản ứng thấy Kết quả đối tượng theo dõi (s) Lần 0,5 Đạt Lần 0,75 Đạt Lần Không đạt Lần 0,25 Đạt Lần 1,5 Không đạt 0,8 80% Tỷ lệ thành cơng Thời gianTB Có hai vấn đề q tình thực nghiệm khiến chương trình khơng nhận dạng được đối tượng thứ nhất, chất lượng camera không được tốt nên việc nhận 38 dạng màu của vật thường không chính xác Thứ hai, điều kiện ánh sáng thay đổi chạy môi trường tự nhiên cũng dẫn đến việc nhận dạng vật không tốt 4.3 Kết luận hướng phát triển 4.3.1 Những kết quả đạt được của khóa luận Qua quá trình thực hiện khóa luận tốt nghiệp đã học hỏi và tiếp thu được nhiều kiến thức bổ ích và thu được một vài kết quả Đã nghiên cứu và tìm hiểu về lý thuyết về vi điều khiển , lập trình C cho vi điều khiển, lập trình xử lý ảnh sử dụng thư viện mã nguồn mở OpenCV của hãng Intel, vấn đề giao tiếp giữa máy tính và vi điều khiển thông qua cổng giao tiếp nối tiếp và quy trình làm nên một sản phẩm điện tử Từ các lý thuyết đó đã ứng dụng vào thực tế tạo một mô hình robot di động có thể chạy được các chương trình tự phát triển 4.3.2 Hạn chế Ngoài những kết quả đạt được ở trên, khóa luận cũng còn những hạn chế đó là: Do chất lượng camera không tốt nên việc nhận dạng màu của vật thường không chính xác , robot phải chạy môi trường ánh sáng tốt, không nhận dạng tốt ngoài ánh sáng tự nhiên 4.3.3 Hướng nghiên cứu phát triển Vì phương pháp nhận dạng vật dựa vào hình ảnh phụ thuộc nhiều vào ánh sáng nên không thích hợp cho robot di động hoạt động ngoài môi trường thực tế Do đó thời gian tới ,nếu có điều kiện sẽ tiếp tục nghiên cứu và hoàn thiện các sai sót còn mắc phải 39 PHỤ LỤC Dưới là toàn bộ mã nguồn đã được phát triển cho robot a Chương trình vi điều khiển /************************************************ #include #include #define MAX_DISTANCE 250 #define BRAKE #define CW #define CCW #define CS_THRESHOLD 15 // Definition of safety current (Check: "1.3 Monster Shield Example") //MOTOR #define MOTOR_A1_PIN #define MOTOR_B1_PIN //MOTOR #define MOTOR_A2_PIN #define MOTOR_B2_PIN #define PWM_MOTOR_1 #define PWM_MOTOR_2 #define CURRENT_SEN_1 A2 #define CURRENT_SEN_2 A3 #define EN_PIN_1 A0 #define EN_PIN_2 A1 #define MOTOR_1 #define MOTOR_2 40 short usSpeed = 150; //default motor speed unsigned short usMotor_Status1 = BRAKE; unsigned short usMotor_Status2 = BRAKE; String inputString = ""; // a String to hold incoming data bool revComplete = false; // whether the string is complete int distance = 0; int offset = 0; long count_outframe = 0; void setup() { Serial.begin(115200); inputString.reserve(200); pinMode(MOTOR_A1_PIN, OUTPUT); pinMode(MOTOR_B1_PIN, OUTPUT); pinMode(MOTOR_A2_PIN, OUTPUT); pinMode(MOTOR_B2_PIN, OUTPUT); pinMode(PWM_MOTOR_1, OUTPUT); pinMode(PWM_MOTOR_2, OUTPUT); pinMode(CURRENT_SEN_1, OUTPUT); pinMode(CURRENT_SEN_2, OUTPUT); pinMode(EN_PIN_1, OUTPUT); pinMode(EN_PIN_2, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); } void serialEvent() { 41 while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // something about it: if (inChar == '\n') { revComplete = true; } } } void loop() { digitalWrite(EN_PIN_1, HIGH); digitalWrite(EN_PIN_2, HIGH); if (revComplete) { digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); //Serial.println(inputString); int len = inputString.length(); int index = inputString.indexOf(' '); String str1 = inputString.substring(0, index); String str2 = inputString.substring(index + 1, len); distance = str1.toInt(); offset = str2.toInt() / 8; count_outframe = 0; // clear the string: inputString = ""; revComplete = false; } else { count_outframe++; if (count_outframe > 1000) { count_outframe = 1001; 42 distance = 0; } } // if (distance < 25) { motorGo(MOTOR_1, usMotor_Status1, 0); motorGo(MOTOR_2, usMotor_Status2, 0); } else if (distance < 30) { usMotor_Status1 = CW; usMotor_Status2 = CCW; motorGo(MOTOR_1, usMotor_Status1, 45 + offset); motorGo(MOTOR_2, usMotor_Status2, 45 - offset); } else { usMotor_Status1 = CW; usMotor_Status2 = CCW; motorGo(MOTOR_1, usMotor_Status1, 60 + offset); motorGo(MOTOR_2, usMotor_Status2, 60 - offset); } } void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm) //Function that controls the variables: motor(0 ou 1), direction (cw ou ccw) e pwm (entra e 255); { if (motor == MOTOR_1) { if (direct == CW) { digitalWrite(MOTOR_A1_PIN, LOW); digitalWrite(MOTOR_B1_PIN, HIGH); } else if (direct == CCW) { digitalWrite(MOTOR_A1_PIN, HIGH); digitalWrite(MOTOR_B1_PIN, LOW); } else { digitalWrite(MOTOR_A1_PIN, LOW); digitalWrite(MOTOR_B1_PIN, LOW); } analogWrite(PWM_MOTOR_1, pwm); 43 } else if (motor == MOTOR_2) { if (direct == CW) { digitalWrite(MOTOR_A2_PIN, LOW); digitalWrite(MOTOR_B2_PIN, HIGH); } else if (direct == CCW) { digitalWrite(MOTOR_A2_PIN, HIGH); digitalWrite(MOTOR_B2_PIN, LOW); } else { digitalWrite(MOTOR_A2_PIN, LOW); digitalWrite(MOTOR_B2_PIN, LOW); } analogWrite(PWM_MOTOR_2, pwm); } } ****************************************************** b Chương trình máy tính Vì chương trình phát triển rất dài nên dưới chỉ đưa những đoạn chương trình chính và quang trọng nhất Chương trình đo khoảng cách while True: _,frame = cap.read() frame_height, frame_width, _ = frame.shape RightBound = frame_width - 200 Left_Bound = 200 # gọi hàm dữ liệu khuôn mặt (face_data) face_width_in_frame, faces, FC_X, FC_Y = face_data(frame, True, Distance_level) # tìm khoảng cách cách gọi hàm Cơng cụ tìm khoảng cách for (face_x, face_y, face_w, face_h) in faces: if face_x > 440: Distance = cv2.putText(frame, f"Distance {0} Cm", (face_x - 6, face_y - 6), fonts, 0.7, (BLACK), 3) 44 elif face_x < 50 : Distance = cv2.putText(frame, f"Distance {0} Cm", (face_x - 6, face_y - 6), fonts, 0.7, (BLACK), 3) else: Distance = Distance_finder(Focal_length_found, know_width, face_width_in_frame) Distance = round(Distance, 2) # Drwaing Text on the screen Distance_level = int(Distance) cv2.line(frame, (50, 33), (130, 33), (BLACK), 15) cv2.putText(frame, f"Distance = {Distance} ", (face_x - 6, face_y - 6), fonts, 0.7, (BLACK), 2) #(50,50) tọa độ góc dưới bên trái của chuỗi văn bản ảnh cv2.line(frame, (Left_Bound, 80), (Left_Bound, 480 - 80), (YELLOW), 2) cv2.line(frame, (RightBound, 80), (RightBound, 480 - 80), (YELLOW), 2) cv2.imshow("frame",frame) if cv2.waitKey(1)==ord("q"): break cap.release() cv2.destroyAllWindows() 45 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt [1] Trần Quang Vinh, bài giảng :Robot thông minh 2012, khoa học công nghệ Điện tử- Viễn Thông, đại học Công Nghệ –ĐH Quốc Gia Hà Nội [2] Đỗ Năng Toàn, Xử lý ảnh, giáo trình môn học, khoa học công nghệ thông tin –ĐH Thái Nguyên,2007,Thái Nguyên Nhập môn xử lý ảnh số, ĐH Bách Khoa Hà Nội [3] Nguyễn Văn Ngọ (2001), xử lý ảnh (dịch từ quyển Two Dimensional Signal and Image Processing của tác giả Jae S.Lim) [4] Nguyễn Kim Sách (1997), xử lý ảnh video số, NXB Khoa học kỹ thuật, Hà Nội Tài liệu tiếng anh [5] Gary Bradski and Adrian Kaehler,Learning Computer vision whith thi OpenCV Library [6] Jiankang Deng, Jia Guo, Niannan Xue, Stefanos Zafeiriou: ArcFace: Additive Angular Margin Loss for Deep Face Recognition, InsightFace, FaceSoft (2016) [7] M T Pham, Y Gao, V D D Hoang, and T J Cham: Fast polygonal integration and its application in extending haar-like features to improve object detection In: IEEE Conference on Computer Vision and Pattern Recognition, pp 942-949 (2010) ...TRƯỜNG ĐẠI HỌC DUY TÂN KHOA ĐI? ??N- ĐI? ??N TỬ ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ ROBOT HƯỚNG DẪN ĐƯỜNG ĐI CHO NGƯỜI BẰNG CÁCH NHẬN DIỆN KHUÔN MẶT CHUYÊN NGÀNH: ĐI? ??N TỰ ĐỢNG GVHD: T.S TRẦN THUẬN... Cell 2.5 Thiết kế phần cứng 2.5.1 Thiết kế khung robot Hình 2.16 Bản vẽ khung robot Chi tiết sản phẩm : Đường kính khung robot : 36 cm Chiều cao khung robot : cm Khung của robot được... ở là khuôn mặt quá trình di chuyển Khi robot tìm thấy khuôn mặt khuôn hình cho phép thì robot sẽ bắt bắt đầu bám khuôn mặt phạm vi cho phép với tốc độ sẽ tăng dần khuôn

Ngày đăng: 21/12/2022, 05:26

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN