3.2.2.1. Bộ điều khiển trung tâm
Hình 3. 5 Bộ xử lý trung tâm NVIDIA Jetson TX2
Thông số kỹ thuật AI Performance GPU CPU Memory Storage Power PCIE CSI Camera Video encoder
Video decoder
Display Networking Mechanical
Công dụng: Là bộ xử lý trung tâm mạnh mẽ tích hợp để chạy các ứng dụng học sâu, trí tuệ nhân tạo và đảm nhiệm việc thu nhận dữ liệu, gửi xung điều khiển.
3.2.2.2. Cảm biến khoảng cách
Thông số kỹ thuật Điện Áp Dòng Khoảng Cách Nhiệt Độ Đường Kính Chiều Dài Chiều Dài Dây
Sơ đồ chân:
+ Dây Mầu Nâu: 5VDC.
+ Dây Mầu Xanh Dương : GND
+ Dây Mầu Đen: Tín hiệu NPN thường mở, vì vậy cần lắp thêm điện trở kéo lên nguồn khoảng R=10k (Tín hiệu ra bằng điện áp cấp nuôi cho cảm biến).
Công dụng: Đặt trước đầu xe, gửi tín hiệu True-False ngưỡng về khoảng cách về bộ xử lý. Là một thiết bị ngắt mềm an toàn, dừng xe mỗi khi xe sắp va chạm hoặc va chạm vào vật.
3.2.2.3. Cảm biến gia tốc 9 trục MPU9250
Thông số kỹ thuật
Điện áp sử dụng Điện áp giao tiếp Chuẩn giao tiếp Kích thước
Three 16-bit analog-to-digital converters (ADCs) for digitizing the gyroscope outputs
Three 16-bit ADCs for digitizing the accelerometer outputs Three 16-bit ADCs for digitizing the magnetometer outputs
Gyroscope full-scale range of ±250, ±500, ±1000, and ±2000°/sec (dps) Accelerometer full-scale range of ±2g, ±4g, ±8g, and ±16g
Magnetometer full-scale range of ±4800μT
Công dụng: các dữ liệu được gửi đến bộ xử lý trung tâm, để đo đạc và tính toán các thông số như góc nghiêng, hướng.
3.2.2.4. Pin LiPo
Thông số kỹ thuật
Thương hiệu Loại pin
Số lượng cell pin Dung lượng định mức Điện áp định mức Tốc độ xả
Kích thước Trọng lượng
Công dụng: nguồn cấp cho cả hệ thống với dòng xả cao, dòng điện xả của pin tối đa có thể lên đến 260A.
3.2.3.5. Camera astra (Kinect camera)
Hình 3. 9 Camera astra
Thông số kỹ thuật
Phạm vi FOV
RGB Image Res. Depth Image Res. Kích thước
Nguồn cấp
Công suất tiêu thụ
Hệ điều hành tương thích SDK
Công dụng: thu thập dữ liệu ảnh RGB và ảnh Depth cho bộ xử lý, để chạy các ứng dụng Computer vision và tính khoảng cách tới vật.
3.2.3 Tổng quang về mạch adapter CDS TX2
Hình 3. 10 Mạch chuyển đổi CDD
Adapter CDS có nhiệm vụ là cầu nối giữa bộ điều khiển trung tâm với các thiết bị ngoại vi
Chức năng:
- Điều khiển xung động cơ cho ESC của xe Traxxas Desert
- Điều khiển xung servo
- Header cho GPIO của mạch
- Header cho LCD
- Header cho MPU9250
+Sơ đồ kết nối mạch adapter với các thiết bị ngoại vi:
Hình 3. 11 Sơ đồ kết nối mạch chuyển đổi với thiết bị ngoại vi
Một số hình ảnh của phần cứng đặt trên xe:
34
CHƯƠNG 4: THIẾT KẾ PHẦN MỀM
Sơ đồ tổng quan của phương pháp đề xuất được mô tả như trong hình 4.1. Đầu vào sẽ được thu thập từ camera mà dữ liệu là ảnh màu RGB và ảnh depth. Dữ liệu này sẽ đi qua hai khối xử lý chính: (1) Xử lý trên đường (On-road processing) và (2) xử lý bên ngoài đường (Off-road processing). Chi tiết các khối xử lý được mô tả ở phần tiếp theo.
35
4.1. XỬ LÝ ON-ROAD
Hình 4. 2 Tổng quan qui trình xử lý On-road
Tổng quan quá trình xử lý được biểu diễn ở hình 4.2, nó bao gồm hai tác vụ chạy song song với nhau: (1) xử lý ảnh RGB (RGB processing) và xử lý ảnh Depth (Depth processing). Trong bước xử lý RGB, nhóm nhận diện làn đường từ ảnh RGB bằng cách kết hợp cả phương pháp xử lý ảnh truyền thống và học sâu. Dựa vào làn đường vừa phát hiện được, nhóm sau đó sẽ sử dụng tiếp thông tin chiều sâu trong bước xử lý ảnh Depth để lọc bỏ ‘nền’ - những thông tin không cần thiết ở phía xa - và đồng thời phát hiện vật cản có ở trên đường. Mục tiêu của nhóm là phát hiện cả làn đường và chướng ngại vật để xác định vùng có thể lái được. Chi tiết của từng phần sẽ được trình bày trong các mục tiếp theo.
4.1.1. Xử lý ảnh RGB
Trong hệ thống được đề xuất, để tăng hiệu suất và giảm thời gian tính toán, nhóm kết hợp cả phương pháp học sâu và xử lý ảnh truyền thống thành một hệ thống thống nhất.
36
4.1.1.1. Phân đoạn làn đường dựa trên học sâu (deep learning-based lane segmentation)
Đầu tiên, nhóm đề xuất sử dụng kiến trúc mạng LiteSeg [29], một mạng nhẹ phù hợp để chạy trong các tình huống thời gian thực, và để trích xuất phân đoạn làn đường thô. Đầu vào của mạng là hình ảnh được chụp lại từ camera và đầu ra là các phân đoạn làn đường. Bên cạnh đó để giảm thiểu số lượng trọng số và kích thước của mô hình nhằm tăng tốc độ tính toán, mạng MobilenetV2 [24] với cấu trúc depth-wise và residual được lựa chọn như là một backbone.
Hình 4. 1 Kiến trúc mạng đề xuất cho xử lý On-road
Để giải quyết thách thức về thông tin đa tỷ lệ (multi-scale information), mạng đề xuất đã được nhúng thêm module Atrous Spatial Pyramid Pooling (ASPP) giống với phương pháp [30] với nhiều tỷ lệ dilation khác nhau. Bằng cách kết hợp và tái sử dụng các đặc trưng low- level và high-level bằng các residual connection, việc phân đoạn các ảnh với độ phân giải cao tốt hơn. Đồng thời để tăng khả năng học đa tỷ lệ với module được thêm
37
vào, nhóm đã train mạng với nhiều kích thước ảnh đầu vào khác nhau. Kiến trúc mạng đề xuất được thể hiện ở hình 4.3.
4.1.1.2. Phát hiện làn đường dựa vào phép biến đổi Hough (Hough transform-based lane detection)
Hình 4. 2 Phương pháp phát hiện làn đường
Tuy nhiên, mạng LiteSeg với backbone là MobileNetV2 không đủ mạnh để suy luận đúng hết các thành phần làn đường trong ảnh. Kết quả đạt được còn rất nhiều nhiễu và những đoạn bị đứt, nên để giải quyết vấn đề này nhóm đề xuất phương pháp phát hiện làn đường dựa vào phép biến đổi Hough. Với Hough transform, miền ảnh sẽ được chuyển sang miền Hough và mỗi thành phần làn đường được định nghĩa như một điểm Hough như ở hình 4.4.
38
Dựa vào khoảng cách giữa các điểm Hough ta có thể xác định được các cụm trong miền Hough, mỗi cụm đại diện cho các phân đoạn thuộc cùng một làn đường, như ở hình 4.5 a, từ đó ta có thể tìm trọng tâm của từng cụm và suy ngược ra làn đường tương ứng. Tuy nhiên, nếu ta có hàng nghìn điểm Hough, thì việc tính toán hết một khung hình rất mất thời gian. Chính vì vậy, nhóm đề xuất một phương pháp phân cụm nhanh hơn như ở hình 4.5 (b). Mỗi điểm (rho,theta) trên miền Hough sẽ được mở rộng ra bằng cách vẽ hình tròn lên ảnh nhị phân với tâm là (rho,theta) và bán kính được cho là một giá trị cố định. Bằng cách tìm đường viền (contour) của những thành phần đã được kết nối lại trong ảnh, các cụm sẽ được tự động phân ra một cách rõ ràng. Sau khi phân cụm, nhưng cụm quá nhỏ sẽ được coi là thành phần nhiễu và được lọc bỏ đi. Những cụm còn lại được định nghĩa là làn đường và sẽ được biến đổi ngược lại sang miền ảnh nhằm phục vụ cho việc hoàn thiện các làn đường cong (curve fitting).
(a) (b)
Hình 4. 3 Xác định cụm dựa trên miền Hough 4.1.1.3. Xử lý đường cong (Curve fitting)
Để xử lý các làn đường cong, nhóm lập mô hình cho làn đường bằng cách sử dụng phương trình bậc 2 như phương trình (9). Những phân đoạn làn đường thu được từ bước trước đó được sử dụng để tìm thông số cho các mô hình làn đường sử dụng phương pháp
[31]. Từ hai làn đường ngoài cùng thu được, vùng đường cần quan tâm (ROI) có thể
được
39
= 2+ + ,
Với (x, y) là tọa độ điểm ảnh của lane cần tìm; a, b, c là hệ số thu được từ Polynomial curve fitting.
4.1.2. Xử lý ảnh depth
4.1.2.1. Lọc nền dựa vào ngưỡng
Hình 4. 4 Lọc nền
Để giảm nhiễu từ nền phức tạp, nhóm tận dụng ảnh Depth để lọc bỏ đi nền. Đối với hệ thống ADAS, nhóm chỉ xem xét các đối tượng ở một khoảng cách cố định phía trước xe. Đối với những đối tượng quá xa, nhóm sẽ coi chúng là nền mà loại bỏ chúng. Như đã hiển thị ở hình 4.6, hình ảnh chiều sâu trước tiên được chuyển đổi lại thành ảnh xám 8 bit, sau đó thông tin quá xa camera được lọc bằng một ngưỡng cố định. Các thông tin bên ngoài đường (những thông tin không cần thiết) tiếp tục được lọc bằng thông tin ROI được xác định ở tác vụ RGB ở trên, như trong hình 4.7.
4.1.2.2. Phát hiện vật cản và phân đoạn đường có thể đi được
Dựa vào kết quả thu được ở bước lọc nền, vật cản trên đường có thể được phát hiện để từ đó tìm đoạn đường có thể đi được. Như trong hình 4.7, đầu tiên nhóm chia vùng ROI ra thành hai phân đoạn, đại diện cho hai làn đường (phụ thuộc vào số làn đường). Sau đó hai ô cửa sổ sẽ được tạo ra và trượt dọc theo các phân đoạn ấy để nhận định liệu có chướng
40
ngại vật trên đường tương ứng. Các vật cản sẽ được xác định nếu tổng số điểm ảnh khác không trong ô cửa sổ vượt quá ngưỡng cho trước.
Hình 4. 5 Sơ đồ chi tiết thuật toán phát hiện vật cản
Khi xác định được chướng ngại, các bounding box và vị trí của nó được trích xuất ra. Bằng việc trừ đi khu vực có chướng ngại khỏi đường, ta thu được khu vực có thể lái xe.
4.2. XỬ LÝ OFF-ROAD
4.2.1. Tổng quan phương pháp
41
Chi tiết phần xử lý off-road được thể hiện trong hình 4.8. Nó bao gồm hai nhiệm vụ chính: (1) xác định vị trí của biển báo và (2) phân loại chúng. Theo như bảng 1, SSD là phương pháp rất ấn tượng khi giải quyết hầu hết các vấn đề ở công việc (1). Do đó, trong đề tài này, nhóm cải tiến bằng việc sử dụng một kiến trúc giống như SSD (được thể hiện ở hình 4.9 để phát hiện vị trí của biển báo. Để giảm số lượng weight, nhóm sử dụng kiến trúc mobilenet_v1 [24] làm mạng backbone. Bên cạnh đó, để tăng khả năng phát hiện vật thể nhỏ và làm nhẹ mô hình, nhóm thêm một lớp RFB [25] ở giữa và bỏ một số lớp ngoài cùng trong mạng backbone. Sau khi cải tiến dựa trên phương pháp ở [32], mạng được đề xuất bây giờ giảm xuống chỉ còn 1.14MB so với SSD truyền thống là 20MB.
Hình 4. 7 Kiến trúc thuật toán phát hiện vị trí biển báo
Sau khi phát hiện vị trí, khung ảnh chứa biển báo sẽ được tách ra và đưa vào bước nhận diện biển báo. Như đã thể hiện ở bảng 1.1, SVM, một bộ phân loại rất nhẹ, có thể giải quyết được công việc (2) và đáp ứng được yêu cầu về thời gian thực. Do đó, nhóm sử dụng SVM để phân loại các biển báo. Tuy nhiên, SVM chỉ là một bộ phân loại đơn giản, nó chỉ
42
làm việc tốt khi các đặc trưng được đưa vào đã thể hiện tốt được đặc tính dữ liệu và phân cụm rõ ràng. Trong đề tài này, nhóm dùng HOG [33] để trích xuất đặc trưng, để đảm bảo đặc trưng được trích xuất này thoả mãn yêu cầu đặt ra, nhóm sử dụng t-SNE [34] để chiếu đặc trưng đó lên không gian hai chiều như hình 4.10. Theo như trong hình, các phân lớp, được thể hiện bằng các màu khác nhau, đã được phân cụm rất rõ ràng. Vì thế, không vấn đề gì khi sử dụng bộ phân loại đơn giản như SVM cho việc xác định loại biển báo.
Hình 4. 8 Đặc trưng HOG được biểu diễn bằng t-SNE
4.2.2. Hàm mất mát (loss function)
Cho quá trình huấn luyện mạng ở việc xác định vị trí biển báo, nhóm sử dụng hàm mất mát của phương pháp SSD [8]. Gọi = {1,0} là chỉ số để khớp box mặc định (d) thứ
i với box thực tế (g) thứ j của phân lớp k; l là box dự đoán; c là biểu diễn của “class confidence” và N là số boxes mặc định đã kết nối. Hàm mất mát được cho bởi công thức (10).
43
( , , , ) =
Giả thiết rằng một bounding box được biểu diễn bởi 4 tham số: vị trí trung tâm (cx, cy), độ rộng (w) và độ cao (h). Hàm mất mát của vị trí (the localization loss) Lloc được thể hiện ở phương trình (11). ( , , ) = ∑ ∈ ∈{ , , ,ℎ} ∑ ℎ 1( − ), (11) Trong đó: =( =( = ( ), (14) ℎ ℎ= ( ℎ).
Hàm tin cậy (the confidence loss) Lconf
( , ) = − ∑ ∈
Trong đó,
(15) được cho trong phương trình (16).
( ) −
=
∑ exp( )
.
Đối với công việc ở (2), nhóm sử dụng hàm mất mát của SVM tuyến tính và thêm thành phần L2 để giảm thiểu việc overfitting như được thể hiện ở phương trình 8. Trong đó, đầu ra của hàm là , C là hằng số cố định. J(θ) = ∑[ ( )( ( ( ))) 1 =0 +(1 − ( ))( ( ( )))] + 0
Trong đó, là trọng số của model; x và y là đặc trưng HOG ngõ vào và nhãn tưởng ứng; C được lựa chọn là 0.005 để cân bằng các thành phần trong hàm mất mát.
44
4.3. ĐIỀU KHIỂN
Sau tất cả kết quả đạt được ở trên, nhóm cần phải triển khai một thuật toán để gửi đi tín hiệu điều khiển cho xe. Để tránh xung đột giữa các tác vụ, nhóm tổng kết lại về độ ưu tiên của từng phần. Các phần được nói đến ở đây là tín hiệu điều khiển từ giải thuật nhận diện làn đường, phát hiện vật thể, khu vực có thể lái xe được và phát hiện loại biển báo. Nhóm sẽ trình bày chi tiết hơn ở các phần bên dưới.
Đầu tiên, để xuất tín hiệu góc lái, hệ thống cần xác định ra điểm thực tế của xe mô hình và điểm cần bám. Điểm cần bám ở đây được nhóm chọn là điểm chính giữa của làn đường. Do đó, trong giải thuật phát hiện làn đường, kết quả nhận được từ tác vụ là các phương trình bậc hai trên miền tọa độ ảnh sẽ được quy về một điểm C(x,y) với x,y được tính với công thức bên dưới:
Với A, B là hai giao điểm của đường thẳng (d1) cố định và hai phương trình bậc hai được chọn ra được thể hiện ở hình 4.11, nếu kết quả có trên hai phương trình bậc hai (2 làn đường) thì chúng tôi sẽ ưu tiên hai phương trình bên phải cùng tọa độ.
Kết hợp PID: Sau khi có được điểm cần bám C so với vị trí thực tế của xe là điểm C’ ( ′ = với M
bằng một nửa kích thước chiều ngang khung hình) thì sai số sẽ được tính với công thức (20). Từ sai số đó xe sẽ được trích xuất góc lái dựa vào kỹ thuật PID theo công thức (21), thuật toán được mô tả như trong hình 4.11.
= −
45
Với hệ số , , được chọn lần lượt là 0.45, 0.02, 0.05; ∆ được xét trong khoảng thời gian 3 khung hình (1 khung hình hiện tại và 2 khung hình trước đó). Nhóm sử dụng để tránh sai số cộng dồn và các số trên của hệ số , , được hiệu chỉnh sau nhiều lần thử nghiệm.
Hình 4. 9 Áp dụng kỹ thuật PID chạy bám làn đường.
46
Khi gặp chướng ngại vật trên đường hệ thống sẽ xét độ rộng M của khu vực có thể lái xe. Ở khung hình thứ t, khi M đủ rộng để xe chạy qua, hệ thống sẽ không bám C(x,y) cũ nữa mà thay vào đó sẽ bám điểm C1(x+N,y) với N là khoảng cách an toàn giữa xe với chướng ngại vật. Đến khi xe vượt ngang với chướng ngại ở khung hình thứ t+n , điểm C1 là điểm chính giữa của khu vực có thể lái xe, được thể hiện ở hình 4.12.
47
Cuối cùng hệ thống điều khiển được tổng kết lại với lưu đồ giải thuật ở hình 4.13, độ ưu tiên của các tín hiệu điều khiển gửi đi trong hệ thống lần lượt là khu vực có thể di chuyển, có biển báo trên khung hình, né chướng ngại vật và bám làn đường.
48
CHƯƠNG 5: KẾT QUẢ THỰC HIỆN, SO SÁNH VÀ ĐÁNH GIÁ