Các tính năng trên xe mơ hình

Một phần của tài liệu Hệ thống hỗ trợ giám sát an toàn trên ô tô (Trang 55 - 64)

CHƯƠNG 4 : QUY TRÌNH THIẾT KẾ

4.4 Các tính năng trên xe mơ hình

 Hệ thống giữ làn đường tự động:

- Hệ thống giữ làn đường có hai thành phần: nhận biết (phát hiện làn đường) và lập kế hoạch đường đi (đánh lái). Cơng việc của tính năng phát hiện làn đường là quay video về con đường thành tọa độ của các vạch làn đường được phát hiện. Nhưng trước khi phát hiện được làn đường trong video ta cần phải phát hiện được làn đường trong 1 hình ảnh. Khi đó, việc phát hiện làn đường trong video chỉ đơn giản là việc lặp đi lặp lại các bước tương tự cho từng khung hình trong video.

43

- Xác định màu của làn đường: nhóm sử dụng băng keo màu trắng để tạo thành 1 làn đường với nét liền đậm màu trắng.

Hình 4.8: Mơ hình đường đi

- Trên đây là khung video được quay từ camera V2.1 gắn trên xe. Đầu tiên cần làm là cô lập các vùng màu trắng trên ảnh. Để thực hiện việc này, trước tiên ta cần chuyển không gian màu được sử dụng bởi hình ảnh là RGB (red, green, blue) thành không gian màu HSV (Hue, Saturation, Value). Mục đích chính cho việc thực hiện chuyển đổi này là trong hình ảnh RGB các phần khác nhau của màu lane đường (băng keo màu trắng) có thể được chiếu sáng bằng các màu sáng khác nhau dẫn đến xuất hiện dưới dạng màu trắng đậm hơn hay màu trắng nhạt hơn. Do đó, trong khơng gian màu HSV, thành phần Hue sẽ hiển thị toàn bộ băng màu trắng thành 1 màu bất kể độ bóng của màu đó.

Hình 4.9: Hình ảnh trong khơng gian màu HSV

- Do OpenCV đọc hình ảnh vào khơng gian màu BGR (Xanh lam, xanh lá cây, đỏ) theo mặc định thay vì khơng gian màu RGB (đỏ, xanh lá cây, xanh lam) được sử dụng phổ biến hơn. Về cơ bản, chúng là không gian màu tương đương, chỉ là thứ tự của các màu được hốn đổi.

44

- Sau khi hình ảnh ở trong HSV, chúng ta có thể lọc tất cả các màu trắng khỏi hình ảnh. Điều này là bằng cách chỉ định một dải màu trắng.

Hình 4.10: Xác định đường Lane Phát hiện các đường viền của làn đường: Phát hiện các đường viền của làn đường:

- Tiếp theo, chúng ta cần phát hiện các cạnh trong khối dải màu trắng để chúng ta có thể có một vài đường phân biệt đại diện cho các đường làn đường màu trắng. - Thực hiện lệnh Canny, đây là 1 lệnh chính xác để phát hiện các cạnh trong một hình ảnh.

Hình 4.11: Xác định đường viền ngồi của Lane Cô lập khu vực quan tâm:

- Từ hình ảnh trên, chúng ta thấy rằng chúng ta đã phát hiện ra khá nhiều khu vực màu trắng KHÔNG phải là vạch phân làn đường của chúng ta. Quan sát kỹ hơn sẽ thấy rằng tất cả chúng đều nằm ở nửa trên của màn hình. Khi thực hiện điều hướng làn đường, ta chỉ quan tâm đến việc phát hiện các vạch kẻ làn đường gần xe hơn,

45

nơi cuối màn hình. Vì vậy, chúng ta sẽ đơn giản là cắt bỏ nửa trên. Hai vạch phân làn được đánh dấu rõ ràng như được thấy trên hình ảnh bên phải.

Hình 4.12: Vạch phân làn đường Phát hiện phân đoạn dòng: Phát hiện phân đoạn dịng:

- Trong hình ảnh các cạnh được cắt ở trên, đối với con người chúng ta, rõ ràng là chúng ta đã tìm thấy bốn đường biểu thị hai đường làn đường. Tuy nhiên, đối với máy tính, chúng chỉ là một loạt các pixel màu trắng trên nền đen. Chúng ta cần trích xuất tọa độ của các đường làn này từ các pixel màu trắng này. OpenCV có chứa một chức năng được gọi là Hough Transform, thực hiện chính xác điều này. Hough Transform là một kỹ thuật được sử dụng trong xử lý hình ảnh để trích xuất các đối tượng địa lý như đường thẳng, hình trịn và hình elip. Chúng ta sẽ sử dụng nó để tìm các đường thẳng từ một loạt các pixel dường như tạo thành một đường thẳng. Về cơ bản, hàm HoughLinesP khớp nhiều dòng qua tất cả các pixel màu trắng và trả về tập hợp các dịng có khả năng xảy ra cao nhất, tn theo các giới hạn ngưỡng tối thiểu nhất định.

46

- Nếu chúng ta in ra đoạn thẳng được phát hiện, nó sẽ hiển thị các điểm cuối (x1, y1) theo sau là (x2, y2) và độ dài của mỗi đoạn thẳng.

Kết hợp các đoạn đường thành hai làn đường:

