Đồ án Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D

pdf 70 trang phuongvu95 11962
Bạn đang xem 20 trang mẫu của tài liệu "Đồ án Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfdo_an_thiet_ke_va_thi_cong_mo_hinh_xe_lan_tu_hanh_trong_nha.pdf

Nội dung text: Đồ án Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D

  1. BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH XE LĂN TỰ HÀNH TRONG NHÀ DÙNG CAMERA 3D GVHD: ThS. Ngô Bá Việt SVTH: Huỳnh Tấn Cường MSSV: 14141028 Tp. Hồ Chí Minh - 12/2019
  2. BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH XE LĂN TỰ HÀNH TRONG NHÀ DÙNG CAMERA 3D GVHD: ThS. Ngô Bá Việt SVTH: Huỳnh Tấn Cường MSSV: 14141028 Tp. Hồ Chí Minh - 12/2019
  3. TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp. HCM, ngày 16 tháng 12 năm 2019 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Tấn Cường MSSV: 14141028 Chuyên ngành: Kỹ thuật Điện - Điện tử Mã ngành: 01 Hệ đào tạo: Đại học chính quy Mã hệ: 1 Khóa: 2014 Lớp: 14141DT1A I. TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG MÔ HÌNH XE LĂN TỰ HÀNH TRONG NHÀ DÙNG CAMERA 3D II. NHIỆM VỤ 1. Các số liệu ban đầu: Các tài liệu về Python và thư viện OpenCV,pyrealsense, Giáo trình Xử lý ảnh. Các tài liệu về Arduino và thư viện Arduino. Các ví dụ về nhận dạng hình học cơ bản,truyền nhận dữ liệu qua bluetooth. 2. Nội dung thực hiện: Tìm hiểu phương pháp nhận dạng. Tổng quan về xử lý ảnh. Tìm hiểu Camera 3D, thiết bị công suất và các Module liên quan. Thi công mô hình Viết chương trình trên Python và Arduino IDE. Hoàn thành mô hình. Đánh giá kết quả thực hiện. III. NGÀY GIAO NHIỆM VỤ: 26/08/2019 IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 15/12/2019 V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS. Ngô Bá Việt CÁN BỘ HƯỚNG DẪN BM. ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
  4. TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o Tp. HCM, ngày 16 tháng 12 năm 2019 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Tấn Cường Lớp: 14141DT1A - MSSV: 14141028 Tên đề tài: Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D Xác nhận Tuần/ngày Nội dung GVHD 16-20/9 Chọn đề tài 21-25/9 Viết đề cương chi tiết 26/3-05/10 Tìm hiểu phương pháp nhận dạng hình cơ bản Tìm hiểu truyền nhận dữ liệu không dây 06/-09/10 Tìm hiểu module công suất và động cơ Tìm hiểu module truyền dữ liệu 10-17/10 Tìm hiểu camera 3D 18-21/10 Tìm hiểu thuật toán tính khoảng cách 22-28/10 Tìm hiểu về Arduino 29/5-04/11 Tìm hiểu về python
  5. 05-06/11 Thực hiện viết code python,Arduino trên ubuntu 16.04 07-08/11 Làm mô hình và chạy thử 09-30/11 Hoàn thành mô hình 1-15/12 Viết báo cáo GV HƯỚNG DẪN ThS. Ngô Bá Việt
  6. LỜI CAM ĐOAN Đề tài này là tôi tự thực hiện dựa vào một số tài liệu trước đó và không sao chép từ tài liệu hay công trình đã có trước đó. Người thực hiện đề tài Huỳnh Tấn Cường
  7. LỜI CẢM ƠN Đầu tiên tôi xin được cám ơn chân thành tới Thầy Ngô Bá Việt, Thầy đã tận tình hướng dẫn tôi để có thể hoàn thành tốt đề tài. Tôi xin gửi lời chân thành cảm ơn các thầy cô trong Khoa Điện-Điện Tử đã tạo những điều kiện tốt nhất cho tôi hoàn thành đề tài. Những kiến thức bổ ích mà các Thầy Cô dạy, nó được áp dụng vào đề tài Đồ Án Tốt Nghiệp rất nhiều, từ những kiến thức nhỏ nhặt cho tới những bài học lớn. Một lần nữa tôi xin được gửi lời cảm ơn đến tất cả Thầy Cô, nếu không có Thầy Cô thì chắc giờ này tôi sẽ khó có thể hoàn thành đề tài này. Tiếp theo tôi cũng xin cảm ơn tới các Anh, Chị khóa trên cùng các bạn sinh viên đã tạo điều kiện giúp đỡ, từ những tài liệu liên quan tới đề tài cho tới những kinh nghiệm sống thực tế. Nhờ họ mà tôi mới có thể phát triển được. Tôi cũng gửi lời đồng cảm ơn đến các bạn lớp 14141DT1A đã chia sẻ trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài, và cũng là lớp học có nhiều kí ức nhất thời sinh viên của tôi. Cuối cùng là gửi lời cảm ơn đến Cha, Mẹ nếu không có hai đấng sinh thành thì ngày hôm nay cũng không có ai hiện diện ở đây để thực hiện những việc mình muốn, họ đã tạo mọi điều kiện để giúp con của mình hướng tới một tương lai tốt đẹp. Một lần cuối xin chân thành cảm ơn! Người thực hiện đề tài Huỳnh Tấn Cường
  8. MỤC LỤC Trang bìa i Nhiệm vụ đồ án ii Lịch trình iii Cam đoan iv Lời cảm ơn v Mục lục vi Liệt kê hình vẽ vii Liệt kê bảng vẽ viii Tóm tắt ix LIỆT KÊ HÌNH VẼ 12 LIỆT KÊ BẢNG 14 CHƯƠNG 1: TỔNG QUAN 16 1.1 ĐẶT VẤN ĐỀ 16 1.2 MỤC TIÊU 17 1.3 NỘI DUNG NGHIÊN CỨU 17 1.4 GIỚI HẠN 18 1.5 BỐ CỤC 18 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 19 2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ CÁC THƯ VIỆN LIÊN QUAN 19 2.1.1 Giới thiệu xử lý ảnh 19 2.1.2 Những kiến thức cơ bản trong xử lý ảnh 20 2.1.3 Phương pháp nhận dạng vật mốc 21 2.2 TRUYỀN DỮ LIỆU BLUETOOTH 21 2.2.1 Giới thiệu 21
  9. 2.2.2 Ứng dụng của Bluetooth 22 2.2.3 Ưu và nhược điểm của công nghệ Bluetooth 23 2.3 NGÔN NGỮ PYTHON 23 2.3.1 Giới thiệu 23 2.3.3 Ưu điểm và nhược điểm Python 25 2.4 ARDUINO 25 2.4.1 Giới thiệu 25 2.4.2 Ứng dụng của Arduino 26 2.4.3 Arduino IDE 26 2.5 GIỚI THIỆU PHẦN CỨNG 27 2.5.1 Camera Intel RealSense D435 27 2.5.2 Module HC06 30 2.5.3 Kit Arduino Nano 31 2.5.4 Module Điều Khiển Động Cơ BTS7960 32 CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 33 3.1 GIỚI THIỆU 33 3.2 THIẾT KẾ HỆ THỐNG PHẦN CỨNG 33 3.2.1 Khối thu tín hiệu 34 3.2.2 Khối xử lý và khối hiển thị 35 3.2.4 Khối giao tiếp và điều khiển 35 3.2.5 Khối nguồn 37 3.3 CÁC TÍNH TOÁN TRONG XỬ LÝ ẢNH ĐẦU VÀO 39 3.3.1 Nhận dạng vật mốc bằng ảnh màu của camera 39 3.3.2 Tính khoảng cách dựa vào ảnh độ sau nhận được từ camera 42
  10. CHƯƠNG 4: THI CÔNG HỆ THỐNG 43 4.1 GIỚI THIỆU 43 4.2 THI CÔNG HỆ THỐNG 43 4.2.1 Các linh kiện và model cần thiết cho mô hình 43 4.2.2 Kết nối, lắp ráp và kiểm tra mô hình 43 4.3 THI CÔNG MÔ HÌNH 44 4.3.2 Kết nối bộ phận điều khiển động lực với nguồn 45 4.3.3 Kết nối bộ phận camera với laptop 45 4.3.4 Mô hình hoàn chỉnh 46 4.4 LẬP TRÌNH HỆ THỐNG 47 4.4.1 Lưu đồ giải thuật 47 4.4.2 Lập trình ngôn ngữ Python với Sublime Text 3 49 4.4.2 Lập trình Arduino với Arduino IDE 52 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 53 4.5.1 Viết tài liệu hướng dẫn sử dụng 53 4.5.2 Quy trình thao tác 54 CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 55 5.1 CAMERA 3D 55 5.2 XÁC ĐỊNH VẬT CẢN 55 5.3 NHẬN DẠNG VẬT MỐC 57 5.4 KẾT QUẢ TRÁNH VẬT CẢN 58 5.5 KẾT QUẢ ĐO KHOẢNG CÁCH CỦA XE LĂN 60 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 62 6.1 KẾT LUẬN 62
  11. 6.1.1 Kết quả đạt được 62 6.1.2 Những mặt hạn chế 62 6.2 HƯỚNG PHÁT TRIỂN 62
  12. LIỆT KÊ HÌNH VẼ Hình Trang Hình 1 : Bluetooth 22 Hình 2: Arduino IDE 26 Hình 3: camera Intel RealSense D435 3D 27 Hình 4: Cấu tạo camera Intel RealSense D435 3D 28 Hình 5: Nguyên lý camera Intel RealSense D435 3D 28 Hình 6: Sơ đồ phần cứng camera Intel RealSense D435 3D 29 Hình 7: Module HC06 30 Hình 8: Kit Arduino Nano. 31 Hình 9: Module điều khiển động cơ BTS7960 32 Hình 10: Sơ đồ khối 34 Hình 11: Khối thu tín hiệu 34 Hình 12: Laptop 35 Hình 13: Hình ảnh động cơ xe lăn 36 Hình 14: Sơ đồ nguyên lý mạch điều khiển động cơ 37 Hình 15: Acquy của xe lăn điện 37 Hình 16: Sơ đồ nguyên lý khối nguồn acquy 39 Hình 17: Giao giữa 2 tập hợp keypoint 42 Hình 18: Bộ phận điều khiển 44 Hình 19: Bộ phận điều khiển hoàn chỉnh 44 Hình 20: Bộ phận điều khiển với nguồn 45 Hình 21: Bộ phận camera và laptop 46 Hình 22: mô hình hoàn chỉnh 46
  13. Hình 23: Lưu đồ giải thuật chính 47 Hình 24: Ma trận không gian màu RGB 48 Hình 25: Truyền dữ liệu cho xe di chuyển 49 Hình 26: Xác định khoảng cách dừng camera 50 Hình 27: Truyền dữ liệu cho xe di chuyển 50 Hình 28: Tạo file mới Sublime Text 3 52 Hình 29: chọn cổng Arduino 52 Hình 30: Kiểm tra thư viện 53 Hình 31: Kết quả ảnh RGB và ảnh độ sâu từ camera 55 Hình 32: Kết quả xác định vật cản của camera 56 Hình 33: Kết quả xác định vật mốc của camera trường hợp 1 57 Hình 34: Kết quả xác định vật mốc của camera trường hợp 2 57 Hình 35: Kết quả xác định vật mốc của camera trường hợp 3 58 Hình 36: đi thẳng 58 Hình 37: rẽ trái 59 Hình 38: rẽ phải 59 Hình 39: xe lăn dừng trước vật mốc 60
  14. LIỆT KÊ BẢNG Bảng Trang Bảng 1: Thông số cơ bản động cơ 36 Bảng 2: Thông số đo được 38 Bảng 3: Danh sách các model và linh kiện liên quan. 43 Bảng 4: Thống kê kết quả xác định khoảng cách tối đa camera nhìn thấy vật cản 56 Bảng 5: Thống kê kết quả xác định khoảng cách vật mốc 60
  15. TÓM TẮT Trong đời sống, xe lăn là thiết bị hỗ trợ cần thiết cho những người khuyết tật, nó đã và đang được ứng dụng trong các hộ gia đình đang có người khuyết tật, di chuyển một cách khó khăn. Đề tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D” là mô hình với mục đích giúp người khuyết tật có cả năng di chuyển một cách tự động, linh hoạt. Xe lăn đạt được những mục tiêu nhận diện vật cản phía trước, xác định được vật mốc và cho xe ngừng di chuyển tại vật mốc. Kết quả đã đạt được những mục tiêu đề ra với đề tài là: Xác định được vật cản Điều hướng xe lăn di chuyển khi có vật cản Nhận dạng được vật mốc Xác dịnh vị trí dừng khi có vật mốc Với kết quả đạt được xe lăn có thể chạy theo đúng với yêu cầu trong điều kiện thực tế, khả thi trong thương mại và cuộc sống. Có khả năng ứng dụng trong các bệnh viện, nhà ở, nơi có địa hình di chuyển không quá gồ ghề.
  16. CHƯƠNG 1: TỔNG QUAN CHƯƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Theo công bố của Tổng cục thống kê và UNICEF ngày 11 -1 -2019, hơn 7% dân số Việt Nam từ 2 tuổi trở lên – khoảng 6,2 triệu người là người khuyết tật. Bên cạnh đó, có 13% dân số - gần 12 triệu người, sống chung trong hộ gia đình có người khuyết tật. Người khuyết tật được phân thành 6 loại dạng tật, đó là: khuyết tật vận động (chân, tay); khuyết tật nghe, nói (câm, điếc); khuyết tật nhìn (khuyết tật về mắt, khiếm thị); khuyết tật thần kinh, tâm thần (người rối loạn thần kinh, người điên); khuyết tật trí tuệ (bại não, động kinh, tự kỷ); khuyết tật khác (nạn nhân chất độc da cam, người nhiễm vi rút độc hủy hoại cơ thể ).[1] Cơ sở hạ tầng hiện nay ở nước ta vẫn chưa phát triển các hạng mục dành cho người khuyết tật. Nhà nước đã trợ cấp các dụng cụ hỗ trợ cho người khuyết tật như chân tay giả, xe lăn, máy trợ thính nhưng đối với người khuyết tật về vận động hay nghe, nhìn thì xe lăn là vật dụng rất cần thiết để di chuyển. Tuy nhiên, để một người khuyết tật có thể tự đi lại được bằng xe lăn thì đòi hỏi phải có bộ điều khiển để xe lăn có thể di chuyển theo ý muốn của người khuyết tật. Có nhiều nghiên cứu về bộ điều khiển cho xe lăn điện như bài báo “Gyro- Accelerometer based Control of an Intelligent Wheelchair” [2] của nhớm tác giả Rafia Hassani, Mohamed Boumehraz, Maroua Hamzi, Zineb Habba được ra mắt ngày 9 tháng 6 năm 2018, đề tài xe lăn điện điều khiển bằng cử động đầu của nhóm sinh viên đại học sư phạm kỹ thuật Đà Nẵng, Đại học giao thông vận tải, vẫn còn một số nhược điểm như thiết bị điều khiển còn sơ sài, sử dụng cảm biến siêu âm phát hiện vật cản quá nhiều gây mất thẩm mĩ, Với mục đích có thể tạo ra một bộ điều khiển giúp người khuyết tật có thể di chuyển dễ dàng bằng xe lăn vận dụng một các ưu điểm và nhằm khắc phục một số nhược điểm mà các nghiên cứu trước đã thực hiện, nhóm xin giới thiệu đề tài: “Nghiên cứu, thiết kế
  17. CHƯƠNG 1: TỔNG QUAN và thi công bộ điều khiển xe lăn điện bằng cảm biến gia tốc”, do chính nhóm tiến hành nghiên cứu và thực hiện. Với mô hình này, chúng ta có thể phát triển bộ điều khiển biến chiếc xe lăn thành một vật dụng hữu ích giúp cho người khuyết tật có thể đi lại dễ dàng hơn Cùng với sự phát triển ngày càng mạnh mẽ của khoa học kĩ thuật trong một vài thập kỷ gần đây, xử lý ảnh tuy là một ngành khoa học còn tương đối mới mẻ so với nhiều ngành khoa học khác nhưng hiện nay đang là một trong những lĩnh vực phát triển rất nhanh và thu hút sự quan tâm đặc biệt từ các nhà khoa học, thúc đẩy các trung tâm nghiên cứu, ứng dụng về lĩnh vực hấp dẫn này. Xử lý ảnh đóng vai trò quan trọng trong nhiều ứng dụng thực tế về khoa học kĩ thuật cũng như trong cuộc sống thường ngày như: sản xuất và kiểm tra chất lượng, sự di chuyển của Robot, các phương tiện đi lại tự trị, công cụ hướng dẫn cho người mù, an ninh và giám sát, nhận dạng đối tượng, nhận dạng mặt, các ứng dụng trong y học, sản xuất, hiệu chỉnh video. Camera 3D [1-2] hiện đang là loại camera có độ ứng dụng cao trong khoa học kỹ thuật vì camera này có khả năng ghi nhận chiều sâu đối tượng, tương tự mắt con người. 1.2 MỤC TIÊU Mục tiêu nghiên cứu của đề tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D” sử dụng laptop xử lý được tín hiệu từ camera 3D Realsense sau đó giao tiếp với Arduino Nano là bộ xử lý tín hiệu điều khiển động cơ đặt dưới xe để điều khiển xe lăn điện. 1.3 NỘI DUNG NGHIÊN CỨU Để tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D” Có những nội dung sau: . NỘI DUNG 1: Tìm hiểu phương pháp nhận dạng vật mốc . NỘI DUNG 2: Tổng quan về xử lý ảnh. . NỘI DUNG 3: Tìm hiểu camera 3D và các Module liên quan. . NỘI DUNG 4: Viết chương trình trên Python va Arduino.
  18. CHƯƠNG 1: TỔNG QUAN . NỘI DUNG 5: Hoàn thành mô hình. . NỘI DUNG 6: Đánh giá kết quả thực hiện 1.4 GIỚI HẠN Với đề tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D” thì chỉ sử dụng được ở những nơi có địa hình bằng phẳng không gồ ghề, tránh ánh sáng trực tiếp từ mặt trời gây ra nhiễu camera. Khoảng cách phát hiện được vật cản là dưới 1.5m, độ cao của vật phải trên 0.5m so với mặt đất. 1.5 BỐ CỤC Chương 1: Tổng quan Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nôi dung nghiên cứu, các giới hạn thông số và bố cục đồ án. Chương 2: Cơ sở lý thuyết Chương này sẽ trình bày cơ bản về xử lý ảnh, phương pháp cơ bản để nhận dạng và phân loại ảnh, tính kích thước sản phẩm, giới thiệu cơ bản về camera3D và thư viện liên quan. Chương 3: Thiết kế và tính toán Chương này sẽ đi tìm hiểu kỹ các thuật toán nhận dạng sản phẩm theo hình dạng, thuật toán tính kích thước và thiết kế mô hình sản phẩm. Chương 4: Thi công hệ thống Nội dung chương này là quá trình thi công cùng với việc chạy chương trình về phân loại sản phẩm cũng như tính kích thước sản phẩm. Chương 5: Kết quả nhận xét và đánh giá Nội dung chương này là tổng hợp các kết quả đạt được sau khi thi công mô hình và kết quả đạt được khi phân loại sản phẩm. Chương 6: Kết luận và hướng phát triển Kết quả nhận được khi hoàn thiện đề tài, đưa ra các hướng phát triển hoàn thiện.
  19. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH VÀ CÁC THƯ VIỆN LIÊN QUAN 2.1.1 Giới thiệu xử lý ảnh Xử lý ảnh không còn là đề tài quá mới, nó được áp dụng từ trong các hoạt động thường ngày cho đến việc nâng cao sản xuất. Nó giúp ích cho cá nhân hay gia đình, mà còn ứng dụng cả trong Chính trị, Y tế, Giáo dục Xử lý tín hiệu là một môn học trong kỹ thuật điện tử, viễn thông và trong toán học. Liên quan đến nghiên cứu và xử lý tín hiệu kỹ thuật số và analog, giải quyết các vấn đề về lưu trữ, các thành phần bộ lọc, các hoạt động khác trên tín hiệu. Các tín hiệu này bao gồm truyền dẫn tín hiệu, âm thanh hoặc giọng nói, hình ảnh, và các tín hiệu khác Trong số các phương pháp xử lý tín hiệu kể trên, lĩnh vực giải quyết với các loại tín hiệu mà đầu vào là một hình ảnh và đầu ra cũng là một hình ảnh, sản phẩm đầu ra được thực hiện trong một quá trình xử lý. Đó chính là quá trình xử lý ảnh. Nó có thể được chia thành xử lý hình ảnh tương tự và xử lý hình ảnh kỹ thuật số. Để có 1 bức ảnh số ta có quá trình thực hiện như sau: Chụp ảnh từ một máy ảnh là một quá trình vật lý. Ánh sáng mặt trời sử dụng như một nguồn năng lượng. Một dãy cảm biến được sử dụng cho việc thu lại của hình ảnh. Vì vậy, khi ánh sáng mặt trời rơi trên người đối tượng, sau đó số lượng ánh sáng phản xạ của đối tượng được cảm nhận từ các cảm biến, và một tín hiệu điện áp liên tục được tạo ra bởi số lượng dữ liệu cảm biến đó. Để tạo ra một hình ảnh kỹ thuật số, chúng ta cần phải chuyển đổi dữ liệu này thành một dạng kỹ thuật số. Điều này liên quan đến việc lấy mẫu và lượng tử hóa. Kết quả của việc lấy mẫu và lượng tử hóa sau một quá trình xử lý là một hình ảnh kỹ thuật số. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 19
  20. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1.2 Những kiến thức cơ bản trong xử lý ảnh A. Điểm ảnh: Là đơn vị cơ bản nhất để tạo nên một bước ảnh kỹ thuật số, địa chỉ của điểm ảnh được xem như là một tọa độ (x,y) nào đó. Một bức ảnh kỹ thuật số - có thể được tạo ra bằng cách chụp hoặc bằng một phương pháp đồ họa nào khác - được tạo nên từ hàng ngàn hoặc hàng triệu pixel riêng lẻ. Bức ảnh càng chứa nhiều pixel thì càng chi tiết. Một triệu pixel thì tương đương với 1 megapixel. B. Ảnh số: là tập hợp hữu hạn các điểm ảnh với mức xám phù hợp dùng để mô tả ảnh gần với ảnh thật. Số điểm ảnh xác định độ phân giải của ảnh. Ảnh có độ phân giải càng cao thì càng thể hiện rõ nét các đặt điểm của tấm hình càng làm cho tấm ảnh trở nên thực và sắc nét hơn. Một hình ảnh là một tín hiệu hai chiều. Nó được xác định bởi hàm toán học f(x, y) trong đó x và y là hai tọa độ theo chiều ngang và chiều dọc. Các giá trị của f(x, y) tại bất kỳ điểm nào là cung cấp các giá trị điểm ảnh (pixel ) tại điểm đó của một hình ảnh. C. Phân loại ảnh: Mức xám của điểm ảnh là cường độ sáng, gán bằng một giá trị tại điểm đó. Các mức ảnh xám thông thường: 16, 32, 64, 128, 256. Mức được sử dụng thông dụng nhất là 256, tức là dùng 1 byte để biểu diễn mức xám. Ảnh nhị phân: Là ảnh có 2 mức trắng và đen. Chỉ có 2 giá trị 0 và 1 và chỉ sử dụng 1 bit dữ liệu trên 1 điểm ảnh. Ảnh đen trắng: Là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau. Ảnh màu: Là ảnh kết hợp của 3 màu cơ bản lại với nhau để tạo ra một thế giới màu sinh động. Người ta thường dùng 3 byte để mô tả mức màu, tức là có khoảng 16,7 triệu mức màu. Hiện nay xử lý ảnh được giảng dạy trường đại học và ứng dụng vào thực tế rất nhiều như các phần mềm chỉnh sửa hình ảnh hay nhận biết khuôn mặt. Chính vì thế có rất nhiều BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 20
  21. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT công cụ để chúng ta lập trình ứng dụng vào thực tế, Như phải kể đến Matlap, hay ngôn ngữ Python 2.1.3 Phương pháp nhận dạng vật mốc Với đề tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D.” Thiết kế mô hình phân có khả năng nhận dạng các vật xung để có quyết định cho xe lăn. Trong cuộc sống hiện nay,mỗi gia đình đều trang bị rất nhiều vật dụng trong nhà với vô số màu sắc, hình dáng. Mỗi vật mốc đều có một hình dáng , màu sắc khác nhau . Vì thế mỗi vật mốc có điểm đặc biệt riêng. Ở đây ta chúng ta nhận dạng vật mốc bằng các điểm đặc đó của vật mốc. Có nhiều giải thuật để nhận dạng vật mốc như SUFT,YOLO , trong phần này tôi đề cập tới giải thuật SIFT (Scale-Invariant Feature Transform) là phát minh đã được đăng kí bản quyền của David Lowe, là giải thuật trong lĩnh vực Computer Vision, dùng để nhận dạng và miêu tả những điểm đặc trưng(local features) trong ảnh. Giải thuật lần đầu được giới thiệu bởi David Lowe năm 1999. Giải thuật này(cùng với giải thuật anh em là SURF) được ứng dụng rộng rãi trong Nhận dạng đối tượng(object recognition), mô hình hóa 3D(3D modeling), 2.2 TRUYỀN DỮ LIỆU BLUETOOTH 2.2.1 Giới thiệu Bluetooth là sự trao đổi dữ liệu không dây tầm gần giữa các thiết bị điện tử. Công nghệ này hỗ trợ việc truyền dữ liệu qua các khoảng cách ngắn giữa các thiết bị di động như điện thoại di động, tablet, laptop với nhau và với thiết bị cố định mà không cần một sợi cáp để truyền tải. Bluetooth sử dụng sóng Radio tần số 2.4GHz. Tuy sử dụng cùng tần số với công nghệ Wifi nhưng chúng không hề xung đột với nhau vì Bluetooth sử dụng tần số có bước sóng ngắn hơn. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 21
  22. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Hình 1 : Bluetooth Bluetooth là một chuẩn điện tử, điều đó có nghĩa là các hãng sản xuất muốn có đặt tính này trong sản phẩm thì họ phải tuân theo các yêu cầu của chuẩn của Bluetooth cho sản phẩm của mình. Những chỉ tiêu kỹ thuật này bảo đảm cho các thiết bị có thể nhận ra và tương tác với nhau khi sử dụng công nghệ Bluetooth. 2.2.2 Ứng dụng của Bluetooth Các ứng dụng nổi bật của Bluetooth gồm: + Điều khiển và giao tiếp không dây giữa một điện thoại di động và tai nghe không dây. + Mạng không dây giữa các máy tính cá nhân trong một không gian hẹp đòi hỏi ít băng thông. + Giao tiếp không dây với các thiết bị vào ra của máy tính, chẳng hạn như chuột, bàn phím và máy in. + Thay thế các giao tiếp nối tiếp dùng dây truyền thống giữa các thiết bị đo, thiết bị định vị, thiết bị y tế, máy quét mã vạch, và các thiết bị điều khiển giao thông. + Thay thế các điều khiển dùng tia hồng ngoại. + Gửi các các tập tin qua lại các thiết bị dùng Bluetooth khác. + Điều khiển từ xa cho các thiết bị trò chơi điện tử. + Kết nối Internet cho máy tính bằng cách dùng điện thoại di động thay modem. Trong đề tài của tôi, Bluetooth đóng vai trò truyền lệnh điều khiển của bộ phận xử lý tới bộ phận động lực, giúp cho xe lăn di chuyển mà không cần dây dẫn rườm rà. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 22
  23. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.2.3 Ưu và nhược điểm của công nghệ Bluetooth Ưu điểm: Thay thế hoàn toàn dây nối. Hoàn toàn không nguy hại đến sức khoẻ con người. Bảo mật an toàn với công nghệ mã hóa trong. Một khi kết nối được thiết lập thì khó có một thiết bị nào có thể nghe trộm hoặc lấy cắp dữ liệu. Các thiết bị có thể kết nối với nhau trong vòng 20m mà không cần trực diện (hiện nay có loại Bluetooth kết nối lên đến 100m) Kết nối điện thoại và tai nghe Bluetooth khiến cho việc nghe máy khi lái xe hoặc bận việc dễ dàng. Giá thành rẻ. Tốn ít năng lượng, chờ tốn 0.3mAh, tối đa 30mAh trong chế độ truyền dữ liệu. Không gây nhiễu các thiết bị không dây khác. Tính tương thích cao nên được nhiều nhà sản xuất phần cứng và phần mềm hỗ trợ. Nhược điểm: Tốc độ thấp, khoảng 720kbps tối đa. Bắt sóng kém khi có vật cản. Thời gian thiết lập lâu. 2.3 NGÔN NGỮ PYTHON 2.3.1 Giới thiệu Python là một ngôn ngữ lập trình được sử dụng phổ biến ngày nay từ trong môi trường học đường cho tới các dự án lớn . Ngôn ngữ phát triển nhiều loại ứng dụng, phần mềm khác nhau như các chương trình chạy trên desktop, server, lập trình các ứng dụng web Ngoài ra Python cũng là ngôn ngữ ưa thích trong xây dựng các chương trình trí tuệ nhân tạo trong đó bao gồm machine learning. Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng sau này, nó đã chạy trên mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Python do Guido van Rossum tạo ra năm 1990. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý. Mặc dù sự phát triển của Python có sự BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 23
  24. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python. Python là ngôn ngữ có hình thức đơn giản, cú pháp ngắn gọn, sử dụng một số lượng ít các từ khoá, do đó Python là một ngôn ngữ dễ học đối với người mới bắt đầu tìm hiểu. Python là ngôn ngữ có mã lệnh (source code hay đơn giản là code) không mấy phức tạp. cả trường hợp bạn chưa biết gì về Python bạn cũng có thể suy đoán được ý nghĩa của từng dòng lệnh trong source code. Python có nhiều ứng dụng trên nhiều nền tảng, chương trình phần mềm viết bằng ngôn ngữ Python có thể được chạy trên nhiều nền tảng hệ điều hành khác nhau bao gồm Windows, Mac OSX và Linux. OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở, nó là miễn phí cho những ai bắt đầu tiếp cận với các học thuật. OpenCV được ứng dụng trong nhiều lĩnh vực như cho thị giác máy tính hay xử lý ảnh và máy học. Thư viện được lập trình trên các ngôn ngữ cấp cao: C++, C, Python, hay Java và hỗ trợ trên các nền tảng Window , Linux, Mac OS, iOS và Android. OpenCV đã được tạo ra tại Intel vào năm 1999 bởi Gary Bradsky , và ra mắt vào năm 2000. Opencv có rất nhiều ứng dụng: Nhận dạng ảnh, xử lý hình ảnh, phục hồi hình ảnh/video, thực tế ảo Ở đề tài này thư viện OpenCV được chạy trên ngôn ngữ Python. OpenCV được dùng làm thư viện chính để xử lý hình ảnh đầu vào và sau đó đi nhận dạng ảnh. OpenCV Là một thư viện mở nên sử dụng các thuật toán một cách miễn phí, cùng với việc chúng ta cũng có thể đóng góp thêm các thuật toán giúp Thư viện thêm ngày càng phát triển. Các tính năng của thư viện OpenCV: + Đối với hình ảnh, chúng ta có thể đọc và lưu hay ghi chúng. + Về Video cũng tương tự như hình ảnh cũng có đọc và ghi. + Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh. + Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh + Phát hiện các đối tượng xác định được xác định trước như khuôn mặt, mắt, xe trong video hoặc hình ảnh. + Phân tích video, ước lượng chuyển động của nó, trừ nền ra và theo dõi các đối tượng trong video. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 24
  25. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.3.3 Ưu điểm và nhược điểm Python Ưu điểm: +Là một ngôn ngữ có hình thức sáng sủa, cấu trúc roc ràng, cú pháp ngắn gọn +Có trên tất cả các nền tảng hệ điều hành từ UNIX, MS – DOS, Mac OS, Windows và Linix và các OS khác thuộc họ Unix. +Tương thích ạm nh mẽ với Unix, hardware, thirt-party software với số lượng thư viện khổng lồ (400 triệu người sử dụng) +Python với tốc độ xử lý cực nhanh, python có thể tạo ra những chương trình từ những script siêu nhỏ tới những phần mềm cực lớn như Biender 3D. Nhược điểm: +Python không có các thuộc tính như :protected,private hay public, không có vòng lặp do while và switch .case. +Mặc dù tốc độ xử lý của Python nhanh hơn PHP nhưng không bằng JAVA và C++. 2.4 ARDUINO 2.4.1 Giới thiệu Arduino là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử tương tác với nhau hoặc với môi trường được thuận lợi hơn.Arduino giống như một máy tính nhỏ để người dùng có thể lập trình và thực hiện các dự án điện tử mà không cần phải có các công cụ chuyên biệt để phục vụ việc nạp code. Arduino tương tác với thế giới thông qua các cảm biến điện tử, đèn, và động cơ. Arduino gồm: + Phần cứng gồm một board mạch mã nguồn mở (thường gọi là vi điều khiển): có thể lập trình được. + Các phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương cho board. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 25
  26. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.4.2 Ứng dụng của Arduino Arduino có khả năng đọc các thiết bị cảm biến, điều khiển động cơ, nên nó thường được dùng để làm bộ xử lý trung tâm của rất nhiều loại robot. + Game tương tác: Arduino có thể được sử dụng để tương tác với Joystick, màn hình, + Máy bay không người lái. + Điều khiển đèn tín hiệu giao thông, làm hiệu ứng đèn Led nhấp nháy trên các biển quảng cáo + Điều khiển các thiết bị cảm biến ánh sáng, âm thanh. + Làm máy in 3D + Làm đàn bằng ánh sáng Arduino còn rất nhiều ứng dụng hữu ích khác tùy vào sự sáng tạo của người dùng. 2.4.3 Arduino IDE Arduino IDE Arduino Integrated Development Environment) là một trình soạn thảo văn bản, giúp bạn viết code để nạp vào bo mạch arduino.Một trương trình viết bởi Arduino IDE được gọi là sketch, sketch được lưu dưới định dạng .ino. Hình 2: Arduino IDE BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 26
  27. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.5 GIỚI THIỆU PHẦN CỨNG 2.5.1 Camera Intel RealSense D435 A. Giới thiệu về camera Intel RealSense D435 Hình 3: camera Intel RealSense D435 3D Intel RealSense D435 là sản phẩm của Microsoft dựa trên công nghệ camera được phát triển bởi PrimeSense. Intel RealSense D435 được coi như là một thiết bị ngoại vi cho Xbox 360, cho phép giao tiếp với con người thông qua các cử chỉ, đem lại những cảm giác thú vị cho người chơi game trên Xbox. Khả năng hiểu được cử chỉ con người của Intel RealSense D435 dựa trên hai đặc tính chính sau: thông tin về độ sâu ảnh (depth map), khả năng phát hiện và bám theo đặc tính cơ thể người (body skeleton tracking). Bên cạnh phục vụ cho mục đích chơi game, sản phẩm Intel RealSense D435 còn được dùng vào mục đích nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ (gesture recognition), bám theo người (body tracking) và nhiều mục đích khác. Lý do chính cho sự thành công của sản phẩm Intel RealSense D435 là giá cả khá rẻ (khoảng 140$ trên 1 sản phẩm) cho thiết bị có khả năng cung cấp các thông tin 3D với chất lượng chấp nhận được. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 27
  28. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT B. Cấu tạo camera Intel RealSense D435 Hình 4: Cấu tạo camera Intel RealSense D435 3D + 2 Camera RGB: Là một camera có 3 kênh dữ liệu có độ phân giải 1280×960. Camera này có khả năng chụp lại ảnh ảnh màu. + Cảm biến hồng ngoại: Độ sâu thu về nhờ cảm biến IR projector từ đó tính toán ra bản đồ độ sâu. C. Nguyên lý hoạt động camera Intel RealSense D435 Hình 5: Nguyên lý camera Intel RealSense D435 3D Cặp cảm biến camera RGB bên trái và phải sẽ phối hợp với nhau để tạo ra giá trị độ sâu cho ra ảnh độ sâu của ảnh RGB. Kết hợp thêm cảm biến hồng ngoại để tăng mức BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 28
  29. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT độ chính xác, với ảnh độ sâu camera và cảm biến hồng ngoại camera cho ra khoảng cách của các vật ở phía trước camera. D. Dữ liệu thu được từ camera Intel RealSense D435 Dựa vào sơ đồ phần cứng kết nối của camera ta có thể thấy các cảm biến của Intel RealSense D435 được điều khiển thu thập và xử lý dữ liệu thông qua chip Intel Realsense Vision Processor D4 có tần số 24 MHz, sau đó được lưu trữ vào bộ nhớ EEPROM. Các dữ liệu này có thể truyền vào máy tính thông qua cổng USB 3.0. Các tín hiệu thu thập bao gồm dữ liệu về độ sâu, màu sắc trong đó tín hiệu về độ sâu là dữ liệu quan trọng có nhiều ứng dụng.Sở dĩ dữ liệu về chiều độ sâu có tầm quan trọng như vậy bởi nó giúp việc nhận dạng các vật thể đơn giản hơn nhiều so với xử lý ảnh thông thường. Các thuật toán xử lý ảnh thông thường dựa vào sự tương đồng về màu sắc, tuy nhiên, có thể những vật có màu sắc tương tự nhau nhưng không cùng một vật thể hoặc các phần của cùng một đối tượng nhưng có màu khác nhau,do vậy gây khó khăn trong quá trình nhận dạng. Hình 6: Sơ đồ phần cứng camera Intel RealSense D435 3D BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 29
  30. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Trong khi đó, với thông tin về độ sâu, các vật thể được phân biệt với nhau thông qua vị trí. Những điểm có khoảng cách gần nhau có xu hướng cùng một đối tượng mà không phân biệt màu sắc. Chỉ khi độ sâu giảm đột ngột như ở cạnh và ở một số phần nhỏ của đối tượng thì khi đó, hình ảnh trên bản đồ độ sâu mới có sự thay đổi. 2.5.2 Module HC06 Với thiết kế nhỏ gọn, tiện lợi, giao tiếp với vi điều khiển chỉ bằng 2 chân (Tx và Rx), module bluetooth HC06 sẽ giúp bạn thực hiện các dự án truyền dẫn và điều khiển từ xa một cách dễ dàng. Sử dụng thiết bị ngoại vi (điện thoại thông minh, máy tính laptop) để dò tín hiệu kêt nối Buletooth mà HC06 phát ra. Sau khi pair thành công bạn có thể gửi tín hiệu từ vi điều khiển đến các thiết bị ngoại vi này, và ngược lại. Hình 7: Module HC06 Thông số kĩ thuật: + Điện áp hoạt động: 3V3-5V DC + Dòng điện tiêu thụ: 20-30mA + Nhiệt độ hoạt động: -20~75°C + Sử dụng chip: CSR Bluetooth V2.0 +Hỗ trợ tốc độ baud: 200,2400,4800,9600, 19200,38400,57600,115200 + Kích thước: 28x15x2,35mm BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 30
  31. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT + Giao tiếp: UART (TX,RX) + Bất đồng bộ: 2.1Mbps(Max)/160kbps + Đồng bộ: 1Mbps/1Mbps + Bảo mật: mã hóa và chứng thực 2.5.3 Kit Arduino Nano Arduino Nano, đó là sự tiện dụng, đơn giản, có thể lập trình trực tiếp bằng máy tính (như Arduino Uno R3) và đặc biệt hơn cả đó là kích thước của nó. Kích thước của Arduino Nano cực kì nhỏ chỉ tương đương đồng 2 nghìn gấp lại 2 lần thôi (1.85cm x 4.3cm), rất thích hợp cho các newbie, vì giá rẻ hơn Arduino Uno nhưng dùng được tất cả các thư việt của mạch này. Hôm nay, tớ viết bài này nhằm mục đích giới thiệu về mạch Arduino Nano và các thông số kĩ thuật, cùng với đó là những gợi ý ứng dụng khi bắt đầu với mạch này. Hình 8: Kit Arduino Nano. Vi điều khiển ATmega328 (họ 8bit) Điện áp hoạt động 5V – DC Tần số hoạt động 16 MHz Dòng tiêu thụ 30mA Số chân Digital I/O 14 (6 chân PWM) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 31
  32. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT Số chân Analog 8 (độ phân giải 10bit) Dòng tối đa trên mỗi chân I/O 40 mA Kích thước 1.85cm x 4.3cm 2.5.4 Module Điều Khiển Động Cơ BTS7960 Driver sử dụng 2 chip BTS7960 bao gồm mạch điều khiển cầu H và bảo vệ quá dòng, quá áp, quá nhiệt, ngắn mạch. Hình 9: Module điều khiển động cơ BTS7960 Điện áp cung cấp: 6 ~ 27 VDC Dòng tải cao: 45A Tự động ngắt khi áp dưới 5.5V, và mở lại sau khi áp lớn hơn 5.5V Kích thước: 40x50x12 mm RPWM: chân đảo chiều hoặc cấp PWM nửa cầu phải, Mức tích cực cao. LPWM: chân đảo chiều hoặc cấp PWM nửa cầu trái, Mức tích cực cao. R_EN: 0 Disable nửa cầu phải, 1 Enable nửa cầu phải. L_EN: 0 Disable nửa cầu trái, 1 Enable nửa cầu trái. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 32
  33. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 3.1 GIỚI THIỆU Ngày nay, phần lớn các thiết bị điện tử đều phát triển theo xu hướng tự động hóa, thông minh, càng hiểu ý con người, chúng giao tiếp được với con người và hoạt động theo ý muốn con người, để làm được điều đó thì các thiết bị cảm biến, thuật toán hỗ trợ ra đời. Để tài “Thiết kế và thi công mô hình xe lăn tự hành trong nhà dùng camera 3D” với mô hình gồm bộ điều khiển trung tâm là laptop, khối thu tín hiệu hình ảnh từ bên ngoài là Camera 3D, khối truyền tín hiệu, khối điều khiển động lực 3.2 THIẾT KẾ HỆ THỐNG PHẦN CỨNG Sơ đồ gồm : bộ điều khiển trung tâm là laptop, khối thu tín hiệu hình ảnh từ bên ngoài là camera Intel RealSense D435, sau đó được hiển thị kết quả trên màn hình máy tính, cùng với bộ phận để điều khiển. Chức năng các khối: + Khối xử lý trung tâm: là bộ xử lý chính, nhận dữ liệu từ khối thu tín hiệu camera, sau đó xử lý và phân tích nhận dạng. + Khối thu tín hiệu hình ảnh: thu thập tín hiệu hình ảnh từ thực tế chuyển về tín hiệu điện và gửi dữ liệu cho khối xử lý trung tâm. Ở đây dùng camera Intel RealSense D435 làm khối thu tín hiệu hình ảnh. + Khối hiển thị: hiển thị kết quả được nhận từ khối xử lý trung tâm. Sử dụng màn hình của máy tính để hiển thị kết quả. + Khối giao tiếp: module HC06. + Điều khiển động lực : Module Điều Khiển Động BTS7960 + Khối nguồn: cung cấp nguồn cho toàn bộ hệ thống. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 33
  34. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Hình 10: Sơ đồ khối 3.2.1 Khối thu tín hiệu Khối thu tín hiệu là thành phần quan trọng của mô hình. Có chức năng thu thập dữ liệu từ thực tế rồi gửi dữ liệu cho khối xử lý trung tâm. Hình 11: Khối thu tín hiệu Ở đây để có chất lượng hình ảnh tốt để xử lý ảnh dễ dàng ta dùng Camera có độ phân giải cao, có khả năng ghi nhận chiều sâu đối tượng, tương tự mắt con người nên chọn camera Intel RealSense D435 làm khối thu tín hiệu hình ảnh. Là thiết bị có ảnh hưởng lớn đến chất lượng ảnh cùng với việc nhận dạng. Nên “camera Intel RealSense D435” được chọn. Camera có độ phân giải cao, cùng với kích thước phù hợp cho các hướng phát triển sau này. Các tính năng và đặc điểm của camera: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 34
  35. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 1. Intel RealSense D435 được điều khiển đồng thời thu thập và xử lý dữ liệu thông qua chip PS1080 có tần số 12MHz 2. Sử dụng trong HĐH Windows, Linux, Android, Mac 3.2.2 Khối xử lý và khối hiển thị Vì vấn đề xử lý ảnh cần nhiều tài nguyên và tốc độ xử lý cao, nên ta không sử dụng vi điều khiển thông thường để xử lý. Chính vì vậy, nhóm đã sử dụng laptop làm khối xử lý trung tâm. Máy tính của nhóm có CPU core i5 tộc độ xử lý lên tới 3.4 GHz chính vì vậy việc sử dụng vào mô hình là hợp lý. Máy tính hỗ trợ rất tốt việc giao tiếp các thiết bị ngoại vi và module từ bên ngoài. Có chức năng hiển thị kết quả được nhận từ khối xử lý trung tâm. Sử dụng màn hình máy tính để hiển thị kết quả. Hình 12: Laptop 3.2.4 Khối giao tiếp và điều khiển ❖ HC06 Sử dụng HC06 cho phép truyền dữ liệu không dây làm cho mô hình trở nên gọn gàng. Điện áp hoạt động của module là 5v nên phải qua module chuyển đổi điện áp để phù hợp với tải. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 35
  36. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ ❖ Module Điều Khiển Động BTS7960 Thông số kỹ thuật động cơ xe lăn: Hình 13: Hình ảnh động cơ xe lăn Bảng 1: Thông số cơ bản động cơ Điện áp sử dụng 24VDC Dòng điện định mức 15.8A Công suất định mức 250W Tốc độ định mức 83 vòng/phút Sử dụng 2 mạch điều khiển động cơ BTS7960 đầu vào điện áp điều khiển động cơ 24VDC, mạch có dòng điện tải lên đến 43A để nhận tín hiệu từ vi điều khiển Arduino điều khiển 2 động cơ quay thuận, nghịch giúp xe dễ dàng duy chuyển trước sau theo tốc độ điều khiển. Nguồn Acquy 24VDC cấp cho động cơ và qua mạch giảm áp để cấp cho cầu H BTS7960, vi điều khiển, các cảm biến và module bluetooth. Hai chân L_EN và R_EN được nối chung để cho phép sự hoạt động của cầu H. Hai chân RPWM và LPWM là 2 chân PWM để điều khiển tốc độ động cơ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 36
  37. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Hình 14: Sơ đồ nguyên lý mạch điều khiển động cơ 3.2.5 Khối nguồn  Thông số kỹ thuật bình Acquy sử dụng cho xe lăn Hình 15: Acquy của xe lăn điện Xe lăn điện sử dụng Acquy dung lượng 12AH, điện áp đầu ra 24VDC. Sử dụng bộ nguồn sạc acquy với đầu vào 24VDC. Thời gian sử dụng ước lượng của Acquy dung lượng 12AH phụ thuộc vào công suất của tải bao gồm 2 động cơ 250W, hộp điều khiển động cơ được tính theo công thức sau t = (A.V. η)/P (1) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 37
  38. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Trong đó: - t: là thời gian sử dụng điện từ acquy (giờ) - A: Dung lượng acquy (Ah) - V: Điện áp acquy (Volt) - P: Công suất tải (W) - η: Hệ số sử dụng acquy. Thông thường η=0,7. Thực nghiệm cho thấy khi người trên xe có khối lượng trung bình khoảng 65kg với tốc độ đã lập trình sẵn thì đo được như sau. Bảng 2: Thông số đo được Điện áp Dòng điện Động cơ 7.5V 4A Arduino Nano 5V 40mA HC – 06 5V 30mA Lúc này thời gian ước tính khi sử dụng xe lăn liên tục không nghỉ là 12 Ah x 24 V x 0.7 t = = 3.34 h (2) 7,5V x 4A x 2+5V x ( 40 x 14 x 2+30+20 x 3+700 x 3)mA Nguồn ra của Acquy được sử dụng để điều khiển 2 động cơ thông qua mạch điều khiển động cơ BTS7960 của bộ điều khiển động cơ. Đồng thời cấp nguồn 24VDC vào mạch giảm áp LM2596 3A để giảm áp tạo ra điện áp 5V cung cấp nguồn cho các module còn lại trong bộ điều khiển động cơ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 38
  39. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Sơ đồ nguyên lý khối nguồn acquy 24VDC: Hình 16: Sơ đồ nguyên lý khối nguồn acquy 3.3 CÁC TÍNH TOÁN TRONG XỬ LÝ ẢNH ĐẦU VÀO Như đã tìm hiểu phương pháp nhận dạng ở cơ sở lý thuyết và cấu tạo phần cứng camera Intel RealSense D435 ta có 2 bài toán xử lý ảnh: nhận dạng vật mốc bằng ảnh màu và khoảng cách của camera trong không gian được trả về thông qua dạng mảng. 3.3.1 Nhận dạng vật mốc bằng ảnh màu của camera ❖ Giới thiệu SIFT Nhận dạng ảnh là giai đoạn quan trọng cuối của một hệ thống xử lý ảnh. Nhận dạng là quá trình phân loại các đối tượng được biểu diễn theo một mô hình nào đó. Ảnh được chụp sẽ được phân tích thành các đặc trưng riêng biệt, với những đặc trưng đó ta đem đi tìm hiểu và nhận dạng. Mô hình của tôi nhận các vật mốc được chụp và cho biết trước, hình ảnh nhận từ camera được so sánh với ảnh vật mốc và cho ra đánh giá. Điểm đặc biệt của SIFT nằm ngay trong cái tên của nó Scale-Invariant, tức là nó sẽ đưa ra các kết quả ổn định với những scale của ảnh khác nhau, bên cạnh đó cũng có thể nói giải thuật này có tính rotation-invariant. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 39
  40. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ ❖ Các bước của giải thuật 1. Phát hiện cực đoan không gian tỷ lệ (Scale-space extrema detection) Trong computer vision, chúng ta thường định nghĩa kích cỡ các cửa sổ(window) rồi quét ảnh với các cửa sổ đó để tìm những đặc tính(feature) của ảnh.Phía bên trái chúng ta có 1 góc(corner) với kích thước nhỏ, và cửa sổ(window) có kích thước hợp lý để nhận ra các keypoint, nhưng với cùng kích cỡ cửa sổ và một góc có kích thước lớn thì sẽ trở nên bất hợp lý. Do đó, scale-space filtering được sử dụng để giải quyết vấn đề này. SIFT tính DoG (Difference of Gaussians) trên từng pixel bằng cách lấy diff của Gaussian Blur với 2 sigma khác nhau. Sau khi tính được DoG của toàn ảnh, xét trên từng pixel so sánh với 8 neighbors và 9 pixels tương ứng của scale ảnh ngay trên và 9 pixels tương ứng ở scale dưới, nếu pixel đó là local extrema (lớn nhất) thì nó sẽ được coi như là 1 keypoint ở scale đó. (potiental keypoint). 2. Nội địa hóa điểm (Keypoint localization) Khi đã lấy được tất cả những potential keypoints của ảnh, việc cần làm tiếp theo là lọc để ra những kết quả chính xác hơn, SIFT sử dụng chuỗi Taylor mở rộng để lấy vị trí của extrema chính xác hơn, rồi sau đó xét xem nếu intensity của extrema đó nhỏ hơn giá trị ngưỡng (0.03) thì sẽ loại keypoint đó.Bên cạnh đó, DoG rất nhạy cảm với edge(đường), để loại bỏ edge keypoint, SIFT dùng concept giống Haris corner detector, nó dùng ma trận Hessian 2x2 để tính ra những đường cong chính. Khi eigen value lớn hơn threshold nào đó thì keypoint đó sẽ bị loại. Như trên, SIFT có thể loại được keypoints có tương phản thấp, edge keypoint và giữ lại những keypoint hợp lý hơn. 3. Phân công định hướng (Orientation assignment) Một hoặc nhiều orientation (hướng) sẽ được gắn cho từng vị trí keypoint dựa trên image gradient. Các phép tính sau đó trên ảnh sẽ tương ứng với từng orientation, scale và vị trí từng feature. 4. Mô tả quan trọng (Keypoint descriptor) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 40
  41. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ SIFT sẽ tính Keypoint descriptor bằng cách lấy 16x16 neighborhood(điểm liền kề) của keypoint đó, rồi chia thành 16 sub-blocks với kích thước 4x4. Với mỗi sub-block, ta sẽ tạo được 8 bin oritation . Do đó tất cả sẽ có 128 bin giá trị tương ứng với 1 vector biểu hiện cho keypoint descriptor. 5. Trùng khớp đặc trưng Tìm ra những cặp keypoint descriptor có khoảng cách Euclid là nhỏ nhất giữa 2 bức ảnh. Nói cách khác FLANN giúp chúng ta tìm ra những cặp keypoint descriptor giống nhau nhất. Tuy nhiên, để đảm bảo chất lượng ta chỉ lựa chọn những cặp tốt, do vậy ta sẽ lọc bớt những cặp xấu. Để thực hiện việc này ta đơn giản chỉ cần giữ lại những cặp có khoảng cách Euclid nhỏ nhất trong vô số các cặp mà FLANN đưa ra. ❖ Ưu điểm Dùng các điểm bất biến với độ sáng, xoay, thu phóng làm đặc trưng so sánh ❖ Nhược điểm Tốc độ trích xuất key point và chi phí đối sánh còn lớn Như đã đề cập ở phần phương pháp nhận dạng vật mốc, tôi đã sử dụng thuật toán SIFT để tìm các điểm đặc biệt(keypoint) của ảnh vật mốc mà chúng ta cho xe lăn biết trước. Với một vật mốc biết trước ta sẽ có mảng gồm A (keypoint) Khi xe lăn hoạt động quá trình thu thập ảnh bắt đầu, mỗi bức ảnh mà xe lăn nhận được sẽ thông qua thuật toán SIFT thì cho ra mảng gồm B (keypoint). Sau khi có được mảng gồm B (keypoint) tiến hành đi so sánh giữa 2 mảng. Nếu phần tử ở mảng A có giá trị giống phần tử ở mảng B ta có được tập hợp C phần tử có keypoint giống nhau từ đó xác minh được vật mốc. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 41
  42. CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ Biểu diễn dưới dạng toán học: A ∩ B = C (3) Hình 17: Giao giữa 2 tập hợp keypoint 3.3.2 Tính khoảng cách dựa vào ảnh độ sau nhận được từ camera Với ảnh độ sâu nhận được từ camera ta có số chiều MxN: + M là số hàng trong ma trận ảnh độ sâu + N là số cột trong ma trận ảnh độ sâu Các giá trị nằm trong mảng depth MxN : là mảng các phần tử nằm trên trục Oz chính là khoảng cách từ camera tới các điểm tương ứng với ảnh màu. Từ đây ta có thể tính toán khả năng tránh vật cản của xe. Ta tiến hành tìm Min mỗi cột trong mảng nhận được. −1 Zi_min =∑0 min(Z(i)) i: thứ tự các cột trong ma trận Z (4) Lúc này ta được mảng 1 chiều với các giá trị min của các cột trong mảng depth, từ kết quả này ta có thể nhận định phía trước camera có vật cản hay ko và vật cản đó cách camera là bao xa. Tiếp theo, nếu gặp vật cản thì tìm Z_min là giá trị nhỏ nhất trong mảng Zi_min −1 Z_min = min(∑0 Zi_min(j)) j: thứ tự các phần tử trong Zi_min (5) Với giá trị Z_min, ta tiến hành phân vùng cho mảng Zi_min và ra định hướng tránh vật cản cho xe lăn bằng cách tìm bề rộng lớn nhất trong mảng có giá trị lớn hơn Z_min. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 42
  43. CHƯƠNG 4: THI CÔNG HỆ THỐNG CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.1 GIỚI THIỆU Ở phần này thực thi trên laptop quá trình lấy các hình mẫu có sẵn sau đó xử lý phân tích và nhận dạng sản phẩm. 4.2 THI CÔNG HỆ THỐNG 4.2.1 Các linh kiện và model cần thiết cho mô hình Vì mô hình có linh kiện và model do nhà sản xuất sẵn nên sẽ không có sơ đồ mạch in, nên có sơ đồ kết nối của mô hình. Bảng 3: Danh sách các model và linh kiện liên quan. STT Tên Giá trị Chú thích 1 Laptop core i5 Tốc độ 3.4GHz Có vỏ bảo vệ 2 camera Intel RealSense Độ phân giải và Có dây kết nối với cổng D435 khung hình: USB 2560X960 @ 60fps 3 HC06 5V-30mA 4 kit Arduino nano 5V-30mA 5 Module Điều Khiển 24V-43A Động BTS7960 4.2.2 Kết nối, lắp ráp và kiểm tra mô hình Mô hình gồm bộ điều khiển trung tâm là bộ vi xử lý (CPU) của chiếc laptop, khối thu tín hiệu hình ảnh từ bên ngoài là Camera 3D được kết nối vào cổng usb của BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 43
  44. CHƯƠNG 4: THI CÔNG HỆ THỐNG laptop, sau đó kết quả hiển thị trên màn hình laptop, cùng với bộ phận để người giao tiếp và điều khiển. Kết nối Camera với Laptop Camera được kết nối với cổng USB của laptop. Sau khi kết nối thì xem cổng USB laptop đã nhận tín hiệu của camera chưa, sau đó ta chọn mở IDLE và chạy chương trình kiểm tra đầu vào của camera xem kết quả xem có xuất đầu vào của camera hay không. 4.3 THI CÔNG MÔ HÌNH 4.3.1 Kết nối bộ phận điều khiển động lực Hình 18: Bộ phận điều khiển Hình 19: Bộ phận điều khiển hoàn chỉnh Dựa vào sơ đồ nguyên lý của bộ điều khiển động cơ, nhóm tiến hành thi công lắ ráp các module thành hộp điều khiển động cơ. Sau khi tính toán kích thước các module, nhóm dùng hộp nhựa đen PVC có kích thước 160x90x57mm để làm hộp chứa các module vì có sẵn, giá thành rẻ, chắc chắn. Sau đó, nhóm dùng vít cố định các module và sử dụng dây cắm nối các dây tín hiệu và cấp nguồn cho các module. Hộp điều khiển động cơ bao gồm đầy đủ các module điều khiển động cơ, bluetooth, các vi điều khiển được cố định chặt trong hộp. Các jack cắm nguồn đầu vào và jack cắm động cơ được nối ra ngoài để dễ dàng, tiện lợi kết nối với các động cơ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44
  45. CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.3.2 Kết nối bộ phận điều khiển động lực với nguồn Khối nguồn và bộ điều khiển động lực được kết nối với nhau qua các dây dẫn điện, được lắp đặt phía sau xe lăn để tạo tính thuận tiện và đảm bảo thẩm mĩ cho xe lăn. Dây dẫn được bọc kĩ càng giúp mô hình có tính thực tế cao. Hình 20: Bộ phận điều khiển với nguồn 4.3.3 Kết nối bộ phận camera với laptop Camera được lắp phía trước xe lăn và lệch tâm xe lăn khoảng 0.1 m, để đảm bảo rằng trong quá trình xử lý của camera được nhanh chóng và thuận lợi, với tầm quan sát rộng của camera giúp cho xe lăn hoạt động chính xác mà không bị va chạm. Tại vị trí đặt camera còn giúp cho người ngồi thoải mái không bi vướn thiết bị làm giảm tầm nhìn của camera. Đây chỉ là mô hình thử nghiệm nên việc đặt laptop trên mô hình là điều không tránh khỏi. Để đảm khoảng cách cáp truyền tín hiệu là ngắn nhất giúp cho hoạt động camera được ổn định. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45
  46. CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 21: Bộ phận camera và laptop 4.3.4 Mô hình hoàn chỉnh Sau khi kết nối tất cả các bộ phận ta có được mô hình hoàn chỉnh và có thể tiến hành chạy trong môi trường đủ điều kiện ánh sáng để đánh giá chất lượng mô hình Hình 22: mô hình hoàn chỉnh BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 46
  47. CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.4 LẬP TRÌNH HỆ THỐNG 4.4.1 Lưu đồ giải thuật A. Lưu đồ giải thuật chính Hình 23: Lưu đồ giải thuật chính Thu thập ảnh RGB và ảnh depth: Khối này có chức năng lấy dữ liệu đầu vào gồm có ảnh RGB và ảnh depth, 2 loại ảnh ành có kích thước giống nhau là 480x640 và 30 fps BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 47
  48. CHƯƠNG 4: THI CÔNG HỆ THỐNG Với ảnh RGB là từ viết tắt tiếng Anh của cơ chế hệ màu cộng, thường được sử dụng để hiển thị màu trên các màn hình TV, monitor máy tính và những thiết bị điện tử khác (chẳng hạn như camera kỹ thuật số). Với ba màu cơ bản gồm: đỏ, xanh lá và xanh dương. OpenCV xử lý ảnh và video ở định dạng 8 bit, số nguyên không dấu, định dạng BGR. Nói cách khác, hình ảnh được chụp có thể được coi là 3 ma trận: xanh dương, xanh lá và đỏ (BGR) với các giá trị nguyên nằm trong khoảng từ 0 đến 255. Hình ảnh sau đây cho thấy hình ảnh màu được biểu diễn bằng 3 ma trận. Hình 24: Ma trận không gian màu RGB Tương tự ảnh RGB, ảnh độ sâu cũng có 1 ma trận nhưng mỗi pixel trong ma trận này thực ra là khoảng cách của camera trong không gian phía trước camera. khác với ảnh RGB thì ảnh depth có ma trận là kiểu dữ liệu thực. Tìm Z min theo cột ảnh depth: Khối này có chức năng tìm khoảng cách phía trước của camera dựa vào từng cột của ảnh depth, để có thể nhận định được phía trước camera có vật hay gì hay không. Có vật cản: Khối này là một khối so sánh với dữ liệu lấy từ kết quả từ khoảng cách từ khối trên ta có thể kết luận ở trước có vật cản để đi đến khối xử lý tiếp theo Tìm đặc điểm của ảnh RGB: Khối có chức năng tìm ra các đặc trưng của ảnh RGB lấy từ camera, các đặc trưng của ảnh được liệt kê theo danh sách để chuẩn bị cho bước tiếp theo. Tránh vật cản: Khối có chức năng tính toán gốc di chuyển cho xe lăn để có thể tránh được vật cản trước mặt xe lăn. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48
  49. CHƯƠNG 4: THI CÔNG HỆ THỐNG Giống ảnh vật mốc: khối này giúp cho xe lăn có khả năng nhận dạng được vật mốc với ảnh mốc được thu thập trước, bằng cách đem các đặc trưng của ảnh RGB so sánh với đặc trưng của ảnh vật mốc để xác định phía trước có vật mộc hay không. Sau khối này sẽ đưa ra hai hướng giải quyết. Xác định khoảng cách dừng camera: ở khối này giúp biết được khoảng cách từ xe lăn tới vật mốc. Truyền dữ liệu cho xe di chuyển: sau khi xử lý được các dữ liệu đầu vào thì ở khối cuối cùng này ta cho xe di chuyển bằng cách truyền dữ liệu cho xe di chuyên theo dữ liệu đầu vào. B. Lưu đồ giải thuật con Tìm Z min theo cột ảnh depth Hình 25: Truyền dữ liệu cho xe di chuyển Tìm Zi min từng cột ảnh depth: tìm giá trị nhỏ nhất của từng cột trong ảnh depth. Tìm Z min trong tập nhận được: tìm giá trị nhỏ nhất của tập các Zi min nhận được Trả về số thứ tự cột: trả về giá trị cột để truyền dữ liệu này cho xe lăn di chuyển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 49
  50. CHƯƠNG 4: THI CÔNG HỆ THỐNG Xác định khoảng cách dừng camera Hình 26: Xác định khoảng cách dừng camera Xác định khoảng cách tới tâm vật mốc: tìm giá trị khoảng cách tâm của vật mốc tới camera. Khoảng cách lớn hơn 1.5m: nếu khoảng cách vừa xác định được lớn hơn 1.5m thì xe lăn di chuyển tới vật mốc, còn nếu ngược lại thì xe lăn dừng trước vật mốc. Trả về số thứ tự cột ảnh RGB chứa tâm: trả về giá trị mà xe lăn cần điều hướng. Truyền dữ liệu cho xe di chuyển Hình 27: Truyền dữ liệu cho xe di chuyển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 50
  51. CHƯƠNG 4: THI CÔNG HỆ THỐNG Hc06 có hoạt động: kiểm tra thiết bị phần cứng của xe lăn có sẵn sàng cho việc truyền dữ liệu. Gửi số thứ tự cột Z min: gửi dữ liệu cho xe điều hướng di chuyển tránh vật cản hoặc theo vật mốc. 4.4.2 Lập trình ngôn ngữ Python với Sublime Text 3 Giới thiệu Sublime Text 3 Sublime Text 3 (ST3) là phiên bản mới nhất của chương trình soạn thảo văn bản được sử dụng nhiều nhất bởi web developers, coders, và programmers. Nó sẵn có cho Mac, Windows, Linux và cho phép tải về và sử dụng miễn phí. Giao diện Sublime Text 3 Tạo, Lưu, Sửa một file trong Sublime Text 3 Để tạo file mới thì trên thanh công cụ bạn chọn: File > New File hoặc Phím tắt: Ctrl + N (Command + N trên Mac) Cách lưu file trong Sublime Text thì trên thanh công cụ bạn chọn: File > Save hoặc File > Save as hoặc phím tắt Ctrl + S ( Command + S ) Cách mở một file để chỉnh sửa trong Sublime Text. File > Open hoặc phím tắt Ctrl + O ( Command + O ) Chọn đến thư mục chứa file bạn cần chỉnh sửa. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 51
  52. CHƯƠNG 4: THI CÔNG HỆ THỐNG Hình 28: Tạo file mới Sublime Text 3 4.4.2 Lập trình Arduino với Arduino IDE Cấu hình phiên làm việc cho Arduino IDE Vào menu Tools -> Board -> chọn Arduino nano Vào menu Tools -> Serial Port -> chọn cổng Arduino đang kết nối với máy tính. Ở máy của tôi là COM3. Hình 29: chọn cổng Arduino BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 52
  53. CHƯƠNG 4: THI CÔNG HỆ THỐNG 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 4.5.1 Viết tài liệu hướng dẫn sử dụng Bước 1: Lắp camera vào hệ thống và kiểm tra hệ thống đã nhận camera chưa Sau khi cấp nguồn cho hệ thống, đợi hệ thống khởi động xong ta truy cập vào IDLE để thực thi chương trình test camera. Bước 2: Kiểm tra cài đặt python và cài đặt những thư viện liên quan cho python. Ta tiến hành mở cửa sổ command line lên, gõ python xem hệ thống đã cài đặt thành công python hay chưa. Một trong những điểm mạnh của python là có thể dùng lại rất nhiều thư viện và package khác mà mình không phải mất công viết lại từ đầu. Bản thân mỗi module, mỗi package đã chuyên môn hoá một số việc cho mình. Khi muốn cài một package nào đó, ta có thể dùng lệnh pip install . Chúng ta cài đặt các package không cần phải tải về lằng nhằng mà chỉ cần gõ 1 dòng lệnh là đủ. Vì thế dùng pip để cài đặt thư viện cho hệ thống một cách dễ dàng, ta mở command line lên và gõ những dòng lệnh theo mẫu trên để cài đặt những thư viện: OpenCV, Numpy, Spicy. Kiểm tra xem tất cả thư viện ta cần cho chương trình đều đã sẵn sàng chưa: Hình 30: Kiểm tra thư viện Bước 3: Mở Sublime Text 3 và chạy chương trình nhận dạng sản phẩm và tính kích thước. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 53
  54. CHƯƠNG 4: THI CÔNG HỆ THỐNG Bước 4: Quan sát kết quả thu được khi xe lăn di chuyển khung hình camera ở những vị trí khác nhau. 4.5.2 Quy trình thao tác Khởi động hệ thống và chạy chương trình Là quá trình kết nối các thiết bị ngoại vi bên ngoài với laptop (ở đây là camera 3D ). Sau khi hệ thống nhận thiết bị, ta chọn chạy Sublime Text 3 và mở file code.py cần chạy. Quan sát kết quả và so với thực tế Kết quả được hiển thị ngay trên lap với thời gian ngắn và khả năng hoạt động của xe lăn trong thực tế. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54
  55. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.1 CAMERA 3D Qua quá trình thực hiện đề tài, nhóm đã biết sử dụng Camera 3D với chức năng cơ bản của camera là lấy được ảnh đầu vào, ảnh độ sâu và kết nối với laptop để đi thực hiện mô hình. Hình 31: Kết quả ảnh RGB và ảnh độ sâu từ camera Camera 3D có độ phân giải cao nhưng ngược lại nó có giá thành không quá đắt, cùng với chất lượng ảnh và quay ảnh phù hợp với việc xử lý ảnh. Việc thu khoảng cách từ camera vẫn chưa chính xác tuyệt đối do những yếu tố tác động từ bên ngoài như tốc độ xử lý của laptop, ánh sáng, 5.2 XÁC ĐỊNH VẬT CẢN Khi vật cản rơi vào tầm nhìn của camera thì camera sẽ phát tin hiệu cho xe lăn di chuyển theo hướng tránh vật cản bằng cách tính toán các số liệu từ ảnh độ sâu. Điều này phụ thuộc rất nhiều vào yếu tố môi trường vì camera sử dụng có cảm biến hồng ngoại sẽ bị nhiễu do ánh sáng không tốt. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 55
  56. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 32: Kết quả xác định vật cản của camera Dưới đây là bảng thống kê thực tế kết xác định màu sắc của sản phẩm trong điều kiện môi trường ánh sáng đầy đủ khi sản phẩm là màu đỏ và những màu khác như màu xanh, màu vàng: Sau khi kiểm tra thực tế, khả năng hoạt động của thiết bị như sau: Thời gian đáp ứng rất nhanh trong điều kiện lý tưởng khi làm khảo sát Camera nhận diện được gần như 100% các vật cản ở trước. Bảng 4: Thống kê kết quả xác định khoảng cách tối đa camera nhìn thấy vật cản STT camera cách đất khoảng cách lớn nhất phát hiện 1 0.0 m 0.95 m 2 0.5 m 1.57 m 3 1.0 m 2.31 m 4 1.5 m 5.39 m BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 56
  57. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.3 NHẬN DẠNG VẬT MỐC Nhận dạng vật mốc là quá trình quan trọng trong hệ thống, nó giúp cho xe lăn di chuyển đúng hướng theo yêu cần được đề ra,hình ảnh từ ảnh RGB được thu nhận và xử lý qua giải thuật SIFT và FLANN trong thư viện OPENCV giúp có được những điểm đặc trưng từ đó nhận dạng vật thể, sau khi có được những đặc trưng thì đem đi so sánh với mẫu đầu vào nếu đúng thì tiếp tục cho tính ra góc lệch để xác định vi trí của xe trong bản đồ đã mô tả trước đó. Sau đây là những hình ảnh sau khi thí nghiệm : Hình 33: Kết quả xác định vật mốc của camera trường hợp 1 Hình 34: Kết quả xác định vật mốc của camera trường hợp 2 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 57
  58. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 35: Kết quả xác định vật mốc của camera trường hợp 3 Từ những hình ảnh trên cho ta thấy được khả năng nhận diện vật mốc của camera gần như chính xác so ớv i thực tế. 5.4 KẾT QUẢ TRÁNH VẬT CẢN Từ kết quả xác định vật cản ở phần 5.2 ta được kết quả của việc tránh vật cản trong nhiều trường hợp trong thực tế như sau: Hình 36: đi thẳng Với hình trên ta có thể thấy được tâm của khoảng trống được camera xác định là ở giữa là một đường dọc ở hình xác định khoảng cách camera. Phần rìa hai bên của ảnh có khoảng cách nhỏ hơn nên nền màu trắng thấp hơn ở giữa với ảnh đo khoảng cách. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 58
  59. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ Hình 37: rẽ trái Tương tự như ở trên thì lúc này khoảng cách mà camera xác định ở bên trái cao hơn so với bên phải nên tâm được lệch về bên trái giúp xe lăn rẽ sang trái. Hình 38: rẽ phải Cuối cùng là rẽ phải, lúc này khi có vật cản trước camera, cụ thể trong trường hợp này là bộ bàn ghế thì khoảng cách mà camera xác định được bên trái sẽ thấp hơn bên phải nên tâm di chuyển sẽ lệch về bên phải giúp cho xe lăn di chuyển sang phải. Từ những hình ảnh trên thì ta có thể thấy được khả năng chuyển hướng của vật gần như là chính xác với kết quả của thí nghiệm. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 59
  60. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 5.5 KẾT QUẢ XE LĂN DỪNG TRƯỚC VẬT MỐC Hình 39: xe lăn dừng trước vật mốc Sau quá trình di chuyển và tránh né vật cản, nếu xe lăn gặp được vật mốc thì quá trình phân tích và nhận dạng vật mốc sẽ được khởi động làm cho xe lăn nhận biết được khoảng cách từ xe lăn tới tâm vật mốc. Trong khi chưa đạt tới khoảng cách dừng thì xe vẫn di chuyển hướng theo vật mốc. Nếu đạt được khoảng cách dừng thì xe lăn sẽ dừng lại. 5.6 KẾT QUẢ ĐO KHOẢNG CÁCH CỦA XE LĂN Với các hình bố trí bản đồ bố trí các vật trên ta có được bảng về các thông số đo đạc và tính toán như sau : Bảng 5: Thống kê kết quả xác định khoảng cách vật mốc Đơn vị đo Trường hợp 1 Trường hợp 2 Trường hợp 3 meter Da Db Dc Da Db Dc Da Db Dc Đủ sáng Nhận dạng có có có có có có có có có camera 2.39 4.05 2.68 3.67 3.89 3.13 2.68 3.60 2.73 Thực tế 2.53 4.12 2.67 3.78 3.88 3.13 2.59 3.48 2.67 Chênh lệch -0.14 -0.07 0.01 -0.11 0.01 0 0.09 0.12 0.06 Thiếu sáng Nhận dạng có có có có có có có có có camera 2.26 3.81 2.49 3.66 3.76 3.16 2.12 3.25 2.26 Thực tế 2.53 4.12 2.67 3.78 3.88 3.13 2.59 3.48 2.67 Chênh lệch -0.27 -0.31 -0.18 -0.12 -0.12 0.03 -0.47 -0.23 -0.41 Với bảng số liệu trên ta có thể thấy camera có thể nhận dạng được toàn bộ các vật mốc đầu vào, các giá trị khoảng cách lấy từ camera so với thực tế đo được có sự chênh BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 60
  61. CHƯƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ lệnh không đáng kể. Với điều kiện thiếu sáng thì camera có sự sai số cáo hơn một chút so với điều kiện đủ sáng. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61
  62. CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN 6.1.1 Kết quả đạt được Hệ thống đáp ứng tương đối đầy đủ mục tiêu như: Xác định vật cản trước camera trong phạm vi khoảng 1.5 m Nhận diện được vật mốc trước camera với độ chính xác đáng tin cậy Xe lăn di chuyển không va chạm các vật có độ cao lớn hơn 0.5 m Hoạt động ổn định trong điều kiện đủ ánh sáng và địa hình ít gồ ghề 6.1.2 Những mặt hạn chế Ngoài những kết quả đạt được thì hệ thống vẫn còn những hạn chế như khả năng nhận dạng bị ảnh hưởng bởi các yếu tố môi trường như ánh sáng, nhiễu; chỉ nhận dạng biết được vật có nhiều đặc trưng và vật cản nằm trong khoảng cách ngắn. Chưa xây dựng được mô hình hoàn chỉnh, chỉ mang tính nghiên cứu. 6.2 HƯỚNG PHÁT TRIỂN Từ những mặt hạn chế của đề tài, để đề tài hoạt động tốt hơn và có thể áp dụng vào thực tế sau này nhóm đã đề ra những hướng phát triển như sau: + Thay thế camera tốt hơn để cho chất lượng xử lý tốt hơn + Sử dụng các thiết bị có cấu hình cao để đáp ứng được khả năng xử lý tốt hơn + Tìm kiếm các giải thuật mới cho tốc độ xử ảnh nhanh và chính xác hơn BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62
  63. TÀI LIỆU KHAM KHẢO TÀI LIỆU THAM KHẢO [1] Việt Nam công bố kết quả Điều tra Quốc gia quy mô lớn đầu tiên về người khuyết tật (2016) – www.unicef.org – 1/2019 [2] Gyro-Accelerometer based Control of an Intelligent Wheelchair Received 19 December 2017, Published online: 9 June2018 [3] An Introduction to MEMS (Micro-electromechanical Systems) - Prime Faraday Technology Watch – 01/ 2002 [4] Ryan Goodrich – Accelerometer - What They Are and How They Work - LiveScience Contributor – 01/10/2013 [5] Nguyễn Tiến San, Nguyễn Thái Bảo Hùng, Báo cáo tìm hiểu cảm biến Kinect (RGB –D), Đồ án môn học, trường Đại học công nghệ, Tp.HCM, 2016 [6] Trí thức trẻ, Camera 3D hoạt động như thê nào, 05/01/2016 [7] Nguyễn Văn Sơn, Hà Duy Khánh, Phân loại sản phẩm dùng Kit Raspberry, Đồ án tốt nghiệp, trường ĐHSPKT, Tp.HCM, 2018. [8] Richard Blum, Christine Bresnahan, Sams teach yourself python in 24 Hours, Sams, 2014. [9] PGS.TS Nguyễn Quang Hoan, “Xử Lý Ảnh”, Học Viện Công Nghệ Bưu Chính Viễn Thông, 2006. ( [10] Thông số kỹ thuật của động cơ DC được tìm kiếm ở trang web: , Ms. Maggie Wang, TT Motor (Shenzhen) Industrial Co., Ltd. Floor 4-5, Building A14, Tianliao Industrial Zone, Taoyuan Street, Nanshan District, Shenzhen, Guangdong, China (Mainland). [11] Thông số kỹ thuật của nguồn Adapter 12V – 1A được tìm kiếm ở trang web: Người đại diện pháp luật: bà Phạm Thị Thu Hiền, Công ty Cổ phần Công nghệ Nanochip, Trụ sở: Tầng lửng, toà nhà An Phú Plaza, 117-119 Lý Chính Thắng, Phường 7, Quận 3, Tp Hồ Chí Minh, 10/07/2016.
  64. TÀI LIỆU KHAM KHẢO Sách tham khảo [1] TS. Nguyễn Thanh Hải, “Giáo trình Xử lý ảnh”, NXB Đại Học Quốc Gia TPHCM, 09/2014. [2] Phạm Quang Huy, “Arduino dành cho người tự học” , NXB Thanh Niên , 2019 [3] Rafia Hassani, Mohamed Boumehraz, Maroua Hamzi, Zineb Habba – Gyro- Accelerometer based Control of an Intelligent Wheelchair – 06/2018 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64
  65. PHỤ LỤC PHỤ LỤC Thư viện chương trình import cv2 import pyrealsense2 as rs import numpy as np import time import analysis import controller import object_detection Chương trình chính import cv2 import pyrealsense2 as rs import numpy as np import time import analysis import controller import object_detection pipeline = rs.pipeline() config = rs.config() config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30) vat1 = cv2.imread('vat1.png', 0) anh = cv2.imread('result.png', 0) Z_limit = 5.0 min_hamper=1.0 def draw_image(Zi_max): image=np.zeros((480,620)) for i in range(620): if Zi_max[i] > Z_limit : tmp = Z_limit else: tmp = Zi_max[i] row = int(96*tmp) #480pixel*zi_min[i]m/5m for j in range(480-row,480): image[j,i]=1 return image pipeline.start(config) local = 0 while True:
  66. TÀI LIỆU KHAM KHẢO start = time.time() frames = pipeline.wait_for_frames() depth = frames.get_depth_frame() frame = frames.get_color_frame() color_image = np.asanyarray(frame.get_data()) Zi_min = analysis.disparty(depth) elements_min = analysis.elements_min(Zi_min) if elements_min[0][0] 1.5 : controller.local_driver(x) print("diem dung :", z) image = draw_image(Zi_min) cv2.line(image,(local,0),(local,480),(0,0,255),1) cv2.line(image,(0,288),(640,288),(0,0,255),1) cv2.line(image,(0,384),(640,384),(0,0,255),1) cv2.imshow("image",image) cv2.imshow('Video', color_image) print("time delay:",time.time() - start) key = cv2.waitKey(1) if key in (27, ord("q"),ord(" ")): # cv2.imwrite("result.png",color_image) break elif key == ord("p"): while True: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66
  67. TÀI LIỆU KHAM KHẢO key = cv2.waitKey(1) if key == ord("s"): break elif key == ord("1"): cv2.imwrite("vat1.png",color_image) pipeline.stop() Chương trình con analysis import numpy as np import collections row_ = 480 col_ = 640 def disparty(depth): min_arr = [] for col in range(20,col_): tmp = 5.0 for row in range(row_): if 0.5 disparty) local_tmp=0 sum_=0 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67
  68. TÀI LIỆU KHAM KHẢO i_tmp=1 for local in locals_min: if local == 0: pass elif local == locals_min[-1]: if width_min = width_request: break return local_min Chương trình con object_detecter import cv2 import numpy as np MIN_MATCH_COUNT = 10 font = cv2.FONT_HERSHEY_SIMPLEX fontScale = 1 color = (255, 0, 0) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68
  69. TÀI LIỆU KHAM KHẢO thickness = 1 def sift_detector(tenvat,img1, img2): sift = cv2.xfeatures2d.SIFT_create() kp1, des1 = sift.detectAndCompute(img1,None) kp2, des2 = sift.detectAndCompute(img2,None) FLANN_INDEX_KDTREE = 0 index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5) search_params = dict(checks = 50) flann = cv2.FlannBasedMatcher(index_params, search_params) matches = flann.knnMatch(des1,des2,k=2) good = [] for m,n in matches: if m.distance MIN_MATCH_COUNT: src_pts = np.float32([ kp1[m.queryIdx].pt for m in good ]).reshape(-1,1,2) dst_pts = np.float32([ kp2[m.trainIdx].pt for m in good ]).reshape(-1,1,2) M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC,5.0) matchesMask = mask.ravel().tolist() h,w = img1.shape pts = np.float32([ [0,0],[0,h-1],[w-1,h-1],[w-1,0] ]).reshape(-1,1,2) dst = cv2.perspectiveTransform(pts,M) tam1 = np.int32(dst[0]) tam2 = np.int32(dst[2]) x1, y1 = tam1[0] x2, y2 = tam2[0] BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69
  70. TÀI LIỆU KHAM KHẢO x = np.int32((x2-x1)/2+x1) y = np.int32((y2-y1)/2+y1) if (x in range(640)) and (y in range(480)): cv2.putText(img2,tenvat, (x,y), font, fontScale, color, thickness, cv2.LINE_AA) img2 = cv2.polylines(img2,[np.int32(dst)],True,255,3, cv2.LINE_AA) img2 = cv2.circle(img2, (x,y), 5, (255, 0, 0), 3) # print(tenvat,"so diem:",len(good)) return x,y else: print ("Not enough matches are found - %d/%d" % (len(good),MIN_MATCH_COUNT)) matchesMask = None return 0,0 draw_params = dict(matchColor = (0,255,0), # draw matches in green color singlePointColor = None, matchesMask = matchesMask, # draw only inliers flags = 2) return x1,y1 Chương trình con controller import serial port = serial.Serial("/dev/rfcomm0", baudrate=9600) print(port) def local_driver(local): print(local) port.write(str(local).encode('ascii')) def stop(): print("stop") port.write(b'E') BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70