Luận văn tốt nghiệp ngành kỹ thuật cơ khí ô tô “Công nghệ nhận diện làn đường, biển báo cho xe tự hành bằng RASBERRY PI” là thành quả của quá trình nghiên cứu, nỗ lực không ngừng của em trong suốt thời gian qua với sự giúp đỡ tận tình của quý thầy Trường Đại Học Giao Thông Vận Tải Thành Phố Hồ Chí Minh, các bạn bè và đồng nghiệp trong ngành kỹ thuật cơ khí nói chung và chuyên ngành ô tô nói riêng.
Trang 1VIỆN CƠ KHÍ
- -
LUẬN VĂN TỐT NGHIỆP
CÔNG NGHỆ NHẬN DIỆN LÀN ĐƯỜNG, BIỂN BÁO CHO XE TỰ HÀNH SỬ DỤNG RASPBERRY PI
Giảng viên hướng dẫn: Th.S Nguyễn Hồng Thắng
Sinh viên thực hiện: Phạm Chí Đức
Mã số sinh viên: 1751080012 Lớp: CO17A
TP HỒ CHÍ MINH, 2023
Trang 2Luận văn tốt nghiệp ngành kỹ thuật cơ khí ô tô “Công nghệ nhận diện làn đường, biển báo cho xe tự hành bằng RASBERRY PI” là thành quả của quá
trình nghiên cứu, nỗ lực không ngừng của em trong suốt thời gian qua với sự giúp đỡ tận tình của quý thầy Trường Đại Học Giao Thông Vận Tải Thành Phố
Hồ Chí Minh, các bạn bè và đồng nghiệp trong ngành kỹ thuật cơ khí nói chung
và chuyên ngành ô tô nói riêng
Em xin bày tỏ sự biết ơn đến quý thầy hướng dẫn Th.S Nguyễn Hồng Thắng đã quan tâm, trực tiếp hướng dẫn tận tình để luận văn được hoàn thành
Đồng thời, em gửi lời cảm ơn đến ban giám hiệu nhà trường, phòng đào tạo, ban lãnh đạo viện cơ khí và bộ môn chuyên ngành đã tạo điều kiện cho em hoàn thành luận văn tốt nghiệp của mình
Sau cùng, em xin cảm ơn gia đình đã luôn bên cạnh, động viên và giúp đỡ trong suốt thời gian thực hiện luận văn
Xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày 23 tháng 11 năm 2022
Sinh viên thực hiện
Phạm Chí Đức
Trang 3Trong thời đại cách mạng công nghiệp hóa, hiện đại hóa Xe hơi ngày càng được hiện đại hơn trong việc ứng dụng các công nghệ như Internet vạn vật (IOT), trí tuệ nhân tạo (AI) được tích hợp vào xe và đặc biệt hơn là xe tự hành
Các chuyên gia dự đoán, trong khoảng 15 đến 20 năm nữa, xe tự hành sẽ được phổ biến và thịnh hành hơn so với các phương tiện phổ thông hiện nay Hiện đã có rất nhiều tập đoàn sản xuất xe hơi và các tập đoàn công nghệ tham gia vào cuộc đua phát triển công nghệ tự lái thông minh cho xe hơi giúp cho xe có thể tự lái đến nơi cần thiết
mà không cần có sự can thiệp của con người Đặc biệt hơn là công nghệ tự hành đã bắt đầu được ứng dụng ở khuông viên Bình Dương với khả năng tự hành cấp độ 4
Mục đích của đề tài này là phần xử lý nhận diện được làn đường, biển báo vì dựa trên tính trạng giao thông ở Việt Nam thì xe tự hành nên có một phân đường riêng biệt Nên ứng dụng của đề tài này dựa trên điều kiện xe phải được phân chia làn bởi cách vạch sơn trắng và điều kiện ánh sáng thích hợp để nhận diện qua camera
Trên thực tế có nhiều phương pháp để nhận diện được làn đường một cách hiệu quả và chính xác nhất, vì thời gian hạn chế nên để phù hợp với khối lượng luận văn, em xin được dùng phương pháp nhận diện được vách kẻ trẳng thẳng làm cơ sở để ứng dụng vào đề tài Nội dung luận văn được xây dựng thành 4 chương sau đây:
Chương 1: Cơ sở lý thuyết
Chương 2: Cài đặt hệ điều hành và xây dựng mô hình
Chương 3: Xây dựng thuật toán nhận diện làn đường
Chương 4: Xây dựng thuật toán nhận diện biển báo
Thuật toán được xây dựng trên nền tảng mở OpenCV, sử dụng ngôn ngữ C++ thay cho ngôn ngữ Python phổ thông để tăng thời gian xử lý trên thời gian thực Đề tài được nghiên cứu để làm nền tảng cho việc phát triển và hoàn thiên hơn trong ứng dụng thực tế trong tương lai
Trang 4CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1
1.1 Tổng quan về xe tự hành 1
1.1.1 Khái niệm về xe tự hành 1
1.1.2 Lịch sử phát triển của xe tự hành 1
1.2 Tình hình xe tự hành trên thế giới và trong nước 3
1.2.1 Tình hình nghiên cứu xe tự hành của thế giới 3
1.2.2 Tình hình nghiên cứu xe tự hành trong nước 4
1.3 Định hướng đề tài 5
1.4 Khái niệm OpenCV 6
1.5 Một số phương pháp nhận diện làn đường 6
1.5.1 Phương pháp tìm đường thẳng bằng hàm Houghlines 6
1.5.2 Phương pháp phát hiện vạch làn trắng 8
1.5.3 Phương pháp nhận diện làn đường nâng cao 8
1.6 Lựa chọn phương pháp áp dụng vào mô hình 9
1.7 Sơ lược về linh kiện cho hệ thống 10
1.7.1 Raspberry Pi 3b+ 10
1.7.2 Module điều khiển động cơ L298N 13
1.7.3 Động cơ RC Servo MG996 18
1.7.4 Raspberry Pi camera 20
CHƯƠNG 2: XÂY DỰNG VÀ THIẾT KẾ SƠ ĐỒ MẠCH ĐIỆN HỆ THỐNG 22
2.1 Sơ đồ mô hình xe tự hành Raspberry Pi 22
2.2 Cài đặt hệ điều hành 24
2.3 Lập trình để thu hình ảnh thông qua camera bằng phương pháp OpenCV 26
Trang 5CHƯƠNG 3: XÂY DỰNG THUẬT TOÁN NHẬN DIỆN LÀN ĐƯỜNG 30
3.1 Chuyển đổi tín hiệu hình ảnh 30
3.2 Tạo vùng làn đường cần theo dõi ROI (Region of interest) 30
3.3 chuyển đổi góc nhìn thẳng (Bird eye view) 31
3.4 Xác định phân ngưỡng ảnh (Threshhold) 33
3.5 Phát hiện cạnh Canny (Canny Edge Detection) 33
3.6 Xác định làn đường bằng biểu đồ phân phối Histogram 34
3.7 Xác định tâm làn đường và phương pháp bám đường 35
3.8 Lập trình cho mô hình 37
CHƯƠNG 4: XÂY DỰNG THUẬT TOÁN NHẬN DIỆN BIỂN BÁO BẰNG PHƯƠNG PHÁP CASCADE HAAR 41
4.1 Tổng quan về Haar cascade 41
4.1.1 Khái niệm Haar Cascade 41
4.1.2 Nguyên lý hoạt Động 41
4.2 Xây dựng tệp nhận diện biển báo 43
4.2.1 Cài đặt phần mềm 43
4.2.2 Lập trình để thu ảnh mẫu 43
4.2.3 Tạo thư mục ảnh dương 46
4.2.4 Huấn luyện mô hình nhận diện ảnh 48
4.3 Lập trình nhận diện biển báo chung với chương trình nhận diện làn đường 50
4.3.1 Code của hệ thống 50
4.3.2 Giải thích code của hệ thống 57
4.3.2.1 Tải tệp XML vào chương trình xác định làn đường 57
Trang 65.1 Những mặt tích cực và hạn chế của đề tài 60 5.2 Hướng phát triển của đề tài 61
Trang 7Hình 1.1 Xe tụ hành và môi trường xung quanh 1
Hình 1.2 Các tính năng nhận diện qua camera của xe 2
Hình 1.3 Các cấp độ của xe tự hành 3
Hình 1.4 Xe tự hành Phenikaa-X 5
Hình 1.5 Một đoạn đường cao tốc 6
Hình 1.6 Đoạn cao tốc sau khi áp dụng phát hiện cạnh 7
Hình 1.7 Làn đường được phát hiện sau khi xử lý ảnh trên máy tính 7
Hình 1.8 Phương pháp phát hiện vạch làn trắng 8
Hình 1.9 Phương pháp nhận diện làn đường nâng cao 9
Hình 1.10 Raspberry Pi 3b+ 10
Hình 1.11 Sơ đồ mạch Raspberry Pi 3b+ 11
Hình 1.12 Module điều khiển động cơ L298N 13
Hình 1.13 Sơ đồ chân cắm của L298N 14
Hình 1.14 Sơ đồ mạch điền của L298N với Raspberry Pi 15
Hình 1.15 Điều khiển tốc độ động cơ DC bằng phương pháp tính hiều PWM 16
Hình 1.16 Các trường hợp chu kỳ xung 16
Hình 1.17 Nguyên lý hoạt động của mạch cầu H 17
Hình 1.18 Động cơ Servo MG996 18
Hình 1.19 Góc quay của Servo dựa trên xung điều khiển 20
Hình 1.20 Camera Raspberry Pi 20
Hình 2.1 Sơ đồ tổng thể mô hình xe tự hành Raspberry Pi 21
Hình 2.2 Sơ đồ khối nguyên lý hoạt động của mô hình sử dụng mạch Raspberry và Camera 22
Trang 8Hình 2.4 Mô hình mô phỏng nhìn ngang 24
Hình 2.5 Các phiên bản hệ điều hành Raspberry OS 25
Hình 2.6 Giao diện của Raspberry Pi Imager 25
Hình 2.7 Giao diện khởi động đầu tiên của Raspberry Pi 26
Hình 2.8 Hình ảnh thông qua Webcam 28
Hình 2.9 Số khung hình mỗi giây thu được 29
Hình 3.1 Phần đường xe cần quan sát 31
Hình 3.2 Ứng dụng chuyển đổi góc nhìn thực tế 31
Hình 3.3 Ảnh sau khi đã được chuyển đổi góc nhìn 32
Hình 3.4 Góc nhìn của camera sau khi đã được phân ngưỡng ảnh 33
Hình 3.5 Camera sau khi dã được xử lý cạnh 34
Hình 3.6 Làn đường được xác định sau khi sử dụng biểu đồ phân phối 35
Hình 3.7 Tâm làn đường được xác định 36
Hình 3.8 Làn đường bị nghiêng về một phía so với tâm ảnh 36
Hình 3.9 Làn đường bị nghiêng về bên trái so với tâm ảnh 40
Hình 4.1 Các đặc điểm hình chữ nhật được sử dụng để phát hiện các điểm khác nhau trên ảnh 42
Hình 4.2 Áp dụng các tính năng hình chữ nhật để nhận diện khuôn mặt 42
Hình 4.3 Logo Cascade trainer GUI 43
Hình 4.4 Giao diện Cascade Trainer GUI 43
Hình 4.5 Các mẫu ảnh có chứa biển bảo nguy hiểm 45
Hình 4.6 Các mẫu ảnh không chứa biển báo nguy hiểm 45
Hình 4.7 Giao diện ô Cropper trên ứng dụng 46
Hình 4.8 Giao diện sau khi đã chọn thư mục có chứa tệp ảnh 46
Trang 9Hình 4.10 Ảnh thu được sau khi cắt 47
Hình 4.11 Giao diện nhập đầu vào các thư mục 48
Hình 4.12 Quá trình huấn luyện nhận diện biển báo 48
Hình 4.13 Giao diện chạy thử nhận diện biển báo 49
Hình 4.14 Một số các mẫu ảnh cho ra sau khi chạy thử tệp XML 49
Hình 4.15 khoảng cách phát hiện được vật thể thông qua camera 59
Hình 4.16 khoảng cách phát hiện được vật thể so với thực tế 59
Hình 5.1 Khi xe lên dốc và bị mất làn đường 60
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về xe tự hành
1.1.1 Khái niệm về xe tự hành
Xe tự hành, còn được hiểu đến là xe tự lái, là một chiếc xe có khả năng hoàn thành các khả năng vận chuyển con người của xe truyền thống Nó có khả năng cảm nhận môi trường xung quanh và điều hướng thông qua cảm biến và camera mà không cần sự can thiệp của con người
Hình 1.1 Xe tự hành và môi trường xung quanh
1.1.2 Lịch sử phát triển của xe tự hành
Năm 1939, trong cuộc triển lãm của General Motors, Norman Bel Geddes đã tạo
ra chiếc xe hơi tự lái đầu tiên Đó là chiếc xe điện từ trường điều khiển bằng sóng vô tuyến tạo thành nhờ các gai kim loại từ hóa được gắn trên đường
Năm 1977, Nhật Bản đã cải tiến ý tưởng trên bằng cách sử dụng hệ thống camera chuyển dữ liệu đến máy tính để xử lý hình ảnh con đường Tuy nhiên, chiếc xe này chỉ
di chuyển được với tốc độ khoảng 32km/giờ Sau một thập kỷ, người Đức tiếp tục cho
ra đời một phương tiện được trang bị camera có thể tự lái với tốc độ khoảng 90km/giờ Khi công nghệ này được cải thiện thì khả năng phát hiện và phản ứng với môi trường của xe tự lái cũng tăng theo
Trang 11Từ 1950 - 2000, các tính năng an toàn/tiện lợi, đai ghế điều khiển hành trình và Antilock Brakes (Hệ thống chống bó phanh) được khám phá
Trong năm 2000 - 2010, các tính năng tự động hóa, hệ thống kiểm soát hành trình, phát hiện điểm mù, cảnh báo va chạm, chệch làn và phanh chống bó cứng tiếp tục được phát triển Những tính năng này nhằm đảm bảo sự an toàn và tiện lợi cho người dùng
Kể từ năm 2016 đến nay, tính năng của xe tự hành đã dần trở nên tự chủ hơn như: giúp người lái xe đi đúng làn đường, phát triển công nghệ ACC (Adaptive Cruise
Control - hệ thống kiểm soát hành trình thích ứng) và khả năng tự đỗ xe
Hình 1.2 Các tính năng nhận diện qua camera của xe
Các chuyên gia dự tính từ nay đến năm 2025 sẽ tập trung nghiên cứu để nâng cấp các tính năng: an toàn tự động một phần, hỗ trợ giữ làn đường, kiểm soát hành trình, tự
đỗ xe, hỗ trợ lái khi kẹt xe,…để các phương tiện tự hành hoạt động hiệu quả và an toàn hơn
Giai đoạn từ 2010 - 2016, các khả năng hỗ trợ người lái như: camera chiếu hậu, phanh khẩn cấp tự động và hỗ trợ tập trung vào làn đường đã xuất hiện
Trang 121.2 Tình hình xe tự hành trên thế giới và trong nước
1.2.1 Tình hình nghiên cứu xe tự hành của thế giới
Hiện nay xe tự hành đã được chia thành 6 cấp độ tự hành dựa trên tiêu chuẩn của Hiệp hội kỹ sư ô tô (SAE) để mô tả các mức độ tự chủ của phương tiện Trong đó cấp
độ cơ bản nhất là 0 (Phương tiện không có thể tự vận hành) và cấp độ 5 là cấp độ phương tiện có thể hoàn toán tự chủ không cần đến sự can thiệp của con người
Hình 1.3 Các cấp độ của xe tự hành
-Cấp độ 0 hoàn toàn không có tính năng tự lái Hiện này hầu hết các ô tô đang lưu thông đang ở mức độ này, kể các những ô tô được trang bị tính năng cảnh báo va chạm hay cảnh bảo điểm mù Ở cấp độ này, người điều khiển phải tự mình điều khiển hoàn toàn các tính năng của xe như bám vững làn đường, tăng hoặc giảm tốc độ khi xe đang di chuyển trên đường
- Cấp độ 1, ở cấp độ này các yếu tố của quá trình điều khiển phương tiện được thực hiện một cách cô lập, sử dụng dữ liệu từ các cảm biến và máy ảnh, người lái xe vẫn phải chịu phần lớn trách nhiệm điều khiển Vào năm 2008 honda giới thiệu chức năng hộ trợ giữ làn đường trên dòng xe Honda Legend Ngoài ra ở cấp độ này còn có thể kể đến tính năng kiểm soát hành trình tự động
Trang 13-Cấp độ 2, ở cấp độ này phương tiện có thể dảm nhận nhiều chức năng từ trình điều khiển và có thể kết hợp hai hoặc nhiều các tính năng lại với nhau bằng việc tiếp nhận tự nhiều nguồn dữ liệu như điều khiển phanh và giữ làn cùng một lúc Tuy nhiên, người điều khiển vẫn cần phải theo dõi để kiểm soát trong mọi tính huống
-Cấp độ 3, ở cấp độ này xe có khả năng tự lái ở trong một số trường hợp nhất định và nắm quyền kiểm soát tất cả các chức năng quan trọng về an toàn bằng cách tiếp nhận các dự liệu về bản đồ, radar, các cảm biến và hợp nhất dự liệu môi trường với bộ xử lý để đưa ra thuật toàn điều khiển
-Cấp độ 4, ở cấp độ này xe có thể hoàn toàn xử lý và tự mình di chuyển không cần đến sự can thiệp của con người Đặc biệt hơn ở cấp độ này xe còn có khả năng đảm bảo an toàn cho người sử dụng và có thể tự động dừng khi chế độ tự lái hỏng
-Cấp độ 5, phương tiện hoàn toàn không cần đến sự điều khiển và hiện diện của người lái trên xe và có thể di chuyển mọi nơi với điều khiển tủy chọn
1.2.2 Tình hình nghiên cứu xe tự hành trong nước
Vào những năm 2016 đến 2019, tập đoàn FPT cùng với những đơn vị tài trợ khác
đã phát động cuộc thi “Cuộc đua số” với tiêu chí đặt khả năng vận hành xe không người lái để giúp cho các sinh viên Việt Nam tham gia nghiên cứu và phát triển cũng như là có được một nền tảng vững chắc để đón nhận cơ hội tham gia vào cuộc cách mạng số đang được diễn ra trên toàn thế giới
Hiện nay tập đoàn Vingroup cũng đã bắt đầu thử nghiệm xe điện tự hành cấp độ
4 bao gồm 2 lidar và 6 camera góc rộng phối hợp tuệ nhân tạo ở khu du lịch Vinwonder (Nha trang) Xe có khả năng di chuyển, phát hiện người đi bộ và biển báo với độ chính xác cao Khi gặp các vận cản hoặc con người cách 30m xe sẽ giảm tốc độ
và đứng yên
Ngoài ra vào năm 2021 chiếc xe “không người lái” thông minh Phenikaa chính thức được giới thiệu tại Hà Nội Đây là xe tự hành do người Việt làm chủ công nghệ đầu tiên tại Việt Nam
Trang 14Hình 1.4 Xe tự hành Phenikaa-X
Mẫu xe tự hành thông minh Phenikaa có công nghệ tự lái ở cấp độ 4 dưa trên thang đo 5 cấp độ cho xe tự lái của Hiệp hội Kỹ sư xe hơi (SAE) Mẫu xe có các chức năng hệ thống chuyển làn tự động, hệ thống nhận diện biển báo và người đi bộ, hệ thống định vị, chức năng phân tích quỹ đạo di chuyển của các xe xung quanh và khả năng thay đổi đường đi tùy theo vị trí của vật cản và các xe di chuyển xung quanh Tuy nhiên hiện nay xe chỉ được hoạt động trong các khu vực tư nhân như du lịch, resort và sân golf Để có thể hoàn toàn tự vận hành trên đường phố, xe cần phải giải quyết được nhiều vấn đề khác
1.3 Định hướng đề tài
Để nắm bắt được xu thế công nghệ xe tự hành, em lựa chọn đề tài “Ứng dụng
OpenCV nhận diện làn đường, biển báo cho xe tự hành bằng RASBERRY PI” Với
mục đích là xây dựng mô hình xe tự hành có khả năng nhận diện được làn đường và khả năng nhân diện biển báo để tham gia giao thông trên đường phố và trên làn đường dành riêng cho xe tự hành Đề tài sẽ đi vào giải quyết các vấn đề sau:
Vấn đề 1: xây dựng mô hình điều khiển bằng raspberry Pi 3b+
Vấn dề 2: Đưa ra thuật toán xác định làn đường dựa trên sự hỗ trợ của OpenCV
Trang 15Vấn để 3: Đưa ra thuật toán xác định biển báo dựa trên phương pháp Haar Cascade
Để giải quyết các vấn đề trên, người kỹ sư phải nắm được các công nghệ liên quan đến đề tài Các phần dưới đây sẽ trình bày cụ thể khải niệm nguyên lý ưu nhược điểm, cũng như công nghệ để giải quyết vấn đề
1.4 Khái niệm OpenCV
Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky OpenCV viết tắt cho Open Source Computer Vision Library OpenCV là thư viện nguồn mở hàng đầu cho công việc xử lý ảnh và học sâu của máy, và hiện có thêm tính năng tăng tốc GPU cho các hoạt động được xử lý theo thời gian thực
OpenCV được sử dụng miễn phí cho cả học tập và mục đích thương mại OpenCV được thiết kế để hộ trợ hiệu quả về tính toán và chuyên dung cho các ứng dụng real-time (thời gian thực) và C++ là ngôn ngữ tối ưu nhất giúp cho thư viện này
có thể tận dụng được tối đa được bộ xử lý đa lõi
1.5 Một số phương pháp nhận diện làn đường
1.5.1 Phương pháp tìm đường thẳng bằng hàm Houghlines
Phương pháp này dựa trên kết quả phát hiện cạnh (Canny Edge Detection) để tiến hành phát hiện đường thẳng trên mỗi pixel thuộc cạnh được phát hiện trong ảnh,
ta lần lượt thử các phương trình đường thẳng đi qua pixel đó
Trang 16Ta tiến hành phương phát hiện cạnh
Hình 1.6 Đoạn cao tốc sau khi áp dụng phát hiện cạnh
Sau khi duyệt hết tất cả các pixel, ta sẽ lọc theo một giá trị ngưỡng xác định trước và vùng quan tâm của camera ta có được làn đường cần xác định cho xe vận hành
Hình 1.7 Làn đường được phát hiện thông qua xử lý ảnh trên máy tính
Trang 171.5.2 Phương pháp phát hiện vạch làn trắng
Tương tự như phương pháp sử dụng hạm Houghlines, Ta vẫn sử dụng chuyển đổi phát hiện cạnh CannyEdge nhưng ta xác định ngưỡng Histogram để phát hiện các làn trắng được sơn trên làn đường
Hình 1.8 Phương pháp phát hiện vạch làn trắng
1.5.3 Phương pháp nhận diện làn đường nâng cao
Phương pháp này sử dụng mỗi frame ảnh được trích ra từ file video về thông tin làn đường và sẽ được tiến hành tăng cường chất lượng ảnh bằng các kỹ thuật xử lý tổ chức đồ (Histogram) sau khi đã lọc nhiễu ảnh bằng bộ lọc Gausian Thuật toán phát hiện đường biên Canny được dùng để phát hiện các điểm ảnh có khả năng thuộc các làn đường Tiếp theo, áp dụng thuật toán làm mảnh (Thinning algorithm) vào ảnh phát hiện biên Canny để nhận được ảnh đường biên có bề dày 1 pixel từ ảnh đầu vào Cuối cùng kỹ thuật nội suy đường cong Non-Uniform B-Spline (NUBS) để xây dựng các làn đường giới hạn trái và phải một cách tách biệt dựa trên các điểm điều khiển (Control points) được chọn từ các điểm ảnh đường biên thuộc giới hạn làn đường
Trang 18Hình 1.9 Phương pháp nhận diện làn đường nâng cao
1.6 Lựa chọn phương pháp áp dụng vào mô hình
Theo yêu cầu và khả năng đáp ứng của phần cứng là sử dụng vi mạch Raspberry
Pi 3b+ ta áp dụng phương pháp phát hiện vạch đường trắng
Ưu điểm
-Giải thuật đơn giản và hiệu quả
-Tốc độ xử lý nhanh
-Không yêu cầu quá cao về phần cứng Giá thành thấp
-Có thể áp dụng vào các khu vực khuôn viên hoặc làn đường riêng biệt
-Dễ điều chỉnh các thông số cơ bản sao cho phù hợp với khu vực vận hành
Nhược điểm
-Xử lý ánh sáng làm thay đổi khả năng nhận diện của làn đường không được linh hoạt
-Không xác định chính xác độ cong làn đường khi ôm cua
-Chỉ có thể xác định 1 làn đường chưa áp dụng thuật toán đổi làn đường
Trang 191.7 Sơ lược về linh kiện cho hệ thống
1.7.1 Raspberry Pi 3b+
Hình 1.10 Raspberry Pi 3b+
Giới thiệu chung
Raspberry Pi được tạo ra bởi tổ chức Raspberry Pi Foundation thành lập vào năm
2009 Với sự hỗ trợ kết hợp cùng 3 hãng sản xuất linh kiện điện tử nổi tiếng:
EGOMAN QSIDA SONY Raspberry Pi được xem là 1 chiếc máy tính thu nhỏ với đầy đủ phần cứng mạnh mẽ, và hệ điều hành riêng biệt Ban đầu hãng sản xuất
Raspberry Pi nhằm cung cấp cho nhu cầu học tập của trẻ em Với kích thước nhỏ, ứng dụng được gói gọn và giá cả hợp lý Nhưng những tính năng trên cũng là điểm hết sức nổi bật của thiết bị so với máy tính thông thường Nhận thấy tiềm năng, Raspberry Pi được nâng cấp nhiều phiên bản nhanh chóng phát triển rộng rãi Đến nay trở thành chiếc mini Computer nổi bật, và được chú ý nhất Đã có hàng nghìn ứng dụng được thiết kế và cài đặt riêng cho Raspberry Pi
Nguồn điện
Raspberry Pi 3b+ được cấp nguồn 5V thông qua cổng micro USB, và giới hạn là 3A Nếu cấp nguồn vượt quá giới hạn sẽ làm hỏng bo mạch
Trang 20Thông số kỹ thuật
Hình 1.11 Sơ đồ mạch Raspberry Pi 3b+
Raspberry Pi 4 B là sản phẩm mới nhất được phát hành năm 2019 Nhưng ở Việt Nam hiện nay vẫn ưa chuộng nhất phiên bản Raspberry Pi 3 B+ (2018) Pi 3 B+ thuộc dòng máy tính đơn Board Nổi bật với với bộ chip 4 nhân, 64 bit tốc độ lên đến 1.4GHz Phiên bản được hỗ trợ thêm Wifi Dual-band có tốc độ 2.4GHz và 5GHz, cổng Ethernet (tốc độ 300Mbps), hỗ trợ kết nối Bluetooth Low Energy và PoE (Power
over Ethernet) thông qua PoE HAT
Trang 21Vi xử lý Broadcom BCM2837B0, quad-core A53 (ARMv8)
64-bit SoC @1.4GHz RAM
1GB LPDDR2 SDRAM
Kết Nối 2.4GHz and 5GHz IEEE 802.11 b/g/n/ac wireless
LAN, Bluetooth 4.2, BLE, Gigabit Ethernet over USB 2.0 (Tối đa 300Mbps)
Cổng USB
4 x 2.0
Video và âm thanh Cổng full-sized HDMI Cổng MIPI DSI Display
Cổng MIPI CSI Camera
Cổng stereo output
Composite video 4 chân
Multimedia H.264, MPEG-4 decode(1080p30) H.264 encode
(1080p30) OpenGL ES 1.1, 2.0 graphics
Nguồn điện sử dụng 5V/3A DC micro USB5V DC chân GPIO
Power over Ethernet (PoE)
Những lưu ý khi dùng Raspberry Pi
Ở các đầu GPIO không có bảo về cắm ngược nguồn vào Do đó ta cần phải kiểm tra hai cực của nguổn điện trước khi cấp cho Raspberry Pi khi không sử dụng đầu vào
Trang 22MicroUSB Việc làm chập mạch nguồn vào của Raspberry Pi có thể làm hư hoàn toàn phần cứng Nên cấp nguồn từ cổng MicroUSB nếu có thể
Các chân 3.3V và 5V trên bảng mạch là các chân dung để cấp nguồn cần thiết cho các thiết bị khác, không phải là đầu cấp nguồn vào Việc nhầm lẫn sai vị trí có thễ hỏng mạch
Không cấp nguồn ngoài thông qua cổng USB cho Raspberry Pi với điện áp trên 5V có thể làm hỏng linh kiện
Cường độ dòng diện vào ra ở các chân GPIO của Raspberry Pi ở mức 50mA, cổng HDMI sử dụng 50mA, module camera sử dụng 250mA Do vậy khi kết nối với các thiệt bị nên đọc các thông số mà nhà sản xuất cung cấp để kết nối chinh xác đến Raspberry Pi nhầm tránh gây ra những hỏng hóc không đáng có
1.7.2 Module điều khiển động cơ L298N
Hình 1.12 Module điều khiển động cơ L298N
Trang 23Thông số kỹ thuật
- Driver: L298N tích hợp hai mạch cầu H
- Điện áp điều khiển: +5 V ~ +12 V
- Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
- Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
- Dòng của tín hiệu điều khiển: 0 ~ 36mA
- Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
- Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
Hình 1.13 Sơ đồ chân cắm của L298N
Chức năng của các chân
Bốn chân INPUT: IN1, IN2, IN3, IN4 là các chân nhận tín hiệu điều khiển được đặt ở góc dưới cùng bên phải L298N
Bốn chân OUTPUT: OUT1, OUT2, OUT3, OUT4 được nối với các chân tương ứng trên mạch L298N Các chân này sẽ được nối với động cơ DC hoặc động cơ bước Hai chân cho phép ENA và ENB dùng để điều khiển mạch cầu H trong IC L298N Sẽ nhận tính hiệu tự “0” cho đền “255” tương ứng với cường độ dòng điện từ
Trang 240 cho đến 2 ampe Các chân này cũng được dùng để điều khiển tốc độ của động cơ với tốc độ nhanh hay chậm
+ Khi ENA = 0: Động cơ không quay với mọi đầu vào
+ Khi ENA = 1:
+ IN1 = 1; IN2 = 0: Động cơ quay thuận
+ IN1 = 0; IN2 = 1: Động cơ quay nghịch
+ IN1 = IN2: Động cơ dừng ngay lập tức
Với ENB cũng tương tự với IN3, IN4
Sơ đồ mạch điện
Hình 1.14 Sơ đồ mạch điện của L298N với Raspberry Pi
- Motor được nối với cổng OUT1 và OUT2 để điều khiển chiều quay của motor
- Cực dương của pin được kết nối với đầu vào nguồn của module L298N và cực
âm được kết nối với GND
- Các chân input 1, input 2 và EnableA dùng để điều khiển chiều quay của động
cơ được lần lượt nối với các chân GPIO của Raspberry tùy theo người lập trình thiết lập
Trang 25Hình 1.16 Các trường hợp chu kỳ xung
Trang 26Chu kỳ xung = 25%: tức 25% thời gian trong chu kỳ xung điện áp ở giá trị HIGH
Chu kỳ xung = 50%: tức 50% thời gian trong chu kỳ xung điện áp ở giá trị HIGH
Chu kỳ xung = 100%: tức 100% thời gian trong chu kỳ xung điện áp ở giá trị HIGH
Vì vậy tùy thuộc vào kích thước của động cơ, chúng ta có thể chỉ cần kết nối đầu
ra Arduino với chân của điện trở hoặc chân của MOSFET và điều khiển tốc độ của động cơ bằng cách điều khiển đầu ra PWM Tín hiệu Raspberry công suất thấp bật và tắt chân tại MOSFET thông qua đó động cơ công suất cao được điều khiển
- Để điều khiển hướng quay, chúng ta chỉ cần đảo ngược hướng của dòng điện qua động cơ, và phương pháp phổ biến nhất để làm điều đó là sử dụng mạch cầu H Một mạch cầu H chứa bốn chân chuyển mạch, điện trở hoặc MOSFET, với động cơ ở trung tâm tạo thành một cấu hình giống như chữ H Bằng cách kích hoạt hai công tắc
cụ thể cùng một lúc, chúng ta có thể thay đổi hướng của dòng điện, do đó thay đổi hướng quay của động cơ
Hình 1.17 Nguyên lý hoạt động của mạch cầu H
Trang 27Vì vậy, nếu chúng ta kết hợp hai phương thức này, PWM và H-Bridge, chúng ta
có thể kiểm soát hoàn toàn động cơ DC Có nhiều trình điều khiển động cơ DC có các tính năng này và L298N là một trong số đó
Module điều khiển động cơ L298N đảm nhiệm công việc di chuyển của mô hình bằng cách điều chỉnh tốc độ và chiều quay của 4 motor bánh xe Giúp điều hướng mô hình di chuyển theo ý muốn
1.7.3 Động cơ RC Servo MG996
Giới thiệu
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín Tín hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC (radio-controlled) Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi Động cơ servo nhận tín hiệu từ máy thu này
Trang 28Động cơ RC Servo MG996 là loại thường được sử dụng nhiều nhất trong các thiết kế Robot hoặc dẫn hướng xe Động cơ RC Servo MG996 có lực kéo mạnh, các khớp và bánh răng được làm hoàn toàn bằng kim loại nên có độ bền cao, động cơ được tích hợp sẵn driver điều khiển động cơ bên trong theo cơ chế phát xung - quay góc nên rất dễ sử dụng
Cấu tạo
Động cơ servo được cấu thành bởi 4 bộ phận: hộp giảm tốc, động cơ DC, biến trở
và bộ điều khiển Biến trở được nối với hộp số, nên khi động cơ quay thì biến trở cũng đồng thời quay theo một góc tuyệt đối ứng với vị trí ban đầu Mạch điều khiển đọc điện áp từ biến trở và so sánh với điện áp của tín hiệu Nhờ đó động cơ servo có thể xác định chính xác vị trí góc quay mong muốn
Các chân của động cơ Servo
Động cơ Servo thông thường sẽ có các chân: VCC, GND và tín hiệu Màu sắc dây của của động cơ sẽ được quy định như sau
+ GND: Màu nâu, chân MASS của Servo
+ VCC: Màu đỏ, chân cấp nguồn 4,8-7V của Servo
+ Tín hiệu: Màu vâng, ngỏ vào của tín hiệu điều khiển góc quay của Servo
Nguyên lý hoạt động
Trang 29Hoạt động của Servo được dựa trên nguyên lý nhận xung PWM và cho ra góc quay RC servo chỉ có thể xoay ở góc cố định và không thể xoay quanh
Hình 1.19 Góc quay của servo dựa trên xung điều khiển
1.7.4 Raspberry Pi camera
Giới thiệu
Raspberry Pi camera là module camera được chính Raspberry Pi Foundation thiết
kế và đưa vào sản xuất đại trà Raspberry Pi camera được tích hợp camera 5
Megapixel có độ nhạy sáng cao, có thể chụp tốt ở nhiều điều kiện ánh sáng khác nhau,
cả trong nhà và ngoài trời Điểm đặc biệt mà camera mang lại đó là chụp hình độ nét cao trong lúc quay phim
Trang 31CHƯƠNG 2: XÂY DỰNG VÀ THIẾT KẾ SƠ ĐỒ MẠCH ĐIỆN HỆ THỐNG
2.1 Sơ đồ mô hình xe tự hành Raspberry Pi
Hình 2.1 Sơ đồ tổng thể mô hình xe tự hành Raspberry Pi
Hệ thống bao gồm:
-1 Raspberry Pi 3b+ điều khiển cho cả hệ thống
-2 Motor được điểu khiển thông qua Module điều khiển động cơ L298N
-Camera kết nối với Raspberry Pi
-Servo điều khiển góc lái
-Nguồn điện cấp cho toàn bộ hệ thống
Nguyên lý hoạt động
Mô hình xe tự hành Raspberry mô phỏng quá trình di chuyển từ vị trí này tới vị
trí khác bám theo đoạn đường được cho trước giúp cho quá trình vận chuyển đơn giản
và không cần đến sự tác động của người điều khiển phương tiện
Việc xác định được làn đường và biển đều do ứng dụng của Camera gắn với
Raspberry Pi Mô hình sẽ tiến hành tự động di chuyển khi xác định được làn đường
Động cơ sẽ dừng lại nếu như camera không còn xác định được làn đường nữa Nếu ô
Trang 32tô phát hiện biển bảo nguy hiểm hoặc dừng ở một khoảng cách gần xe cũng sẽ dừng lại Tất cả các tác động trên đều được lập trình sẵn trong mạch Raspberry Pi
Hình 2.2 Sơ đồ khối nguyên lý hoạt động của mô hình sử dụng mạch Raspberry
và Camera
Mô hình xe tự hành sẽ dừng hẳn giúp đảm bảo an toàn cho người lái và yêu cầu người lái phải tự vận hành phương tiện, ngoài ra còn bảo vệ cho người lái tránh gặp những tình huống không mong muốn nếu như không chú ý biển báo Tuy nhiên, tính năng vận hành có thể chưa chính xác và yêu cầu người lái tập trung, tỉnh táo và can thiệp kịp thời để tránh những trường hợp đáng tiếc xảy ra
Trang 33Hình 2.3 Mô hình mô phỏng nhìn từ trên xuống
Hình 2.4 Mô hình mô phỏng nhìn ngang
2.2 Cài đặt hệ điều hành
Để có thể sử dụng Raspberry Pi đầu tiên ta cần phải cài đặt hệ điều hành tương ứng cho mục đích sử dụng Ta tiến hành tải hệ điều hành Raspberry Pi OS (Raspbian) trực tiếp từ website của nhà sản xuất:
Trang 34Hình 2.5 Các phiên bản hệ điều hành Raspberry Pi OS
Khi ta đã tải xong ta sử dụng phần mềm Raspberry Pi Image ta tiến hành ghi cài đặt vào thẻ nhớ SD để cái dặt hệ điều hành
Hình 2.6 Giao diện của Raspberry Pi Imager
Sau khi cài xong thẻ, ta tiến hành rút thẻ ra khỏi máy tính và cắm vào Raspberry
Pi Lúc này ta khởi động Raspberry Pi và liên kết Pi với màn hình để tiến hành thực hiện các thiết lập cơ bản ban đầu
Trang 35Hình 2.7 Giao diện khởi động đầu tiên Raspberry Pi
2.3 Lập trình để thu hình ảnh thông qua camera bằng phương pháp OpenCV
Sau khi đã cài xong hệ điều hành ta tiến hành bật ứng dụng Geeny để lập trình cho hệ thống, để thu được hình ảnh thông qua camera ta có đoạn code dưới đây