- Bây giờ chúng ta có nhiều đoạn thẳng nhỏ với tọa độ điểm cuối của chúng (x1, y1) và (x2, y2), làm thế nào để chúng ta kết hợp chúng thành hai đường mà chúng ta thực sự quan tâm, đó là đường làn trái và phải. Một cách là phân loại các đoạn thẳng này theo độ dốc của chúng. Từ hình trên, chúng ta có thể thấy rằng tất cả các đoạn thẳng thuộc làn đường bên trái phải dốc lên và ở bên trái màn hình, trong khi tất cả các đoạn thẳng thuộc làn đường bên phải dốc xuống và ở bên phải của màn hình. Khi các đoạn đường được phân loại thành hai nhóm, chúng ta chỉ cần lấy trung bình cộng của độ dốc và điểm giao nhau của đoạn thẳng để có được độ dốc và điểm giao nhau của các đường làn bên trái và bên phải.

- Đây là hình ảnh cuối cùng với các đường làn được phát hiện được vẽ bằng màu xanh lá cây.

Hình 4.14: Đường phân làn được phát hiện Lập kế hoạch chuyển động: Lập kế hoạch chuyển động:

- Bây giờ chúng ta đã có tọa độ của các vạch làn đường, chúng ta cần điều khiển xe sao cho nó nằm trong vạch kẻ làn đường, tốt hơn nữa là chúng ta nên cố gắng giữ nó ở giữa làn đường. Về cơ bản, chúng ta cần tính tốn góc lái của ơ tơ, dựa trên các vạch làn được phát hiện.

47

Hai đường làn được phát hiện:

- Chúng ta có thể tính tốn hướng đi bằng cách lấy trung bình các điểm cuối xa của

cả hai đường làn. Dòng màu xanh hiển thị bên dưới là đường căn chỉnh. Lưu ý rằng, điểm dưới của đường căn chỉnh màu xanh ln nằm ở giữa cuối màn hình, đó là bởi vì chúng ta đặt camera hành trình được lắp ở giữa xe và hướng thẳng về phía trước.

Hình 4.15: Đường căn chỉnh màu xanh ở giữa Góc lái: Góc lái:

- Để xe có thể rẽ hướng ta cần tính tốn được góc lái cho xe. Ta đặt góc lái cho xe

là 900 là hướng thẳng, 450–890 là rẽ trái và 910–1350 là rẽ phải.

 Nhận biết biển báo giao thông vào hầm

- Trước hết ta cần cài đặt phần mềm Cascade Trainer GUI trên máy tính, phần mềm

này có mục đích train cho Raspberry có thể nhận biết được biển báo, để sau đó khi Camera truyền hình ảnh vào Raspberry có thể so sánh từ đó thực hiện lệnh ban đầu. - Sau đó ta sẽ dùng chính camera V2.1 gắn trên xe để chụp ảnh biển báo như hình bên dưới, chúng ta cần chụp nhiều góc độ khác nhau để khi vào thực tế xe chạy ổn định và nhận biết biển báo chính xác nhất.

48

Hình 4.16: Các góc chụp của camera truyền về

- Chúng ta nhập 1 tệp tất cả hình ảnh đã chụp vào phần mềm Trainer GUI. - Thực hiện zoom hình và cắt khoanh vùng xuất hiện biển báo bằng chuột.

- Thực hiện chạy phần mềm kết quả trả về là một tệp mới trong đó biển báo vào hầm sau khi được phát hiện sẽ nằm trong ơ màu đỏ.

Hình 4.17: Vùng nhận diện biển báo của camera

- Cuối cùng kết quả nhận được là một thuật tốn sau q trình nhập hình ảnh, xác định biển báo trong khơng gian. Chúng ta sẽ nhập file thuật tốn này vào Raspberry để nhận diện hình ảnh từ camera gắn trên xe.

 Kiểm sốt hành trình chủ động và vật cản phía trước

49

- Khi được cấp nguồn động cơ bắt đầu hoạt động quay với vận tốc 70 vịng/phút.

Hình 4.18: Xe di chuyển bình thường khơng có vật cản

Khi xe gặp vật cản ở phía trước:

50

Trường hợp 1: Vật cản ở khoảng cách nhỏ hơn 40cm

+ Sóng siêu âm được phát ra từ chân Trig của cảm biến HC-SR04, chân Echo nhận được tín hiệu phản xạ ngay lập tức, thông tin được truyền đến Arduino Uno đến chân số 10 digital thông qua dây dẫn của arduino. Sau khi thông tin được truyền vào mạch Arduino thì tại đây nó sẽ được con chip U7 xử lý thông tin dựa trên mã Code đã được cài đặt trước đó, sau khi xử lý thơng tin thì nó sẽ phát tín hiệu cảnh báo đèn LED bắt đầu sáng. Đồng thời mạch điều khiển động cơ điều khiển motor quay với vận tốc 45 vòng/phút.

Trường hợp 2: Vật cản ở khoảng cách nhỏ hơn 30cm

+ Lúc này thông tin tiếp tục được xử lí, sau đó phát tín hiệu động thời loa Buzzer phát âm thanh và LED tiếp tục sáng. Động cơ quay với vận tốc chậm hơn 40 vịng/phút.

Hình 4.20: Khi gặp vật cản ở khoảng cách nguy hiểm Trường hợp 3: Vật cản ở khoảng cách nhỏ hơn hoặc bằng 20cm Trường hợp 3: Vật cản ở khoảng cách nhỏ hơn hoặc bằng 20cm

+ Thơng tin được xử lí, động cơ dừng hẳn để tránh xảy ra va chạm với vật cản phía trước.

51

Một phần của tài liệu Hệ thống hỗ trợ giám sát an toàn trên ô tô (Trang 55 - 64)

Tải bản đầy đủ (PDF)

(94 trang)