BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT Ô TÔ NGHIÊN CỨU VÀ PHÁT TRIỂN HỆ THỐNG CẢNH BÁO CHỆCH LÀN ĐƯỜNG T
CƠ SỞ LÝ THUYẾT
Cơ sở lý thuyết về ảnh
Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sáng Để xử lý bằng máy tính (số), ảnh cần phải được số hoá Số hoá ảnh là sự biến đổi gần đúng một ảnh liên tục thành một tập điểm phù hợp với ảnh thật về vị trí (không gian) và độ sáng (mức xám). Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người không phân biệt được ranh giới giữa chúng Mỗi một điểm như vậy gọi là điểm ảnh (PEL) hay gọi tắt là Pixel và được thể hiện qua hình 2.3 Trong khuôn khổ ảnh hai chiều, mỗi pixel ứng với cặp tọa độ (x, y).
Hình 2.1 Điểm ảnh Điểm ảnh (Pixel) là một phần tử của ảnh số tại toạ độ (x, y) với độ xám hoặc màu nhất định Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của ảnh số gần như ảnh thật Mỗi phần tử trong ma trận được gọi là một phần tử ảnh.
2.1.2 Độ phân giải của ảnh (Resolution) Độ phân giải (Resolution) của ảnh là mật độ điểm ảnh được ấn định trên một ảnh số được hiển thị Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt người vẫn thấy được sự liên tục của ảnh Việc lựa chọn khoảng cách thích hợp tạo nên một mật độ phân bổ, đó chính là độ phân giải và được phân bố theo trục x và y trong không gian hai chiều.
Ví dụ: Độ phân giải của ảnh trên màn hình CGA là một lưới điểm theo chiều ngang 12” ta nhận thấy mịn hơn màn hình 17” độ phân giải 320*200 Lý do: cùng một mật độ (độ phân giải) nhưng diện tích màn hình rộng hơn thì độ mịn (liên tục của các điểm) kém hơn.
Hình 2.2 Các độ phân giải ảnh
Một điểm ảnh (pixel) có hai đặc trưng cơ bản là vị trí (x, y) của điểm ảnh và độ xám của nó Mức xám của điểm ảnh là cường độ sáng của nó được gán bằng giá trị số tại điểm đó. Thông thường nó được xác định trong khoảng [0,255] tùy thuộc vào giá trị mà mỗi điểm ảnh được biểu diễn Các thang giá trị mức xám thông thường: 16, 32, 64, 128, 256 (Mức 256 là mức phổ dụng Lý do: từ kỹ thuật máy tính dùng 1 byte (8 bit) để biểu diễn mức xám Mức xám dùng 1 byte biểu diễn: 28 = 256 mức, tức là từ 0 đến 255).
RGB là không gian màu phổ biến dùng trong máy tính, máy ảnh, điện thoại và nhiều thiết bị kĩ thuật số khác Không gian màu này khá gần với cách mắt người tổng hợp màu sắc.Nguyên lý cơ bản là sử dụng 3 màu sắc cơ bản R (red - đỏ), G (green - xanh lục) và B (blue - xanh lam) để biểu diễn tất cả các màu sắc Thông thường, trong mô hình 24 bit (không gian màu mặc định sử dụng bởi OpenCV - tuy nhiên OpenCV đảo 2 kênh R và B, trở thành BGR), mỗi kênh màu sẽ sử dụng 8 bit để biểu diễn, tức là giá trị R, G, B nằm trong khoảng 0 - 255.
Bộ 3 số này biểu diễn cho từng điểm ảnh, mỗi số biểu diễn cho cường độ của một màu Với mô hình biểu diễn 24 bit, số lượng màu tối đa sẽ là:255 × 255 × 255 = 16581375
Hình 2.3 Không gian màu RGB 2.1.4.2 Không gian màu CMYK
Không gian màu CMYK chỉ mô hình màu loại trừ, thường dùng trong in ấn Mô hình màu này dựa trên cơ sở trộn các chất màu của các màu sau:
- C = Cyan trong tiếng Anh có nghĩa là màu xanh lơ hay cánh chả
- M = Magenta trong tiếng Anh có nghĩa là màu cánh sen hay hồng sẫm
- Y = Yellow trong tiếng Anh có nghĩa là màu vàng
- K = Key (trong tiếng Anh nên hiểu theo nghĩa là cái gì đó then chốt hay chủ yếu để ám chỉ màu đen mặc dù màu này có tên tiếng Anh là black do chữ B đã được sử dụng để chỉ màu xanh lam (blue) trong mô hình màu RGB
Hình 2.4 Không gian màu CMYK
Hỗn hợp của các màu CMY lý tưởng là loại trừ (các màu này khi in cùng một chỗ trên nền trắng sẽ tạo ra màu đen) Nguyên lý làm việc của CMYK là trên cơ sở hấp thụ ánh sáng. Màu mà người ta nhìn thấy là từ phần của ánh sáng không bị hấp thụ Trong CMYK hồng sẫm cộng với vàng sẽ cho màu đỏ, cánh sen cộng với xanh lơ cho màu xanh lam, xanh lơ cộng với vàng sinh ra màu xanh lá cây và tổ hợp của các màu xanh lơ, cánh sen và vàng tạo ra màu đen
Không gian màu HSV (còn gọi là HSB) là một cách tự nhiên hơn để mô tả màu sắc, dựa trên 3 số liệu:
- S: (Saturation) Độ bão hòa màu
- B (hay V): (Bright hay Value) Độ sáng
Hình 2.5 Không gian màu HSV
Theo đó, đi theo vòng tròn từ 0 -360 độ là trường biểu diễn màu sắc (Hue) Trường này bắt đầu từ màu đỏ đầu tiên (red primary) tới màu xanh lục đầu tiên (green primary) nằm trong khoảng 0-120 độ, từ 120 - 240 độ là màu xanh lục tới xanh lơ (green primary - blue primary) Từ 240 - 360 là từ màu đen tới lại màu đỏ.
Theo như cách biểu diễn không gian màu theo hình trụ như trên, đi từ giá trị độ sáng (V) được biểu diễn bằng cách đi từ dưới đáy hình trụ lên và nằm trong khoảng từ 0 - 1 Ở đáy hình trụ V có giá trị là 0, là tối nhất và trên đỉnh hình trụ là độ sáng lớn nhất (V = 1) Đi từ tâm hình trụ là giá trị bão hòa của màu sắc (S) S có giá trị từ 0-1 0 ứng với tâm hình trụ là chỗ mà màu sắc là nhạt nhất S=1 ở ngoài mặt trụ, là nơi mà giá trị màu sắc là đậm đặc nhất. Như vậy với mỗi giá trị (H,S,V) sẽ cho ta một màu sắc mà ở đó mô tả đầy đủ thông tin về màu sắc, độ đậm đặc và độ sáng của màu đó
2.1.5 Định nghĩa ảnh số Ảnh số là tập hợp 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
2.1.6 Ảnh trắng đen và ảnh màu Ảnh trắng đen chỉ bao gồm 2 màu: màu đen và màu trắng Người ta phân mức đen trắng đó thành L mức Nếu sử dụng số bit B = 8 bít để mã hóa mức đen trắng (hay mức xám) thì L được xác định:
� = � � (trong ví dụ của ta� = � � = ���mức) Nếu L bằng 2, B = 1, nghĩa là chỉ có 2 mức: mức 0 và mức 1, còn gọi là ảnh nhị phân (binary image) Mức 1 ứng với màu sáng, còn mức 0 ứng với màu tối Nếu L lớn hơn 2 ta có ảnh đa cấp xám Nói cách khác, với ảnh nhị phân mỗi điểm ảnh được mã hóa trên 1 bit, còn với ảnh 256 mức, mỗi điểm ảnh được mã hóa trên 8 bit Như vậy, với ảnh đen trắng: nếu dùng 8 bit (1 byte) để biểu diễn mức xám, số các mức xám có thể biểu diễn được là 256. Mỗi mức xám được biểu diễn dưới dạng là một số nguyên nằm trong khoảng từ 0 đến 255, với mức 0 biểu diễn cho mức cường độ đen nhất và 255 biểu diễn cho mức cường độ sáng nhất. Ảnh nhị phân khá đơn giản, các phần tử ảnh có thể coi như các phần tử logic Ứng dụng chính của nó được dùng theo tính logic để phân biệt đối tượng ảnh với nền hay để phân biệt điểm biên với điểm khác Ảnh màu theo lý thuyết của Thomas là ảnh tổ hợp từ 3 màu cơ bản: đỏ (R), lục (G), lơ (B) và thường thu nhận trên các dải băng tần khác nhau Với ảnh màu, cách biểu diễn cũng tương tự như với ảnh đen trắng, chỉ khác là các số tại mỗi phần tử của ma trận biểu diễn cho ba màu riêng rẽ gồm: đỏ (red), lục (green) và lam (blue) Để biểu diễn cho một điểm ảnh màu cần 24 bit Và 24 bit này được chia thành ba khoảng 8 bit Mỗi màu cũng phân thành L cấp màu khác nhau (thường L = 256) Mỗi khoảng này biểu diễn cho cường độ sáng của một trong các màu chính.
Chính vì thế, để lưu trữ ảnh màu người ta có thể lưu trữ từng màu riêng biệt, mỗi màu lưu trữ như một ảnh đa cấp xám Do đó, không gian nhớ dành cho một ảnh màu lớn gấp 3 lần một ảnh đa cấp xám cùng kích cỡ
Hình 2.6 Hình màu, hình xám, hình nhị phân
Cơ sở lý thuyết về xử lý ảnh
Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng cho nó.Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ Luân Đôn đến New York từ những năm 1920 Vấn đề nâng cao chất lượng ảnh được phát triển vào khoảng những năm 1955 Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh số thuật lợi. Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng Các phương pháp trí thức nhân tạo như mạng nơ-ron nhân tạo, các thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp dụng rộng rãi và thu nhiều kết quả khả quan. Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh Đầu tiên, ảnh tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy chụp ảnh) Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại Camera ổng kiểu CCIR) Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng được lấy ra từ Camera, sau đó nó được chuyền trực tiếp thành ảnh số tạo thuận lợi cho xử lý tiếp theo Máy ảnh số hiện này là một thí dụ gần gũi. Mặt khác, ảnh cũng có thể tiếp nhận từ vệ tinh; có thể quét từ ảnh chụp bằng máy quét ảnh
2.2.1 Các bước cơ bản trong xử lý ảnh
Hình 2.7 Các bước cơ bản trong xử lý ảnh 2.2.1.1 Thu nhận ảnh (Image Acquisition) Ảnh có thể nhận qua camera màu hoặc đen trắng Thường ảnh nhận qua camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh 25 dòng), cũng có loại camera đã số hoá (như loại CCD) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh.Camera thường dùng là loại quét dòng, ảnh tạo ra có dạng hai chiều Chất lượng một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng, phong cảnh)
2.2.1.2 Tiền xử lý ảnh (Image Processing)
Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng Chức năng chính của bộ tiền xử lý là lọc nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn.
Phân vùng ảnh là tách một ảnh đầu vào thành các vùng thành phần để biểu diễn phân tích, nhận dạng ảnh Ví dụ: để nhận dạng chữ (hoặc mã vạch) trên phong bì thư cho mục đích phân loại bưu phẩm, cần chia các câu, chữ về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc các vạch) riêng biệt để nhận dạng Đây là phần phức tạp khó khăn nhất trong xử lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh Kết quả nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này
2.2.1.4 Biểu diễn ảnh (Representation) Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân đoạn) cộng với mã liên kết với các vùng lận cận Việc biến đổi các số liệu này thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính Việc chọn các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận được Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác.
2.2.1.5 Nhận dạng và nội suy ảnh (Image Recognition and Interpretation)
Nhận dạng ảnh là quá trình xác định ảnh Quá trình này thường thu được bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước Nội suy là phán đoán theo ý nghĩa 11trên cơ sở nhận dạng Ví dụ: một loạt chữ số và nét gạch ngang trên phong bì thư có thể được nội suy thành mã điện thoại Có nhiều cách phân loai ảnh khác nhau về ảnh Theo lý thuyết về nhận dạng, các mô hình toán học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
- Nhận dạng theo tham số.
- Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người, …
2.2.1.6 Cơ sở tri thức (Knowledge Base)
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo nhiễu Trong nhiều khâu xử lý và phân tích ảnh ngoài việc đơn giản hóa các phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh theo cách của con người. Trong các bước xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người Vì vậy, ở đây các cơ sở tri thức được phát huy.
2.2.1.7 Mô tả (biểu diễn ảnh)
Từ Hình 2.7, ảnh sau khi số hoá sẽ được lưu vào bộ nhớ, hoặc chuyển sang các khâu tiếp theo để phân tích Nếu lưu trữ ảnh trực tiếp từ các ảnh thô, đòi hỏi dung lượng bộ nhớ cực lớn và không hiệu quả theo quan điểm ứng dụng và công nghệ Thông thường, các ảnh thô đó được đặc tả (biểu diễn) lại (hay đơn giản là mã hoá) theo các đặc điểm của ảnh được gọi là các đặc trưng ảnh (Image Features) như: biên ảnh (Boundary), vùng ảnh (Region) Một số phương pháp biểu diễn thường dùng:
- Biểu diễn bằng mã chạy (Run-Length Code).
- Biểu diễn bằng mã xích (Chaine -Code).
- Biểu diễn bằng mã tứ phân (Quad-Tree Code).
Biểu diễn bằng mã chạy
Phương pháp này thường biểu diễn cho vùng ảnh và áp dụng cho ảnh nhị phân Một vùng ảnh R có thể mã hoá đơn giản nhờ một ma trận nhị phân:
Trong đó: U(m, n) là hàm mô tả mức xám ảnh tại tọa độ (m, n) Với cách biểu diễn trên,một vùng ảnh được mô tả bằng một tập các chuỗi số 0 hoặc 1 Giả sử chúng ta mô tả ảnh nhị phân của một vùng ảnh được thể hiện theo toạ độ (x, y) theo các chiều và đặc tả chỉ đối với giá trị “1” khi đó dạng mô tả có thể là: (x, y)r; trong đó (x, y) là toạ độ, r là số lượng các bit có giá trị “1” liên tục theo chiều ngang hoặc dọc.
Biểu diễn bằng mã xích
Phương pháp này thường dùng để biểu diễn đường biên ảnh Một đường bất kỳ được chia thành các đoạn nhỏ Nối các điểm chia, ta có các đoạn thẳng kế tiếp được gán hướng cho đoạn thẳng đó tạo thành một dây xích gồm các đoạn Các hướng có thể chọn 4, 8, 12,
24, … mỗi hướng được mã hoá theo số thập phân hoặc số nhị phân thành mã của hướng.
Biểu diễn bằng mã tứ phân
Phương pháp mã tứ phân được dùng để mã hoá cho vùng ảnh Vùng ảnh đầu tiên được chia làm bốn phần thường là bằng nhau Nếu mỗi vùng đã đồng nhất (chứa toàn điểm đen (1) hay trắng (0)), thì gán cho vùng đó một mã và không chia tiếp Các vùng không đồng nhất được chia tiếp làm bốn phần theo thủ tục trên cho đến khi tất cả các vùng đều đồng nhất Các mã phân chia thành các vùng con tạo thành một cây phân chia các vùng đồng nhất.
Trên đây là các thành phần cơ bản trong các khâu xử lý ảnh Trong thực tế, các quá trình sử dụng ảnh số không nhất thiết phải qua hết các khâu đó tùy theo đặc điểm ứng dụng Hình 2.2 cho sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối một cách khá đầy đủ. Ảnh sau khi được số hóa được nén, lưu lại để truyền cho các hệ thống khác sử dụng hoặc để xử lý tiếp theo Mặt khác, ảnh sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng(khi ảnh đủ chất lượng theo một yêu cầu nào đó) để chuyển tới khâu phân đoạn hoặc bỏ tiếp khâu phân đoạn chuyển trực tiếp tới khâu trích chọn đặc trưng Hình 2.2 cũng chia các nhánh song song như: nâng cao chất lượng ảnh có hai nhánh phân biệt: nâng cao chất lượng ảnh (tăng độ sáng, độ tương phản, lọc nhiễu) hoặc khôi phục ảnh (hồi phục lại ảnh thật khi ảnh nhận được bị méo) v.v…
Hình 2.8 Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối
2.2.2 Các thành phần cơ bản của hệ thống xử lý ảnh
Theo quan điểm của quy trình xử lý, chúng ta đã thể hiện các khối cơ bản trên hình 2.7, các khối chi tiết và luồng thông tin trên hình 2.8 Theo quan điểm của hệ thống xử lý trên máy tính số, hệ thống gồm các đầu đo (thu nhận ảnh), bộ số hóa, máy tính số, bộ hiển thị, bộ nhớ Các thành phần này không nhắc lại ở đây (đọc thêm giáo trình cấu trúc máy tính).
Bài toán nhận dạng đối tượng
Một trong những lĩnh vực quan trọng của trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy tính (Computer Vision) Thị giác máy tính là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn Nhận dạng vật thể (Object Detection) có lẽ là khía cạnh sâu sắc nhất của thị giác máy tính do số lần sử dụng trong thực tế.
Nhận dạng vật thể là lĩnh vực thuộc “Machine Learning” nguyên cứu khả năng của hệ thống máy tính cũng như phần mềm để định vị các đối tượng trong một hình ảnh, video cho trước và xác định từng đối tượng trong đó Sự phát triển khoa học kỹ thuật công nghệ đã thúc đẩy đưa bài toán nhận dạng đối tượng vào ứng dụng thực tiễn với mức độ tinh vi ngày càng cao Có thể thấy nhận dạng vật thể đã được sử dụng rộng rãi để phát hiện khuôn mặt,phát hiện xe, đếm số người đi bộ, hệ thống bảo mật và xe không người lái, công nghệ robot, Vì vậy, nhận dạng vật thể là một lĩnh vực đang được quan tâm và có tính ứng dụng cao.
Thị giác máy tính – Computer Vision
Hình 2.10 Thị giác máy tính
Nhìn vào một bức ảnh, một người với thị giác bình thường có thể dễ dàng mô tả nội dung, nhận biết và phát hiện các đối tượng được thể hiện trong bức ảnh cũng như vị trí chính xác của chúng Tuy nhiên, việc này (đọc và hiểu một bức ảnh) khó khăn hơn nhiều đối với máy tính khi “nó” “nhìn” mỗi bức ảnh chỉ đơn thuần là một ma trận số (tập hợp các điểm ảnh - pixel biểu diễn dưới dạng số theo một hệ cụ thể thường là RGB (Red - Green - Blue). Mục tiêu chính của thị giác máy tính – một nhánh của trí tuệ nhân tạo (Artificial Intelligence) là tìm ra đầu nối giữa ma trận số này và thông tin ngữ nghĩa chứa trong ảnh Thị giác máy tính tập trung giải quyết những bài toán như:
- Phân loại ảnh, miêu tả ảnh,
- Phát hiện vật thể trong ảnh: Xe, làn đường, con người, biển báo giao thông, …
- Tạo ảnh với những phong cách khác nhau: Hiển thị nội dung ngữ nghĩa của ảnh gốc theo những phong cách khác nhau.
NGHIÊN CỨU XE ĐIỆN RENAULT TWIZY
Giới thiệu tổng quan về xe điện Renault Twizy
Renault Twizy là một chiếc xe điện nhỏ gọn với 4 bánh xe, hai cửa, và 2 chỗ ngồi Được thiết kế và sản xuất bởi hãng xe nổi tiếng và lâu đời của Pháp – hãng xe Renault Twizy ra mắt dưới dạng xe ý tưởng tại Triển lãm Ô tô Frankfurt năm 2009 và được thiết kế bởi Franỗoise Leboinne và Luciano Bove Vào thỏng 11 năm 2010, Nissan đó cụng bố một biến thể cải tiến cho Twizy, được gọi là New Mobility Concept Vào tháng 5 năm 2011, Renault thông báo họ sẽ sản xuất Twizy và bắt đầu nhận đặt trước Vào tháng 3 năm 2012, Twizy được phát hành cho thị trường Pháp, một tháng sau đó là một số quốc gia châu Âu khác Vào năm 2020, tại Vương quốc Anh, Twizy hiện có sẵn dưới dạng mua trực tiếp.
Renault Twizy là chiếc xe được thiết kế để đi trong thành phố với hai chỗ ngồi chạy bằng điện với tổng công suất lớn 17 mã lực, có thể đạt tốc độ tối đa 50 mph và mô-men xoắn cực đại 57 Nm Được trang bị hệ thống phanh đĩa cho cầu trước và sau, hệ thống lái sử dụng thước lái và sử dụng Pseudo MacPherson cho hệ thống treo. Điểm nổi bật của xe điện Renault Twizy là thiết kế nhỏ gọn, xe chạy 100% từ điện nên rất êm dịu, không có tiếng ồn phát ra từ động cơ như xe chạy bằng nhiên liệu xăng, dầu Với hộp số tự động, người lái chỉ cần nhấn nút và đạp ga là xe có thể di chuyển về phía trước hoặc phía xe Ngoài ra, với công nghệ cửa cắt kéo giúp chiếc xe trở nên sang trọng hơn Tuy vậy, xe còn một vài nhược điểm như không có trợ lực lái, không có hệ thống ABS, dễ bị ướt khi trời mưa, …
Khảo sát xe điện Renault Twizy
Tuy đã có đề tài được thực hiện sau khi xe điện Renault Twizy về trường, nhưng vẫn chưa có đề tài nào khảo sát cụ thể về xe Sau khi nhóm tìm hiểu, nghiên cứu kỹ về quy trình tháo – lắp xe điện Renault Twizy và được sự đồng ý của ban chủ nhiệm khoa Cơ khí Động lực cùng với giảng viên hướng dẫn, nhóm đã tiến hành tháo – lắp đúng quy trình một số chi tiết trên xe nhằm khảo sát đường truyền công suất và hệ thống điện thân xe, đồng thời đo đạc kích thước xe để lấy thông số phục vụ cho giải thuật cảnh báo chệch làn đường trên xe.
Hình 3.2 Xe Renault Twizy sau khi tháo một số chi tiết
3.2.1 Đo đạc kích thước xe
Trước khi tiến hành tháo lắp, chúng em tiến hành đo kiểm lại các thông số kích thước xe để phục vụ cho bài toán cảnh báo chệch làn đường Đặc biệt, cần đo chính xác tổng chiều rộng của xe, đây là thông số để tính toán độ lệch xe với làn đường.
Hình 3.3 Kích thước của xe điện Renault TwizyBảng 3.1 Thông số kích thước xe Renault Twizy
Sau khi tiến hành tháo một số chi tiết trên xe, nhóm đã nghiên cứu, tìm hiểu cách thức hoạt động và tra cứu thông số kỹ thuật của các bộ phận của đường truyền công suất và tiến hành vẽ lại sơ đồ khối như hình dưới.
Hình 3.4 Sơ đồ khối đường truyền công suất trên xe điện Renault Twizy
Xe điện Renault Twizy sử dụng cầu sau chủ động, lấy nguồn chính từ ắc quy kéo để chuyển đến bộ điều khiển SEVCON Gen4, tại đây bằng cách trao đổi mạng CAN giữa bộ điều khiển với hệ thống quản lý pin (BMS) trong ắc quy kéo, dòng điện cho phép của pin có thể tự động thay đổi để cấp cho motor xoay chiều ba pha hoạt động Motor này được gắn cố định với hộp số tự động bằng liên kết bu lông, khi motor quay sẽ truyền động đến hộp số rồi qua bán trục đến bánh xe, giúp bánh xe quay và kéo xe chuyển động Đồng thời, motor sẽ gửi lại tín hiệu phản hồi cho bộ điều khiển thông qua cảm biến, encoder,
Vì lý do điều kiện an toàn, cơ sở vật chất, thời gian thực hiện cũng như không có sự đồng ý của giảng viên hướng dẫn nên nhóm không tiến hành tháo rời các bộ phận trong đường truyền công suất ra khỏi khung xe để tiến hành nguyên cứu Thay vào đó, nhóm chỉ lấy thông tin có sẵn để tra cứu thông số kỹ thuật trên mạng. Ắc quy kéo là nguồn năng lượng chính cấp điện cho motor điện xoay chiều 3 pha hoạt động để kéo xe di chuyển Ắc quy kéo được đặt ngay phía dưới ghế của tài xế Ắc quy kéo được cấu tạo từ các pin lithium – ion và được bảo vệ bằng một khung kim loại bên ngoài Ắc quy kéo được tích hợp một hệ thống quản lý (BMS) để giao tiếp với bộ điều khiển thông qua mạng CAN.
Bảng 3.2 Thông số kỹ thuật của bình ắc – quy kéo trên xe Renault Twizy
Hình 3.5 Ắc quy kéo trên xe điện Renault Twizy
3.2.2.2 Ắc quy 12V Ắc – quy dùng để cấp điện cho các thiết bị điện trên xe như gạt mưa – rửa kính, các đèn chiếu sáng, … Ắc quy được sạc khi xe chạy, hoặc được sạc chung với bình ắc – quy kéo bởi bộ sạc Vị trí của bình ắc quy 12V như hình bên dưới.
Hình 3.6 Bình ắc – quy 12V trên xe điện Renault Twizy 3.2.2.3 Bộ sạc (Charger)
Charger là bộ sạc giúp biến đổi dòng điện xoay chiều thành dòng điện một chiều để cung cấp cho bình ắc – quy 12V và bình ắc – quy kéo Bộ sạc được đặt ở vị trí dưới chân của tài xế.
Bảng 3.3 Thông số kỹ thuật của bộ sạc trên xe Renault Twizy
Hình 3.7 Bộ sạc trên xe điện Renault Twizy 3.2.2.4 Bộ điều khiển Sevcon gen4
Bộ điều khiển Sevcon gen4 là bộ điều khiển động cơ xoay chiều 3 pha trên xe Bộ điều khiển này lấy dòng điện từ ắc quy kéo (giao tiếp mạng CAN với hệ thống quản lý pin của ắc quy kéo), thay đổi dòng điện đầu ra như mong muốn và cấp cho motor xoay chiều 3 pha. Đồng thời bộ điều khiển này cũng tiếp nhận các tín hiệu phản hồi từ motor để tiến hành điều khiển dòng diện đầu ra như tín hiệu cảm biến nhiệt độ, tín hiệu Absolute UVW encoder, tín hiệu Absolute Sin/Cos encoder, tín hiệu Incremental AB encoder, …
Tính năng bảo vệ của Sevcon gen4:
Tự động giảm nếu hoạt động ngoài phạm vi nhiệt độ bình thường.
Tự động giảm tùy thuộc vào thời gian tải lên bộ điều khiển.
Nó cũng sẽ tự bảo vệ nếu được nối dây không chính xác.
Bảo vệ ngược pha motor khi khởi động nguồn và khi hoạt động.
Khi bật Gen4 kiểm tra tải đầu ra hợp lệ trước khi xuất dòng.
Bảng 3.4 Thông số kỹ thuật của Sevcon gen4 trên xe Renault Twizy
Hình 3.8 Bộ điều khiển Sevcon gen4 trên xe điện Renault Twizy 3.2.2.5 Động cơ điện và hộp số Động cơ điện trên xe Renault Twizy là loại động cơ điện xoay chiều 3 pha, được gắn chặt với hộp số tự động loại giảm tốc bằng liên kết bu-lông.
Bảng 3.5 Thông số kỹ thuật của động cơ điện trên xe Renault Twizy
Hình 3.9 Động cơ điện gắn với hộp số trên xe điện Renault Twizy
3.2.3 Hệ thống điện thân xe
Do hạn chế về thời gian thực hiện và tình hình dịch covid – 19 diễn biến căng thẳng, bên cạnh đó giáo viên hướng dẫn cũng không cho phép nhóm tháo bó dây, rút giắc để đo kiểm nên nhóm chỉ tiến hành vẽ lại sơ đồ khối của hệ thống điện thân xe như hình bên dưới Đồng thời, để không làm rối sơ đồ, nhóm chúng em đã không thể hiện sự nối mass của các thiết bị điện, nên ta ngầm hiểu các thiết bị đã được cấp mass.
SƠ LƯỢC VỀ PHẦN CỨNG VÀ PHẦN MỀM
Phần cứng
Cấu hình máy tính được sử dụng để thử nghiệm các source code trong đề tài được thể hiện trong hình 3.1 Tuy nhiên, cộng đồng DeepLearning không ưa chuộng loại card đồ họa này vì sự tương thích về trình điều khiển của card đồ họa đối với các nền tảng DeepLearning hiện hành Và đó là một trong những lý do khiến chúng em không sử dụng thuật toán DeepLearning trong đồ án này.
Hình 4.1 Cấu hình của laptop
Song hành cùng với sự phát triển của các dòng máy tính nhúng thông thường là sự phát triển của các máy tính nhúng cho phép phát triển các ứng dụng liên quan đến trí tuệ nhân tạo như Machine Learning, Computer Vision, Edge Computing, Speech Recognition & NLP,Neural Networks Acceleration, … Một số dòng tiêu biểu như máy tính nhúng Raspberry Pi,máy tính nhúng LattePanda, máy tính nhúng AI Coral Dev Board, … trong đó phải kể đến dòng máy tính nhúng AI NVIDIA Jetson vô cùng mạnh mẽ cho phép người dùng chạy song song nhiều mạng Neural sử dụng cho các ứng dụng như Image Classification, Object Detection, Image Segmentation, Speech Processing, …
Hiện nay trên thị trường, dòng máy tính nhúng AI NVIDIA Jetson cho ra mắt một số loại máy tính nhúng khác nhau như Jetson Nano Developer Kit, Jetson TX2 Developer Kit, Jetson Xavier NX Developer Kit và Jetson AGX Xavier Developer Kit, … với các thông số như sau:
Hình 4.2 Thông số các loại máy tính nhúng dòng NVIDIA Jetson Dev Kit
Do mục tiêu của đồ án là thiết lập một hệ thống cảnh báo chệch làn đường trên xe điệnRenaul Twizy nên cần một chiếc máy tính nhúng nhỏ gọn, nhưng vẫn đủ mạnh mẽ để xử lý các thuật toán phức tạp của hệ thống, đồng thời vẫn nằm trong phạm vi tài chính của nhóm.
Hình 4.3 Bảng so sánh Jetson Nano với các máy tính nhúng khác
Hình 4.4 Jetson Nano Developer Kit – B01
Camera Raspberry Pi NoIR V2 IMX219 8MP là phiên bản Camera Module tương thích với Jetson nano, với cảm biến IMX219 8-megapixel từ Sony, gồm 8 triệu điểm ảnh, độ phân giải 3280 x 2464 cho thấy sự vượt trội về cả chất lượng hình ảnh, video Vì vậy nhóm quyết định chọnCamera Raspberry Pi NoIR V2 IMX219 8MPcho đồ án.
Hình 4.6 Camera Raspberry Pi NoIR V2 IMX219 8MP
Màn hình 7inch IPS HDMI LCD(H) được nhập từ chính hãng Waveshare, màn hình sử dụng cổng kết nối HDMI với độ phân giải màn hình 1024 x 600 pixels cho chất lượng hình ảnh và chữ hiển thị rõ ràng
Trong đồ án của nhóm, màn hình LCD đóng vai trò quan trọng giúp nhóm thực hiện thao tác kiểm tra và theo dõi Đồng thời xuất tín hiệu cảnh báo bằng hình ảnh cho tài xế.
Hình 4.7 Màn hình Waveshare 7inch HDMI IPS LCD(H)
4.1.5 Các thiết bị hỗ trợ khác
Bộ UPS Power Module và pin lithium – ion: dùng để cấp nguồn cho Jetson Nano khi hệ thống lắp đặt trên xe.
UPS là mô đun cung cấp nguồn liên tục của hãng Waveshare dành cho NVDIA Jetson Nano Một giải pháp nguồn cho Jetson Nano với các tính năng đặc biệt như: bảo vệ quá dòng, ngược dòng, bảo vệ ngắn mạch và tính năng sạc cân bằng an toàn, ổn định Ngoài ra còn được tích hợp màn hình OLED 0.91'' để theo dõi các thông số như điện áp pin, địa chỉ
IP, mức sử dụng RAM, dung lượng pin …
Hình 4.8 UPS Power Module và pin Li-on
Hình 4.9 Các thông số hiển thị trên màn hình
USB wifi và thẻ nhớ 32GB: lần lượt dùng để thu sóng wifi và tăng lưu lượng bộ nhớ cho Jetson Nano.
Hình 4.10 USB wifi 802.11n và thẻ nhớ 32GB
Bàn phím mini: dùng để thao tác trên màn hình LCD
Hình 4.11 Bàn phím mini Qwerty không dây
Các linh kiện điện tử gồm led, nút nhấn, test board, điện trở 220 , …
Do tình hình dịch Covid 19 diễn biến phức tạp, cả nước tuân thủ chỉ thị 16 của chính phủ nên các cửa hàng điện tử cũng không hoạt động và nhóm không thể đi mua còi, động cơ rung để cảnh báo Tận dụng các linh kiện sẵn có tại nhà, nhóm quyết định dùng đèn led màu vàng để thay thế còi, động cơ rung.
Led màu vàng sáng tương ứng với còi và động cơ rung sẽ hoạt động và ngược lại led màu vàng tắt tương ứng với còi và động cơ rung sẽ không hoạt động Đồng thời khi nhấn nút nhấn thì led màu đỏ sẽ sáng, tương ứng với việc gạt công tắc xi nhan thì đèn xi-nhan sẽ sáng.
Hình 4.12 Các linh kiện điện tử
Phầm mềm
Ubuntu là một hệ điều hành máy tính dựa trên Debian GNU/Linux, một bản phân phối Linux thông dụng Tên của nó bắt nguồn từ "ubuntu" trong tiếng Zulu, có nghĩa là "tình người", mô tả triết lý ubuntu: "Tôi được là chính mình nhờ có những người xung quanh," một khía cạnh tích cực của cộng đồng Mục đích của Ubuntu bao gồm việc cung cấp một hệ điều hành ổn định, cập nhật cho người dùng thường, và tập trung vào sự tiện dụng và dễ dàng cài đặt Ubuntu đã được đánh xếp hạng là bản phân phối Linux thông dụng nhất cho máy tính để bàn, chiếm khoảng 30% số bản Linux được cài đặt trên máy tính để bàn năm 2007.
Ubuntu là phần mềm mã nguồn mở tự do, có nghĩa là người dùng được tự do chạy, sao chép, phân phối, nghiên cứu, thay đổi và cải tiến phần mềm theo điều khoản của giấy phépGNU GPL Ubuntu được tài trợ bởi Canonical Ltd (chủ sở hữu là một người Nam Phi MarkShuttleworth) Thay vì bán Ubuntu, Canonical tạo ra doanh thu bằng cách bán hỗ trợ kĩ thuật.Bằng việc để cho Ubuntu tự do và mở mã nguồn, Canonical có thể tận dụng tài năng của những nhà phát triển ở bên ngoài trong các thành phần cấu tạo của Ubuntu mà không cần phải tự mình phát triển
Hình 4.13 Giao diện hệ điều hành Ubuntu trên NVIDIA Jetson Nano Developer Kit
NVIDIA JetPack SDK là giải pháp toàn diện nhất được nhà NVIDIA cung cấp để xây dựng các ứng dụng AI Tất cả các module Jetson và bộ công cụ dành cho nhà phát triển đều được hỗ trợ bởi JetPack SDK.
JetPack SDK bao gồm Gói trình điều khiển Jetson Linux mới nhất (L4T) với hệ điều hành Linux và các thư viện và API tăng tốc CUDA-X cho Deep Learning, Computer Vision, Accelerated Computing and Multimedia Nó cũng bao gồm các mẫu, tài liệu và công cụ dành cho nhà phát triển cho cả máy tính chủ và bộ công cụ dành cho nhà phát triển, đồng thời hỗ trợ các SDK cấp cao hơn như DeepStream để phân tích video trực tuyến và Isaac cho robot.
Bitvise SSH Client là một phần mềm truy cập từ xa an toàn độc quyền được phát triển cho Windows Bitvise SSH Client đóng vai trò như máy chủ giúp liên kết cùng lúc nhiều laptop với NVIDIA Jetson Nano Developer Kit để dễ dàng truyền xuất, chỉnh sửa file.
Hình 4.14 Giao diện chính của Bitvise SSH Client
4.2.4 Ngôn ngữ lập trình Python
Python là ngôn ngữ lập trình hướng đối tượng thông dụng dùng để viết các tiện ích hệ thống Nó cũng được sử dụng như ngôn ngữ kết dính đóng vai trò tích hợp C và C++ Được tạo ra bởi Guido van Rossum tại Amsterdam năm 1990, Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động 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ý Python là ngôn ngữ có hình thức khá đơn giản và rõ ràng, do đó tạo nên sự dễ dàng tiếp cânh cho những lập trình viên mới bắt đầu Ban đầu, Python được phát triển để chạy trên nền Unix, nhưng rồi theo thời gian, nó đã được mở rộng sang 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 là một ngôn ngữ lập trình dễ học, dễ đọc Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các ký hiệu và cấu trúc cú pháp so với các ngôn ngữ khác.
Mã nguồn của Python tương đối dễ để bảo trì và duy trì và có khả năng mở rộng Python có một tiêu chuẩn thư viện rộng, nền tảng tương thích trên nhiều hệ điều hành hiện nay như: UNIX, Windows, và Macintosh Đây cũng là một trong những điểm mạnh đáng kể của Python.
Python có thể được sử dụng như ngôn ngữ script, hoặc ngôn ngữ biên dịch, nhờ đó có thể build các chương trình lớn trên nó Khi chế độ Interactive, có thể nhập kết quả từ các đầu cuối khác nhau vào chương trình Python, do đó mà việc test hay debug lỗi code trở nên đơn giản hơn Python cho phép người dùng tích hợp vào các module để có thể sử dụng trong các chương trình khác Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, hỗ trợ lập trình mạng (socket),…Python cung cấp giao diện cho tất cả các cơ sở dữ liệu thương mại lớn Có thế dễ dàng tích hợp với C, C++, COM, CORBA, ActiveX, Java.
Anaconda là nền tảng mã nguồn mở về Khoa học dữ liệu trên Python thông dụng nhất hiện nay Anaconda với hơn 11 triệu người dùng, Anaconda là cách nhanh nhất và dễ nhất để học Khoa học dữ liệu với Python hoặc R trên Windows, Linux và Mac OS X Lợi ích của Anaconda:
- Dễ dàng tải 1500+ packages về Python/R cho data science
- Quản lý thư viện, môi trường và dependency giữa các thư viện dễ dàng
- Dễ dàng phát triển mô hình machine learning và deep learning với scikit-learn,tensorflow, keras
- Xử lý dữ liệu tốc độ cao với numpy, pandas
- Hiện thị kết quả với Matplotlib, Bokeh
Hình 4.16 Biểu trượng của ANACONDA
Phần mềm PyCharm cung cấp một bộ công cụ hoàn chỉnh cho các nhà phát triển Python chuyên nghiệp PyCharm được xây dựng xung quanh một trình soạn thảo hiểu mã sâu sắc, và một trình sửa lỗi cho cái nhìn rõ ràng về hoạt động của mã PyCharm cung cấp khả năng tích hợp với các công cụ cộng tác như hệ thống kiểm soát phiên bản và các tracker Trình biên tập chuyên nghiệp mở rộng các yếu tố cần thiết bằng cách tích hợp liền mạch với các khuôn khổ web, các công cụ JavaScript, ảo hóa và hỗ trợ containerization Một khía cạnh quan trọng của chương trình là hiểu được nền tảng mã mà bạn đang đưa vào PyCharm đảm bảo bạn có thể khám phá dự án của bạn chỉ với một vài thao tác trên phím, nó cung cấp cho bạn một cái nhìn tổng quan về cấu trúc dự án và cho phép bạn truy cập vào các tài liệu có liên quan ngay từ trình soạn thảo Hiểu được một nền tảng code nhanh hơn có nghĩa là thúc đẩy nhanh hơn quá trình phát triển của bạn.
Hình 4.17 Biểu tượng của PyCharm
Các tính năng chính của PyCharm:
– Hỗ trợ Windows, macOS và Linux
– Hỗ trợ mã hoàn thiện thông minh, điều hướng bằng một cú nhấp chuột và kiểm tra kiểu PEP8
– Tái cấu trúc an toàn và tự động trong dự án của bạn
– Tự động phát hiện các vấn đề mã: ví dụ: phân tích mã không sử dụng
– Trình gỡ lỗi hiệu suất cao
– Chế độ mô phỏng Vim
4.2.7 Các thư viện sử dụng trong đồ án
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 Computer Vision và Machine Learning, và hiện có thêm tính năng tăng tốc GPU cho các hoạt động theo real-time OpenCV được phát hành theo giấy phép BSD (*), do đó nó miễn phí cho cả học tập và sử dụng với mục đích thương mại Nó có trên các giao diện C++, C, Python và Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế để hỗ trợ hiệu quả về tính toán và chuyên dùng cho các ứng dụng real-time (thời gian thực). Nếu được viết trên C/C++ tối ưu, thư viện này có thể tận dụng được bộ xử lý đa lõi.
Hình 4.18 Biểu tượng của OpenCV 4.2.7.2 Numpy
Numpy là tên viết tắt của Numeric Python hoặc Numerical Python Nó là một thư việnPython cung cấp các đối tượng mảng đa chiều, các đối tượng dẫn xuất khác nhau (ví dụ như mảng và ma trận có mặt nạ) và một loạt những quy trình hoạt động nhanh trên mảng Nó bao gồm cả toán học, logic, thao tác hình dạng, sắp xếp, lựa chọn, I/O, biến đổi Fourier rời rạc,đại số tuyến tính cơ bản, hoạt động thống kê cơ bản, mô phỏng ngẫu nhiên và hơn thế nữaHiểu một cách đơn giản hơn: Numpy chính là một thư viện cốt lõi cho tính toán khoa học của Python Cung cấp một đối tượng mảng đa chiều với hiệu suất cao và những công cụ để làm việc với các mảng này.
Hình 4.19 Biểu tượng của Numpy 4.2.7.3 Matplotlib
Matplotlib.pyplot là một thư viện vẽ đồ họa được sử dụng cho đồ họa 2D bằng ngôn ngữ lập trình python Nó có thể được sử dụng trong các tập lệnh python, shell, máy chủ ứng dụng web và các bộ công cụ giao diện người dùng đồ họa khác Có một số bộ công cụ có sẵn để mở rộng chức năng của python matplotlib Một số trong số chúng là các bản tải xuống riêng biệt, một số khác có thể được vận chuyển bằng mã nguồn matplotlib nhưng có phụ thuộc bên ngoài:
Basemap: Nó là một bộ công cụ vẽ bản đồ với nhiều phép chiếu bản đồ, đường bờ biển và ranh giới chính trị.
Cartopy: Nó là một thư viện ánh xạ bao gồm các định nghĩa phép chiếu bản đồ hướng đối tượng, và các khả năng biến đổi điểm, đường thẳng, đa giác và hình ảnh tùy ý.
Công cụ Excel: Matplotlib cung cấp các tiện ích để trao đổi dữ liệu với Microsoft Excel.
Mplot3d: Nó được sử dụng cho các ô 3-D.
Natgrid: Nó là một giao diện của thư viện natgrid để tạo lưới không đều cho các dữ liệu cách nhau.
XÂY DỰNG HỆ THỐNG CẢNH BÁO CHỆCH LÀN ĐƯỜNG
Giới thiệu về hệ thống cảnh báo chệch làn đường
Hệ thống cảnh báo chệch làn đường (LDWS) xuất hiện lần đầu tiên do hãng Mercedes- Benz giới thiệu trên xe tải Actros ở châu Âu vào cuối thập niên 90 của thế kỷ trước.
LDWS là một hệ thống an toàn rất hiệu quả khi đi trên đường trường, đặc biệt là cao tốc, giúp giảm thiểu tai nạn liên quan đến việc chuyển động lệch hướng không lường trước của ô tô Để báo hiệu cho lái xe về việc chạm vạch hoặc có nguy cơ chạm vạch phân làn khi tài xế chưa bật đèn báo rẽ Về cơ bản hoạt động của hệ thống này dựa vào thông tin từ các Camera hoặc cảm biến hồng ngoại, được bố trí ở kính chắn gió, tap-lo, trần xe hay cản trước…
Hình 5.1 Hệ thống cảnh báo chệch làn đường
Bộ phận Camera sẽ theo dõi các làn đường ở khoảng cách trước mũi xe 25m và liên tục gửi thông tin trực tiếp cho cụm xử lý trung tâm – bộ phận có chức năng phân tích, xử lý các số liệu và so sánh với vận tốc chuyển động của xe Các cảm biến sẽ đảm nhận nhiệm vụ rà soát và phân tích các vạch kẻ đường Sau đó, truyền về trung tâm để tính toán và phát hiện các chuyển động lệch ra khỏi làn đường và báo cho lái xe bằng âm thanh, hình ảnh hoặc
Hiện nay, nhằm hỗ trợ LDWS, hệ thống hỗ trợ duy trì làn đường (LKAS) là một bước tiến xa hơn với việc kiểm xoát bánh xe khi sử dụng hệ thống đánh lái trợ lực điện để giữ cho ô tô đi đúng làn Một số hệ thống được kết hợp với công nghệ giám sát hành chính thích ứng hoặc giám sát hành trình sử dụng radar để gia tăng mức độ an toàn.
Mặc dù rất hữu ích nhưng tất cả các hệ thống giám sát và kiểm soát làn xe đều bị hạn chế với việc nhận biết vạch kẻ làn, đặc biệt là tại các tuyến đường đang thi công và trong tình trạng thời tiết xấu Thực tế, các công nghệ này mới chỉ dừng lại ở vai trò hỗ trợ an toàn cho lái xe chứ chưa phải công nghệ lái tự động Chính vì vậy, tài xế cần tỉnh táo khi lái xe ngay cả khi chiếc xe đó đã được trang bị công nghệ cảnh báo chệch làn đường - LDW hay tính năng hỗ trợ duy trì làn đường - LKA đi chăng nữa.
Xây dựng hệ thống cảnh báo chệch làn đường
Hình 5.2 Sơ đồ khối tổng quát hệ thống cảnh báo chệch làn đường
Nhóm chúng em sẽ xây dựng hệ thống cảnh báo chệch làn đường như sơ đồ khối trên. Đầu tiên, nhóm chúng em sẽ tiến hành tìm hiểu về xử lý ảnh, các thư viện thị giác máy tính và xây dựng phần mềm cho hệ thống cảnh báo chệch làn đường dựa trên ngôn ngữ lập trình python, sau đó sẽ nạp code cho bộ xử lí trung tâm là Jetson Nano Camera có vai trò thu dữ liệu đầu vào cho Jetson Nano Dựa vào những giải thuật đã được lập trình sẵn, Jetson Nano sẽ xử lí các thông tin được nhận từ camera và công tắc xi nhan (tương ứng với nút nhấn). Nếu xe bị chệch làn đường mà không có tín hiệu xi nhan thì Jetson Nano tiến hành xuất các tín hiệu cảnh báo bằng âm thanh qua loa (led màu vàng thứ nhất sáng), cảnh báo rung vô- lăng (led màu vàng thứ hai sáng), cảnh báo rung ghế tài xế (led màu vàng thứ ba sáng) và cảnh báo hình ảnh lên màn hình LCD Nếu nhấn công tắc xi-nhan khi chuyển làn thì đèn xi nhan sẽ hoạt động (led màu đỏ sáng) và không xuất tín hiệu cảnh báo trong quá trình bật xi nhan.
Do tình hình dịch covid 19 diễn biến căng thẳng, tuân thủ chỉ thị 16 của chính phủ nên nhóm chúng em tận dụng một số linh kiện có sẵn tại nhà để mô phỏng lại hệ thống như dùng nút nhấn thay cho công tắc xi nhan, led màu đỏ thay cho đèn xi nhan và led màu vàng thay cho còi và động cơ rung.
5.2.1 Xây dựng phần mềm cho hệ thống cảnh báo chệch làn đường
Sau khi tìm hiểu và nghiên cứu về hệ thống cảnh báo chệch làn đường, nhóm chúng em đã đưa ra sơ đồ khối thuật toán và 6 bước chính để thực thi thuật toán như sau:
Bước 1: Tiếp nhận khung ảnh từ file video hoặc từ thiết bị camera và trạng thái của công tắc xi – nhan (nút nhấn).
Bước 2: Xử lý ban đầu khung ảnh để tạo điều kiện cho việc áp dụng bộ lọc đường biên Có rất nhiều cách xử lý, mỗi cách áp dụng một hoặc nhiều biện pháp xử lý ảnh khác nhau như chuyển đổi không gian màu, khử nhiễu, …
Bước 3: Áp dụng bộ lọc lấy đường biên để phân tách những khu vực ảnh mà tại đó có sự thay đổi lớn về cường độ màu sắc, ánh sáng.
Bước 4: Dựa trên kết quả thu được từ bước 3 ta tiếp tục dùng các giải thuật phát hiện làn đường để nhận diện khu vực có làn đường trên ảnh.
Bước 5: Dùng thuật toán để tính toán tâm làn đường làn đường và tính độ lệch giữa tâm làn đường với tâm xe.
Bước 6: Nếu không bật công tắc xi – nhan và xe lệch khỏi miền cho phép thì sẽ xuất ra tín hiệu cảnh báo Nếu công tắc xi – nhan được bật thì đèn xi – nhan sẽ sáng và không xuất ra tín hiệu cảnh báo.
Hình 5.3 Sơ đồ khối thuật toán hệ thống cảnh báo chệch làn đường
Từ sơ đồ khối thuật toán trên, nhóm chúng em sẽ tách thành hai công việc: thứ nhất nhóm sẽ tham khảo các source code trên github để lựa chọn giải thuật nhận diện làn đường, thứ hai nhóm sẽ xây dựng giải thuật cảnh báo chệch làn đường.
5.2.1.1 Lựa chọn giải thuật phát hiện làn đường cho đồ án
Sau quá trình tìm hiểu các phương pháp nhận diện làn đường có sẵn trên cộng đồng github để phục vụ bài toán của hệ thống cảnh báo chệch làn đường Từ đó rút ra có hai phương pháp chính là nhận diện làn đường bằng xử lý ảnh và nhận diện làn đường có sử dụng deeplearning (sử dụng mạng nơ-ron CNN - Convolutional Neural Network).
Tuy nhiên, nhóm sẽ lựa chọn thuật toán sử dụng xử lý ảnh cho đồ án để phù hợp với cấu hình của Jetson Nano và thời gian thực hiện đồ án của nhóm.
Áp dụng giải thuật Hough Transform để nhận diện làn đường cơ bản
Hình 5.4 Sơ đồ khối giải thuật Hough Transform
Bước 1 Tiếp nhận hình ảnh Đầu tiên ta sẽ tiếp nhận hình ảnh từ video, camera Và tiến hành ghép trục tọa độ cho hình ảnh bằng thư viện Matplotlib Đây là bước quan trọng để xác định tọa độ của vùng quan tâmRegion of Interest.
Hình 5.5 Ghép trục cho hình ảnh
Bước 2 Áp dụng giải thuật canny edge detection để lọc đường biên
Một thuật toán nhiều giai đoạn phát hiện một loạt các cạnh trong hình ảnh được phát triển bởi John F Canny vào năm 1986, gồm các bước: Đầu tiên là chuyển đổi hình ảnh đầu vào thành ảnh xám Ta thực hiện chuyển đổi ảnh gốc có không gian màu RGB sang ảnh xám (grayscale image) để tạo điều kiện cho bộ lọc biên canny làm việc hiệu quả nhất Lý do là vì hàm canny dùng để lọc các đường biên sẽ làm việc trên sự biến đổi độ sáng Đồng thời, ảnh xám chỉ chứa thông tin về cường độ sáng, mỗi pixel của ảnh xám (có giá trị từ 0 đến 255) có thể có 256 cấp độ xám Giá trị của điểm ảnh bằng 0 đại diện cho điểm ảnh tối (đen), giá trị điểm ảnh lớn nhất đại diện cho điểm ảnh sáng (trắng).
Tiếp theo ta tiến hành giảm nhiễu Các cạnh trong hình ảnh là các vùng thay đổi về cường độ pixel Việc phát hiện cạnh chủ yếu dựa trên tính toán gradient, đó là lý do tại sao kết quả rất nhạy cảm với nhiễu hình ảnh Vì vậy, bước đầu tiên là áp dụng hiệu ứng mờ Gaussian trên hình ảnh để làm mịn các cạnh thô.
Cuối cùng làphát hiện cạnh –edge detection Hàm OpenCV để phát hiện cạnh có 3 đối số chính: hình ảnh đầu vào, ngưỡng trên và ngưỡng dưới gradient cường độ cạnh.Các giá trị ngưỡng quyết định những cạnh nào sẽ được giữ lại và những cạnh nào sẽ bị loại bỏ Các cạnh có gradient cường độ lớn hơn ngưỡng trên được giữ lại trong khi các cạnh thấp hơn ngưỡng dưới bị từ chối Các cạnh có giá trị ở giữa, được quyết định tùy thuộc vào kết nối của chúng; nếu được liên kết với một pixel được xác nhận cạnh thì chúng được coi là một phần của cạnh, nếu không thì sẽ bị loại bỏ Giá trị ngưỡng được xác định theo kinh nghiệm (Canny đề xuất tỷ lệ 2:1 hoặc 3:1 giữa giá trị tối đa và giá trị nhỏ nhất) Nếu ngưỡng trên quá cao, sẽ không tìm thấy cạnh nào trong khi nếu quá thấp thì số lượng cạnh được phát hiện sẽ rất nhiều.
Hình 5.6 Hình ảnh sau khi áp dụng giải thuật canny edge detection
Bước 3 Xác định vùng quan tâm
Vùng quan tâm (ROI) là vùng ảnh ta sẽ áp dụng các xử lý và biến đổi trên đó và bỏ qua các vùng còn lại Đôi khi không phải lúc nào ta cũng có thể xử lý trên toàn ảnh Thử tưởng tượng với một ảnh có kích thước 1024x1024 thì ta đã có hơn một triệu điểm ảnh phải xử lý.