Lưu đồ chạy theo Lane:
48 Hình 3.27: Lưu đồ nhận diện và chạy theo lane (P2)
Khi đã có model đã được huấn luyện ở phần trước,ta sẽ dùng nó để nhận diện và điều khiển.Đầu tiên phải khởi tạo các thư viện cần thiết.Sau đó đọc model đã được huấn luyện vào chương trình.
Đọc ảnh đầu vào và tiến hành xử lý để phù hợp với model đã được huấn luyện.Đưa ảnh vào nhận diện,theo lưu đồ thì có 3 class ứng với thứ tự làn đường và góc quay.Nếu nhận diện class bằng 0 tương ứng với xe đi thẳng ,class bằng 1 thì xe sẽ rẻ phải tương úng với góc quay phải 60 độ,khi class bằng 2 thì tương ứng với góc quay trái 60 độ để xe có thể đi thẳng trở lại.Một số hình ảnh sau khi nhận diện bằng model huấn luyện:
49 Hình 3.28: Thẳng 1
50 3.5.5.2 Nhận diện biển báo Stop
Lưu đồ nhận diện biển báo:
51 Hình 3.31: Lưu đồ nhận diện biển báo Stop (P2)
Việc đầu tiên chúng ta cần phải khởi tạo các thư viện của Opencv để hỗ trợ cho việc thu thập dữ liệu.Tương tự phần trên sau khi lấy được ảnh đầu vào ta tiến hành chuẩn hóa theo lưu đồ giải thuật trên.
Đọc ảnh đầu vào và tiến hành xử lý giống với phần thu thập dữ liệu để phù hợp với model nhiện diện biển báo Stop đã được huấn luyện.Đưa ảnh vào nhận diện, khi nhận diện được biển báo Stop thì thuật toán sẽ vẽ một hình chữ nhật bao xung quanh biển báo để thông báo là đã xác định được vât.Sau đó diện tích của biển báo sẽ được tính toán theo đơn
52
vị là pixel,khi diện tích biển báo lớn hơn giá trị cho phép thì tính hiệu sẽ được truyền xuống để dừng xe,còn ngược lại khi diện tích biển báo nhỏ hơn chứng tỏ xe chưa đến vị trí cần dừng lại thì xe vẫn xe đi thẳng.
53 3.5.6 Giao diện lập trình
3.5.6.1 Giao diện lập trình xử lý ảnh lane và biển báo
Để có thể lập trình cũng như xây dựng hệ thống xử lý ảnh nhóm em sử dụng ngôn ngữ Python và viết trên nền Visual Studio:
Hình 3.33: Giao diện Visual Studio
54
Để điều khiển động cơ và hướng di chuyển cho xe,nhóm em sử dụng phần mềm Arduino IDE để có thể lập trình cũng như nạp code xuống bo mạch Arduino Uno R3.Một chương trình được viết bởi Arduino IDE được gọi là sketch, sketch được lưu dưới dạng .ino.
Hình 3.35: Giao diện lập trình Arduino
Giao diện Arduino IDE gồm 3 vùng: vùng lệnh, vùng lập trình và vùng thông báo. - Vùng lệnh: Bao gồm các nút lệnh menu File,Edit,Sketch,Tools,Help.
- Vùng lập trình: Vùng này chứ code lập trình
- Vùng thông báo: Những thông báo thì IDE sẽ được thông báo tại đây. Các thông báo như chương trình có lỗi hay không, liệt kê các lỗi, quá trình nạp,…Góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng.
55 3.6 HƯỚNG DẪN THAO TÁC
3.6.1 Thao tác đối với Jetson Nano 3.6.1.1 Remote Desktop 3.6.1.1 Remote Desktop
Mục đích của việc remote desktop là giúp chúng ta có thể quan sát được quá trình xử lý hình ảnh,hình ảnh nhận vào từ camera,đồng thời có thể sửa lỗi cũng như điều chỉnh code từ xa thông qua laptop mà không cần đến tận xe. Nhằm tiết kiệm thời gian cũng như thuận tiện cho quá trình sửa chữa.Để remote desktop nhóm em sử dụng phầm mềm VNC,các bước được tiến hành như sau:
- Bước 1: Cài đặt phần mềm VNC Viewer vào laptop.Để tải phần mềm thì vào đường dẫn https://www.realvnc.com/en/connect/download/viewer/,giao diện sau khi cài đặt thành công phần mềm.
56
- Bước 2: Tìm địa chỉ IP của Jetson Nano
Hình 3.37: Cú pháp tìm IP của Jetson Nano
57
- Bước 3: Chạy tập tin VNC trên Jetson Nano Để tải tập tin về Jetson Nano ta vào đường dẫn:
https://github.com/jetsonworld/downloadManuals/blob/master/00_How_To_Start_VNC.t xt
Tiến hành tải tập tin có tên là:00_How_To_Start_VNC.txt Tiến hành chạy trên Jetson Nano
Hình 3.39:Chạy VNC trên Jetson Nano
58
- Bước 4: Nhập IP của Jetson Nano vào VNC trên laptop
Hình 3.41: Nhập IP của Jetson vào VNC
- Bước 6: Chấp nhận trên Jetson Nano để liên kết với laptop bằng cách nhấn Accept
59
Liên kết thành công VNC giữ laptop và Jetson Nano.
Hình 3.43: Liên kết thành công Jetson Nano và laptop
Sau khi liên kết thành công Jetson Nano và laptop thì ta có thể điều khiển,lập trình,sử chửa hay thao các với Jetson từ xa.Nhưng VNC chỉ có thể sử dụng để liên kết hai thiết bị khi hai thiết bị cùng sử dụng chung một mạng wifi,nên đó cũng là nhược điểm của phần mềm này.Một nhược điểm khác là khi truyền dữ liệu từ Jetson sang laptop bằng VNC thì sẽ có độ trễ đối với tín hiệu,nhưng độ trễ này vẫn nằm trong khoảng có thể chấp nhận được,thời gian trể là tâm 1 đến 2s.
60 Chương 4
THỰC NGHIỆM VÀ ĐÁNH GIÁ 4.1 KẾT QUẢ
4.1.1 Kết quả thi công phần cứng
Sau 15 tuần thiết kế và thi công,nhóm đã hoàn thành mô hình xe tự hành.Mô hình xử lý được 10 frame/s đối với chương trình nhận diện lane, 4 frame/s đối với chương trình nhận diện biển báo.Nên tốc độ xe khá chậm so với dự kiến.
Hình 4.1: Mô hình xe tự hành
Hình 4.2: Mô hình xe tự hành
61 Hình 4.3: Mô hình xe tự hành
Những hình ảnh trên là mô hình xe tự hành sau khi hoàn thành của nhóm.Về mặt phần khung xe nhóm em đã tận dụng khung xe ô tô điện vì kích thước phù hợp,đồng thời tiết kiệm được thời gian để có thể tập trung vào xử lý phần mềm.Nhóm đã hoàn thành mô hình bao gồm: thiết kế và chế tạo lại hệ thống lái của xe sử dụng động cơ bước để đánh lái nhằm phục vụ cho mục đích tự hành, lắp đặt thêm hai camera phía trước và bên phải của xe để có thể thu thập hình ảnh trong việc xử lý ảnh chạy theo lane và nhận diện biển báo stop. Sử dụng Jetson Nano để làm máy tính xử lý trung tâm cho xe để xe có thể hoạt động tốt hơn.Đồng thời nâng cấp hai động cơ của xe để có thể đạt được tốc độ như mong.Sử dụng màn hình lcd để hiện thị hình ảnh xử lý của Jetson Nano trong khi xe di chuyển để dể dàng quan sát những sai lệch trong quá trình thu thập hình ảnh nhằm khắc phục,giúp xe ngày càng hoàn thiện hơn.
Trong qua trình vận hành ở môi trường thực tế thì cho thấy mô hình vẫn đáp ứng tốt với các yêu cầu của nhóm.Tuy vẫn có những sai lệch do sự chênh lệch tốc độ giữa hai bánh cũng như khả năng giữ lái của xe vẫn còn hạn chế khi bị tác động của ngoại lực bên ngoài, nhưng nhóm đã khắc phục đến mức thấp nhất cũng ảnh hưởng đó trong việc hoạt động của xe.
2
62 Hình 4.4: Mạch điện trong xe
Hình 4.4 là sơ đồ mạch điện thực tế trên xe đã được lắp đặt và sử dụng.
Bảng 4.1: Các linh kiện lắp đặt trên xe
STT Tên linh kiện
1 Camera logitech C270 2 LCD 3 Ắc quy 4 Module BTS7960 5 Arduino Uno R3 6 Driver TB6560 7 Jetson Nano 8 Giảm áp DC LM2596 4 5 6 7 8
63 4.2 THỰC NGHIỆM
4.2.1 Thực nghiện model Deep learning sử dụng tensorflow và keras
Nhóm chúng tôi thực nghiệm nhận dạng lane và điều khiển trong điều kiện thực tế,với môi trường tự nhiên ngoài trời,ánh sáng mặt trời.Trong phần điều khiển có chạy thẳng,rẽ phải,và dừng lại khi nhận diện biển báo.Vì xe chạy trong môi trường tự nhiên nên ảnh hưởng của ánh sáng và điều không tránh khỏi, nên các trường hợp trên nhóm em đã thực nghiệm trong những thời gian khác nhau trong ngày để quan sát độ của kết quả nhận dạng và điều khiển.
Hình 4.5: Xe đi thẳng1
64
Hình 4.5 và 4.6 là quá trình thử nghiệm xe đi thẳng bằng model được tạo ra bằng thư viện tensorflow và keras.Với nhiều lần thực nghiệm thì cho thấy khả năng nhận diện và xử lý hình ảnh đi thẳng của model là tốt.
Hình 4.7: Xe rẽ phải
Hình 4.8: Kết quả nhận diện lane cong
Hình 4.7 và 4.8 là quá trình thử nghiệm khi xe rẽ phải.Cũng với số lần thực nghiệm là 100 lần và được kết quả như trên thì cũng có thể thấy model xử lý chính xác hình ảnh được thu nhận từ camera trong điều kiện ánh sáng tối ưu nhất.
65 Hình 4.9: Xe đi thẳng 2
Hình 4.10: Kết quả nhận diện lane thẳng 2
Hình 4.9 và 4.10 là quá trình thực nghiệm đi xe đi thẳng 2.Cùng với số lần thực nghiệm như trên thì cho thấy model xử lý tốt hình ảnh của thẳng 2 trong điều kiện ánh sáng tối ưu nhất.Và tất cả các hình ảnh trên đều được nhóm thu thập khi xe chạy trong điều kiện ánh sáng tốt nhất.
66 Hình 4.11: Xe dừng lại
Hình 4.12: Kết quả nhận diện biển báo
Hình 4.12 là quá trình thực nghiệm nhận diện biển báo đồng thời tính diện tích của biển báo để cho xe dừng lại khi diện tích thỏa điều kiện.Và điều khiện cho trước đó cũng thông qua việc thực nghiệm để tìm diện tích biển báo thích hợp với mong muốn của nhóm.Qua hình ảnh cũng có thể đánh giá được model nhận diện được biển báo khá tốt.
67 4.2.2 Thực nghiệm model Deep learning sử dụng tensorflow
Hình 4.13: Xe đi thẳng api
Hình 4.14: Kết quả nhận diện thẳng api
Hình 4.13 và 4.14 là quá trình thử nghiệm xe chạy thẳng với model được xây dựng bởi thư viện tensorflow.Kết quả trên cho thấy model đáp ứng được yêu cầu đặt ra là xác định xe phải đi thẳng trong trường hợp này.Cũng như những thực nghiệm khác đây là kết quả khi thực nghiệm trong điều kiện ánh sáng tối ưu nhất,không bị các tác động bên ngoài.
68 Hình 4.15: Xe rẽ phải api
69 Hình 4.17: Kết quả nhận diện biển báo bằng api
Hình 4.17 là ảnh thực nghiệm quá trình nhận diện biển báo bằng model api, đồng thời tính diện tích của biển báo để có dừng xe khi diện tích thỏa điều kiện cho phép.Kết quả trên cũng cho thấy model api cũng đáp ứng khá tốt việc nhận diện biển báo trong điều kiện ánh sáng thực tế.Số lần thực nghiệm của model này cũng tương tự như model keras là 100 lần.
4.2.3 Thống kê
Qua quá trình thực nghiệm của cả hai model được xây dựng dựa trên hai phương pháp.Mỗi phương pháp có những ưu điểm khác nhau đã được trình bày ở chương 2,nhưng lại có những nhược điểm khá giống nhau.Khi xử lý hình ảnh trong môi trường thực tế thì việc hình ảnh bị nhiễu do ánh sánh là điều không thể tránh khỏi, khi ánh sáng thay đổi
70
trong ngày thì việc xác định hình ảnh để xứ lý và điều khiển xe cũng bị sai theo.Các hình ảnh được thể hiện phía trên là những hình ảnh xe thu thập và xử lý trong điều kiện ánh sáng tối ưu nhất.
Việc thu thập hình ảnh đầu vào để tạo model trong nhiều điều kiện ánh sáng khác nhau là điều vô cùng quan trọng,nó giúp việc xử lý trở nên tốt hơn,hạn chế các trường hợp nhiễu do ánh sáng.
Dưới đây là thống kê thời gian chạy tối ưu trong ngày của model sử dụng tensorflow và kears:
Bảng 4.2: Bảng kết quả thực nghiệm nhận dang lane,biển stop trong điều kiện thực tế.
Giờ Số lần 7 AM 8 AM 9 AM 10 AM 11 AM 12 AM 1 PM 2 PM 3 PM 4 PM 5 PM 6 PM 1 O O O X O O O O O O O X 2 O O O O O O X O X X O X 3 X O O O O O X O O X O X 4 O O O O O O O O X O O O 5 O X X O O O O X X O X O 6 X O O X X O O O O X X X 7 O O O O X O O O O X O X 8 O O X O O X O X O O X O 9 X X O O O O O X O O X O 10 O O O O O O O O O O X X Độ chính xác(%) 70 80 80 80 80 90 80 70 70 60 50 40
Với: O là nhận dạng lane và điều khiển chính xác, X là nhận dạng lane và không điều khiển chính xác.
Độ chính xác trung bình là 80%. Như vậy,có 20% là nhận biết và điều khiển không chính xác.Trong đó nguyên nhân lớn nhất lớn nhất gây ra việc nhận biết và điều khiển không chính xác chính là sự ảnh hưởng của ánh sáng,như đã nói phía trên ánh sáng đóng vai trò rất quan trọng trong việc nhận biết hình ảnh và xử lý của xe.Với những góc sáng khác nhau của mặt trời trong ngày sẽ gây nên nhiễu hình ảnh, ví dụ như bóng của chính xe,hay bóng của cây bên đường,.. là những điều khó tránh khỏi khi xử lý ảnh trong môi trường thực tế.
71 4.3 NHẬN XÉT VÀ ĐÁNH GIÁ
Qua quá trình thực hiện đề tài,nhóm chúng em đã tìm hiểu cơ sở lý thuyết liên quan đến đề tài như phương pháp xây dựng model Deep Learning bằng hai phương pháp như trên, lý thuyết về ngôn ngữ Python, Arduino và thông số kỹ thuật của các phần cứng.
Đối với Jetson Nano, nhóm đã tiếp cận từ những bước cơ bản nhất từ việc cài đặt hệ điều hành, cài đặt các thư viện cần thiết, trong đó thư viện Opencv chiếm thời gian đáng kể. Jetsn Nano có những chức năng tương đương với một máy tính, tuy tốc độ xử lý chưa thực sự tốt nhưng nó lại rất nhỏ gọn và mức tiêu thụ điện năng thấp, phù hợp với các dự án có tính di chuyển liên tục.Camera logitech chỉ có độ phân giải 3MP, nhưng hình ảnh nó cung cấp có chất lượng đủ để xử lý ảnh khá tốt.Về model xây dựng thông qua hai phương pháp trên có độ chính xác nằm trong khoảng có thể chấp nhận được, nhưng vẫn còn một số trường hợp nhận dạng không chính xác do ảnh hưởng của ánh sáng trong môi trường thực tế là rất lớn.
Đối với Arduino Uno R3 được dùng để nhận tín hiệu từ Jetson Nano về điều khiển các thiết bị phần cứng. Arduino Uno R3 có kích thước nhỏ gọn,giá thành khá rẻ,sử dụng phần mềm Arduino để lập trình,với ngôn ngữ lập trình dễ sử dụng và hệ thống thư viện mở đa dạng, nguồn tài liệu mở phong phú. Tuy vậy nhược điểm lớn nhất của Arduino Uno R3 là tần số hoạt động khá thấp, nên không thể đáp ứng các hoạt động điều khiển yêu cầu tần số cao.
72 Chương 5
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN
Từ kết quả thực nghiệm ta nhận thấy được điểm mạnh và yếu của hai phương pháp, được tổng hợp dưới bảng sau:
Bảng 5.1: Ưu điểm và nhược điểm của hai mô hình đào tạo.
Mô hình Keras Mô hình API
Ưu điểm - Đào tạo mô hình đơn giản.
- Thời gian đào tạo ngắn. - Độ chính xác cao.
- Độ chính xác cao. - Hạn chế tín hiệu lỗi.
Nhược điểm
- Tín hiệu lỗi do sự thay đổi của môi trường.
- Quá trình đào tạo phức tạp hơn.
- Thời gian đào tạo mô hình tương đối lâu. - Bị ảnh hưởng bởi ánh sáng
- Không thể hoạt động bên ngoài khu vực đào tạo
Từ thực tế hoạt động, tín hiệu do mô hình keras chỉ đưa ra một đối tượng duy nhất cho một khung ảnh, nên khi bị nhiễu bởi ánh sáng hoặc mô hình chưa đạt chuẩn thì rất khó để kiểm soát dẫn đến hoạt động sai sót của xe khi chạy thực tế. Vậy nên chúng em mới sử dụng phương pháp thứ hai là dùng xác định cung đường chạy bằng nhiều đối tượng, tức là trên một khung hình sẽ cho một hay nhiều hơn một đối tượng trong một khung hình.
Việc sử dụng nhiều đối tượng để xác định cung đường trong một khung hình vừa có điểm mạnh và điểm yếu riêng. Điểm mạnh là ta có thể khống chế tín hiệu điều khiển gửi