TỔNG QUAN
Đặt vấn đề
Ngày nay, sự phát triển của khoa học công nghệ và giao thông vận tải đã dẫn đến việc nhiều phương tiện được trang bị chế độ tự lái, giúp người lái duy trì sức khỏe trong những chuyến đi dài và giảm thiểu tai nạn giao thông Điều hướng quỹ đạo cho phương tiện là một yếu tố quan trọng trong sự phát triển của xe không người lái Để đạt được kết quả tốt nhất trong bối cảnh cuộc cách mạng công nghiệp 4.0, việc áp dụng các thuật toán trí tuệ nhân tạo, đặc biệt là thuật toán mạng nơ-ron tích chập (CNN), là rất cần thiết cho việc điều hướng các phương tiện tự hành.
Học tập sâu (Deep Learning) là một nhánh của máy học (Machine Learning) dựa trên mạng nơron nhân tạo, với một ví dụ nổi bật là mạng nơ-ron tích chập (CNN hay ConvNet) CNN khác biệt so với mạng thần kinh truyền thống ở chỗ số lượng nơ-ron trong mỗi lớp có thể giảm, trong khi số lớp ẩn lại tăng lên, tạo thành mạng sâu Các mạng này thường được huấn luyện thông qua chiến lược lan truyền ngược, cho phép xây dựng các hệ thống thông minh với độ chính xác rất cao.
Nhiều nghiên cứu đã được thực hiện về điều hướng cho xe tự hành, bao gồm các phương pháp như phát hiện làn đường theo thời gian thực và hệ thống theo dõi làn đường cho ứng dụng xe thông minh Mặc dù các phương pháp này đạt độ chính xác cao trong việc phát hiện làn đường, nhưng vẫn tồn tại một số nguyên nhân khiến việc phát hiện không thành công Nguyên nhân đầu tiên là tính chủ quan, vì sau khi phát hiện hai vạch kẻ đường, cần phải tính toán và xây dựng một đường ảo tại tâm của làn xe, sau đó ước tính góc lệch giữa thân xe và đường ảo để điều chỉnh góc lái phù hợp.
Để đảm bảo xe luôn ở vị trí chính giữa làn đường, việc tính toán góc lái là rất phức tạp và dễ dẫn đến sai số Ngoài ra, một yếu tố khách quan là nhiều con đường không có vạch kẻ hoặc bị mờ, làm cho việc xác định vị trí trở nên khó khăn Hơn nữa, khi xe di chuyển trên đường dốc, camera gắn phía trước có thể hướng lên trời, không theo kịp làn đường phía trước, dẫn đến khả năng phát hiện không chính xác.
Phương pháp GPS được áp dụng trong việc điều hướng xe tự lái, nhưng nếu sử dụng độc lập, nó có thể gây ra lỗi cao Do đó, việc áp dụng GPS trên mô hình xe không người lái gặp nhiều khó khăn và cần điều chỉnh để giảm sai số.
Tác giả đề xuất sử dụng mạng nơ-ron tích chập để cải thiện khả năng điều hướng cho các phương tiện tự lái, nhằm khắc phục những hạn chế hiện tại.
Trong nghiên cứu này, chúng tôi phát triển một mô hình xe tự hành bằng cách dự đoán góc lái từ hình ảnh thô thông qua mạng CNN Dữ liệu được thu thập từ một camera gắn phía trước xe, sau đó được tiền xử lý và đưa vào mạng CNN để tính toán giá trị góc lái Giá trị góc lái tính toán được so sánh với giá trị mong muốn cho hình ảnh tương ứng, từ đó trọng số của mạng CNN được điều chỉnh nhằm cải thiện kết quả.
Mục tiêu đề tài
Mục tiêu của đề tài là phát triển một mô hình xe tự lái có khả năng tự động điều hướng trong thời gian thực, thích ứng với nhiều điều kiện lái xe khác nhau trong môi trường ngoài trời.
Giới hạn đề tài
Phương pháp dựa trên thị giác gặp khó khăn trong việc duy trì hiệu quả khi có sự thay đổi về ánh sáng và bị ảnh hưởng bởi nhiễu từ môi trường xung quanh.
Vì vậy đề tài “Điều hướng xe tự hành dung trí tuệ nhân tạo” có những giới hạn như:
3 chưa chạy được trong môi trường ban đêm, sương mù và quỹ đạo di chuyển còn khá đơn giản.
Nội dung đề tài
Đề tài “Điều hướng xe tự hành dung trí tuệ nhân tạo” bao gồm các chương sau:
Chương I: Tổng quan: Chương này trình bày tổng quan sơ bộ về các yêu cầu của cuốn báo cáo như đặt vấn đề, mục tiêu, giới hạn và nội dung đề tài
Chương II: Cơ sở lý thuyết: Chương này trình bày về giới thiệu xe tự hành, các công nghệ khác nhau được sử dụng trong xe tự hành, tổng quan về trí tuệ nhân tạo và lý thuyết và mạng nơ-ron tích chập (CNN)
Chương III: Thiết kế phần cứng và lựa chọn thiết bị: Chương này trình bày về thiết kế phần cứng và lựa chọn thiết bị phần cứng cho mô hình xe tự hành
Chương IV: Giải thuật điều khiển xe tự hành : Chương này sẽ trình bày giải thuật, lưu đồ thu thập dữ liệu huấn luyện, điều hướng xe tự hành bằng mô hình đã được huấn luyện, cấu trúc mạng và tối ưu hóa các thông số
Chương V: Thực nghiệm: Chương này sẽ trình bày về việc thực hiện điều hướng cho xe tự hành theo hai quỹ đạo hình bầu dục và hình số 8
Chương VI: Kết quả: Kết luận chung về ưu điểm và hạn chế của đề tài, khẳng định những kết quả đóng góp đạt được, đề xuất ý kiến để cải thiện khuyết điểm và định hướng phát triển đề tài
CƠ SỞ LÝ THUYẾT CỦA XE TỰ HÀNH
Giới thiệu về xe tự hành
Xe tự hành là phương tiện di chuyển tự động, không cần người lái liên tục giám sát Công nghệ của xe tự hành phải đạt được các tiêu chí an toàn, hiệu quả và khả năng nhận diện môi trường xung quanh.
- Xử lý một lượng dữ liệu rất lớn và sử dụng nó để đưa ra quyết định thông minh
- Có khả năng thích nghi với môi trường đã biết hoặc chưa biết
Trong tương lai, chúng ta có thể kỳ vọng rằng vô lăng sẽ hoàn toàn biến mất, nhường chỗ cho những chiếc xe tự hành hoạt động tự động Những chiếc xe này sẽ tích hợp các hệ thống cảm biến, radar và bản đồ GPS, cho thấy sự tiến bộ vượt bậc trong công nghệ ô tô Sự thông minh của xe ô tô ngày càng gia tăng, như được minh họa trong hình 2.1.
Xe tự hành sử dụng công nghệ tự động để mang lại phương thức di chuyển thông minh Để đạt được điều này, cần có sự đồng bộ giữa các cảm biến thu thập thông tin về môi trường và các thuật toán phức tạp xử lý dữ liệu, giúp điều khiển xe một cách hiệu quả trong thời gian thực.
Các công nghệ này có khả năng nhận diện đối tượng như con người và ô tô, đồng thời đánh dấu đường, biển báo và đèn giao thông Chúng tuân thủ các quy tắc luật giao thông đường bộ và cảnh báo người dùng về nhiều mối nguy hiểm không thể đoán trước.
Hình 2.1: Sự phát triển của xe tự hành trong tương lai
Tổng quan về trí tuệ nhân tạo
2.2.1 Trí tuệ nhân tạo (Artificial Intelligence- AI)
Trí tuệ nhân tạo (AI) đang định hình lại nhiều ngành công nghiệp và trở thành một trong những chủ đề quan trọng trong các vấn đề khoa học, kinh tế và xã hội hiện nay Mặc dù AI mang lại nhiều lợi ích cho quy trình vận hành và sản xuất của các công ty tiên tiến, nhưng cũng có những lo ngại về việc nó có thể thay thế lao động con người và làm biến đổi các ngành công nghiệp truyền thống.
Trí tuệ nhân tạo (AI) là công nghệ cho phép máy móc mô phỏng quá trình ra quyết định và nhận thức của con người Để hoạt động hiệu quả, máy cần có khả năng hiểu và phân tích thông tin từ môi trường xung quanh, bao gồm cả không gian vật lý và dữ liệu từ cơ sở dữ liệu Nhờ vào khả năng này, hệ thống AI có thể tối ưu hóa hành động để đạt được các mục tiêu cụ thể, chẳng hạn như thực hiện lại các nhiệm vụ đã được huấn luyện hoặc giành chiến thắng trong các trò chơi như cờ.
Trí tuệ nhân tạo (AI) là một lĩnh vực rộng lớn bao gồm nhiều trường con, kỹ thuật và thuật toán, với mục tiêu chính là phát triển cỗ máy thông minh tương tự như con người Mục tiêu này đã được xác định từ năm 1956, khi các nhà nghiên cứu tập hợp tại Dartmouth để lập trình máy tính hành xử giống như con người, đánh dấu sự ra đời hiện đại của AI Để làm rõ hơn về các mục tiêu của trí tuệ nhân tạo, các nhà nghiên cứu đã mở rộng mục tiêu ban đầu thành sáu mục tiêu chính.
Lý luận logic cho phép máy tính thực hiện các nhiệm vụ tinh thần phức tạp tương tự như con người Ví dụ, máy tính có khả năng giải quyết các vấn đề lý luận logic thông qua việc chơi cờ và giải các bài toán đại số.
Trình bày kiến thức cho phép máy tính mô tả các đối tượng, con người và ngôn ngữ, với một ví dụ điển hình là ngôn ngữ lập trình hướng đối tượng như Smalltalk.
- Lập kế hoạch và điều hướng: Cho phép một robot đi từ điểm A đến điểm B
Ví dụ, robot tự lái đầu tiên được chế tạo vào đầu năm 1960
Xử lý ngôn ngữ tự nhiên (NLP) giúp máy tính hiểu và xử lý ngôn ngữ con người Một trong những dự án đầu tiên trong lĩnh vực này đã tập trung vào việc dịch tiếng Anh sang tiếng Nga và ngược lại.
- Nhận thức: Cho phép máy tính tương tác với thế giới thông qua thị giác, thính giác, xúc giác và khứu giác
Dưới đây là sáu thuật toán và kỹ thuật chính trong trí tuệ nhân tạo, mặc dù những mục tiêu này không phân loại cụ thể các thuật toán và kỹ thuật.
- Machine Learning là lĩnh vực trí tuệ nhân tạo cung cấp cho máy tính khả năng học mà không cần lập trình rõ ràng
- Tìm kiếm và tối ưu hóa: Các thuật toán như Gradient Descent để lặp lại tìm kiếm tối đa hoặc tối thiểu cục bộ
- Sự thỏa mãn ràng buộc là quá trình tìm giải pháp cho một tập hợp các ràng buộc áp đặt các điều kiện mà các biến phải thỏa mãn
Lý luận logic trong trí tuệ nhân tạo có thể được minh họa qua hệ thống máy tính chuyên gia, hệ thống này mô phỏng khả năng ra quyết định tương tự như một chuyên gia con người.
Lý luận xác suất kết hợp lý thuyết xác suất để xử lý sự không chắc chắn với khả năng suy diễn logic, nhằm khai thác cấu trúc của lập luận chính thức.
Lý thuyết điều khiển cung cấp một phương pháp chính thức để thiết kế các bộ điều khiển với các thuộc tính có thể chứng minh Phương pháp này thường áp dụng cho các hệ thống được mô tả bằng các phương trình vi phân, điển hình là các hệ thống vật lý như robot hoặc máy bay.
Hình 2.2: Mối quan hệ giữa AI, Machine Learning và Deep Learning
Trí tuệ nhân tạo (AI), học máy (Machine Learning) và học sâu (Deep Learning) là các lĩnh vực liên quan, trong đó trí tuệ nhân tạo là khái niệm tổng quát nhất Học máy là một phần của trí tuệ nhân tạo, và học sâu lại là một nhánh của học máy.
Machine Learning là một nhánh của trí tuệ nhân tạo, với mục tiêu giúp máy tính trở nên thông minh hơn Khái niệm này nhấn mạnh việc cung cấp dữ liệu cho máy tính để nó có thể tự học Ý tưởng về khả năng tự học của máy tính được Arthur Samuel đưa ra lần đầu vào năm 1959.
Sự phát triển mạnh mẽ của Machine Learning như một động lực chính cho trí tuệ nhân tạo bắt nguồn từ sự ra đời của internet Internet đã tạo ra một khối lượng lớn thông tin kỹ thuật số, cho phép lưu trữ và phân tích dữ liệu Điều này đã dẫn đến sự xuất hiện của khái niệm dữ liệu lớn (big data) Các thuật toán Machine Learning đã chứng minh hiệu quả vượt trội trong việc khai thác và tận dụng nguồn dữ liệu khổng lồ này.
Mạng nơ-ron là thành phần quan trọng và thành công nhất trong nhiều thuật toán Machine Learning, giúp máy tính suy nghĩ và hiểu thế giới giống như con người Mạng nơ-ron mô phỏng cấu trúc của bộ não con người, với các tế bào thần kinh được kết nối qua các khớp thần kinh, tạo nên một hệ thống học tập mạnh mẽ và hiệu quả.
Cấu trúc của một tế bào thần kinh sinh học bao gồm 8 đồ của các nút (nơ ron) được kết nối với nhau bởi các cạnh có trọng số (khớp thần kinh), như được minh họa trong hình 2.3.
Convolutional Neural Network (CNN)
Mạng nơron thần kinh (CNN) là mô hình học sâu hàng đầu trong lĩnh vực thị giác máy tính, hiện đang vượt trội hơn con người trong nhiều nhiệm vụ phức tạp CNN đóng vai trò quan trọng trong sự thành công của thị giác máy, mang lại kết quả xuất sắc cho hầu hết các bài toán như phân loại và nhận dạng.
CNN, hay Mạng Nơ-ron Tích Chập, là một loại mạng nơ-ron nhân tạo (ANN) có cấu trúc truyền thẳng Kiến trúc chính của CNN bao gồm nhiều thành phần được kết nối theo cấu trúc nhiều tầng, cho phép xử lý và phân tích dữ liệu hình ảnh một cách hiệu quả.
ReLU (tinh chỉnh các đơn vị tuyến tính)
Fully connected (liên kết đầy đủ)
Trước khi khám phá các thành phần chính của mạng nơ-ron tích chập (CNN), chúng ta sẽ xem xét một ví dụ về cách mà mạng nơ-ron truyền thẳng (ANN) xử lý thông tin đầu vào Qua đó, chúng ta có thể hiểu rõ hơn về vai trò và tác dụng của các thành phần trong mạng CNN.
Hình 2.12 minh họa một ví dụ về việc xử lý bức ảnh kích thước 200x200 bằng mạng nơ-ron nhân tạo (ANN) với kết nối đầy đủ giữa các tầng Nếu giả sử có 40,000 nơ-ron ở tầng ẩn, tổng số tham số cần thiết, cụ thể là các trọng số kết nối W giữa tầng đầu vào và tầng ẩn, sẽ rất lớn.
Việc ước lượng lên đến 1.6 tỉ dữ liệu gây ra hai thách thức lớn trong việc huấn luyện mạng nơ-ron nhân tạo (ANN): chi phí cao để xây dựng bộ dữ liệu huấn luyện và thời gian huấn luyện kéo dài.
Để giảm số lượng tham số trong mạng nơ-ron, cần giảm số lượng kết nối giữa các lớp Do đó, thành phần convolution được áp dụng, với ý tưởng rằng mỗi nơ-ron chỉ cần kết nối với một vùng cục bộ của ảnh thay vì toàn bộ ảnh.
Hình 2.12: Ví dụ cách thức xử lý của ANN với cấu trúc kết nối đầy đủ
Hình 2.13: Ý tưởng thiết kế CNN
Hình 2.14: Minh họa tích chập 2.3.1.1 Lớp tích chập (Convolution layer)
Tầng Convolution (Conv) là thành phần cốt lõi trong cấu trúc của mạng nơ-ron tích chập (CNN), đóng vai trò quan trọng trong việc trích xuất thông tin từ dữ liệu Dựa trên lý thuyết xử lý tín hiệu số, tích chập giúp nhận diện các đặc trưng quan trọng trong hình ảnh và video Hình thức hoạt động của tích chập có thể được hình dung như một cửa sổ trượt (Sliding Window) trên ma trận đại diện cho ảnh, trong đó mỗi giá trị của ma trận tương ứng với một điểm ảnh (pixel), với 0 biểu thị màu đen và 1 màu trắng, trong khi ảnh xám có giá trị từ 0 đến 255.
Sliding window, hay còn gọi là kernel, feature, hoặc filter, là một phương pháp sử dụng ma trận với bộ lọc kích thước 3x3 để nhân với từng thành phần tương ứng của ma trận ảnh bên trái Giá trị đầu ra được tính bằng tổng của các tích này Kết quả của phép tích chập là một ma trận (Convoled Feature) được tạo ra từ việc trượt ma trận bộ lọc và thực hiện tích chập trên toàn bộ ma trận ảnh bên trái.
Phép tính Conv trong xử lý ảnh giúp biến đổi thông tin đầu vào thành các yếu tố đặc trưng, tương ứng với các bộ phát hiện đặc trưng như cạnh, hướng và đốm màu Hình 2.15 minh họa việc áp dụng phép tính Conv trên ảnh, trong đó (a) thể hiện kết quả biến đổi hình ảnh từ các phép Conv khác nhau, và (b) trực quan hóa các kernel được sử dụng để phát hiện các đặc trưng về cạnh, hướng và đốm màu.
Để minh họa ứng dụng của tích chập, chúng ta xem xét bài toán tính giá trị đầu ra của một bức ảnh có kích thước 𝑊1 * 𝐻1 * 𝐷1 Trong đó, một lớp tích chập sẽ sử dụng một cửa sổ trượt, thực chất là một ma trận có kích thước F*F, áp dụng trên từng chiều của ảnh đầu vào với K bộ lọc Trong quá trình xử lý, các bộ lọc sẽ được dịch chuyển trên toàn bộ bức ảnh theo bước S (stride) tính bằng pixel.
Mỗi vùng mà bộ lọc áp đặt lên ma trận đầu vào được gọi là receptive field Để cân bằng giữa số bước dịch chuyển và kích thước của ảnh, có thể chèn thêm P pixel với giá trị màu cho trước (thường là 0) xung quanh viền của ảnh Khi thực hiện điều này, ma trận đầu ra (feature map) sẽ có kích thước 𝑊 2 * 𝐻 2 *𝐷 2.
Giá trị trong các ô của ma trận bộ lọc có kích thước (F*F*𝐷 1) + 1, trong đó +1 là tham số ngưỡng của filter, đại diện cho trọng số Các giá trị này của mỗi bộ lọc không thay đổi khi di chuyển trên bức ảnh đầu vào Tính chất này, gọi là dùng chung bộ trọng số (shared weights), giúp giảm số lượng tham số cần học trong quá trình huấn luyện mạng.
Hình 2.16: Các thành phần của lớp tích chập số cần học cho quá trình sử dụng tích chập là (F*F*𝐷 1 )*K +K (ở đây cộng thêm K tham số ngưỡng của K filter)
Trong ví dụ cụ thể ở hình 2.16, đầu vào là ảnh kích thước (32*32*3) với 𝑊 1 = 𝐻 1 2 và 𝐷 1 = 3, tương ứng với các kênh màu RGB Sử dụng 6 bộ lọc (K=6) có kích thước (5*5*3) với bước dịch chuyển S=1 và P=0, mỗi bộ lọc tạo ra một feature map khác nhau Kích thước của feature map được tính bằng 𝑊 2 = 𝐻 2 = (𝑊 1 – F)/1 +1 Mỗi neuron trong feature map có số tham số là (F*F*𝐷 1) = 5*5*3 +1 Nếu không áp dụng tính chất shared weights, tổng số tham số cần học cho tất cả feature map của 6 bộ lọc là (28*28*6) * (5*5*3 +1), mặc dù đã giảm so với việc không dùng tích chập, nhưng vẫn cao hơn so với (F*F*𝐷 1)K + K = 5*5*3*6 +6 khi sử dụng shared weights.
Như vậy sử dụng tích chập có những ưu điểm sau:
Giảm số lượng tham số trong mạng nơ-ron nhân tạo (ANN) truyền thống là cần thiết để tránh tình trạng quá tải, khi mà các nơ-ron ở lớp trước kết nối đầy đủ với các nơ-ron ở lớp sau Tình trạng này không chỉ dẫn đến overfitting mà còn làm tăng thời gian huấn luyện Việc áp dụng tích chập giúp chia sẻ trọng số, từ đó giảm thiểu số lượng tham số cần học và cải thiện hiệu quả của mô hình.
Figure 2.17 illustrates the Convolution layer in an image, highlighting the use of shared weights and local receptive fields instead of fully connected layers, which helps to reduce the number of parameters.
Bộ điều khiển PID
Bộ điều khiển vi tích phân tỉ lệ (PID) là một cơ chế phản hồi vòng điều khiển phổ biến trong các hệ thống công nghiệp, được sử dụng rộng rãi để tối ưu hóa hiệu suất điều khiển PID hoạt động bằng cách tính toán sai số, tức là sự chênh lệch giữa giá trị đo được và giá trị mong muốn, từ đó điều chỉnh giá trị điều khiển đầu vào nhằm giảm thiểu sai số Để đạt được hiệu quả tối ưu, các thông số PID cần được điều chỉnh phù hợp với đặc tính của hệ thống.
Bộ điều khiển PID hoạt động dựa trên ba thông số chính: tỉ lệ (P), tích phân (I) và đạo hàm (D) Giá trị tỉ lệ P xác định tác động của sai số hiện tại, trong khi giá trị tích phân I tính toán tác động của tổng sai số trong quá khứ Giá trị vi phân D dự đoán các sai số tương lai dựa trên tốc độ thay đổi hiện tại Sự kết hợp của ba thông số này giúp điều chỉnh quá trình thông qua các phần tử điều khiển như van hay bộ nguồn gia nhiệt, tạo ra một mối quan hệ rõ ràng giữa các yếu tố thời gian trong quá trình điều khiển.
Một số ứng dụng điều khiển chỉ yêu cầu một hoặc hai thông số, thường được gọi là P, PI hoặc PD Độ lợi tỉ lệ (Kp) ảnh hưởng đến tốc độ đáp ứng: giá trị Kp càng lớn thì đáp ứng càng nhanh, nhưng sai số cũng sẽ lớn hơn, dẫn đến sự cần thiết phải bù khâu tỉ lệ Tuy nhiên, nếu giá trị Kp quá cao, hệ thống có thể trở nên mất ổn định và dao động Đối với độ lợi tích phân (Ki), giá trị càng lớn giúp khử sai số ổn định nhanh hơn, nhưng cũng đồng nghĩa với việc độ vọt lố sẽ lớn hơn, khiến bất kỳ sai số âm nào cũng sẽ được tích phân trong suốt quá trình đáp ứng.
Để đạt được trạng thái ổn định, cần triệt tiêu quá độ bằng cách giảm sai số dương Độ lợi vi phân (Kd) có ảnh hưởng quan trọng: giá trị cao giúp giảm độ vọt lố nhưng có thể làm chậm phản ứng quá độ và dẫn đến mất ổn định do khuếch đại nhiễu tín hiệu trong quá trình vi phân sai số.
Bộ điều khiển PID, như hình 2.23, được sử dụng để duy trì tốc độ trong xe tự hành bằng cách tính toán sai số giữa vận tốc thực tế và giá trị mong muốn từ Raspberry Pi 3 Nó giảm thiểu sai số bằng cách điều chỉnh giá trị điều khiển đầu vào, gửi đến ESC và động cơ của xe.
Hình 2.22: Bộ điều khiển PID
Hình 2.23: Bộ điều khiển PID cho tốc độ của xe
THIẾT KẾ VÀ LỰA CHỌN THIẾT BỊ
Các thành phần phần cứng
3.1.1 Xe điều khiển Trophy Truck
Trophy Truck là một chiếc xe điều khiển từ xa tốc độ cao, hoạt động trên tần số vô tuyến 2,4 GHz với phạm vi lên đến 150 mét Xe được trang bị đầy đủ chức năng, bao gồm tay lái và khả năng di chuyển tiến lùi, như thể hiện trong hình ảnh minh họa.
Hình 3.1: Sơ đồ khối của mô hình xe tự hành
Hình 3.2: Xe điều khiển Trophy Truck
Hình 3.3: Chi tiết bên trong xe điều khiển
3.1.2 Động cơ Brushed Motor RC-540PH
Hình 3.4: Động cơ Brushed Motor RC-540PH
3.1.3 Động cơ RC Servo TowerPro MG946R Đề tài sẽ chọn động cơ RC Servo TowerPro MG946R để điều khiển góc lái cho xe tự hành
RC Servo TowerPro MG946R như hình 3.5:
Hình 3.5: RC Servo TowerPro MG946R
Bảng 3.1: Thông số hoạt động của RC Servo TowerPro MG946R
Stall torque 10.5kg/cm(4.8V) – 13kg/cm(6V)
Operating speed (Tốc độ hoạt động) 0.20sec/60degree(4.8V) – 0.17s/60d(6V) Operating voltage (Điện áp hoạt động) 4.8V – 7.2V
Temperature range (Khoảng nhiệt độ) 0 o C – 55 o C
3.1.4 Waterproof Brushed ESC Controller WP-1040
ESC là mạch điện tử giúp điều khiển và điều chỉnh tốc độ động cơ điện, có khả năng đảo chiều và phanh động Nó hoạt động dựa trên tín hiệu tham chiếu tốc độ từ ga, cần điều khiển hoặc đầu vào thủ công khác, điều chỉnh tốc độ chuyển đổi của mạng lưới transistor hiệu ứng trường (FET) thông qua việc thay đổi chu kỳ nhiệm vụ hoặc tần số ESC WP-1040 được thiết kế chống thấm nước và chống bụi, phù hợp với mọi điều kiện thời tiết.
Hình 3.6: Waterproof Brushed ESC Controller WP-1040
Raspberry Pi là một máy vi tính nhỏ gọn, kích thước tương đương với một thẻ ATM, tích hợp đầy đủ các thành phần cần thiết như CPU, GPU, RAM, khe cắm thẻ microSD, Wi-Fi, Bluetooth và 4 cổng USB 2.0 Để sử dụng, bạn chỉ cần cài đặt hệ điều hành bằng cách sao chép thư mục vào thẻ nhớ, sau đó kết nối chuột, bàn phím và màn hình, hoặc có thể sử dụng remote desktop hoặc SSH từ một máy khác.
Raspberry Pi là lựa chọn lý tưởng cho mô hình xe điều khiển nhờ thiết kế nhỏ gọn và dễ lắp đặt Nó hỗ trợ giao tiếp với nhiều thiết bị ngoại vi như camera và USB, cùng với các giao thức truyền nhận như Bluetooth, I2C, và SPI Điều này giúp đơn giản hóa quá trình lập trình các hệ thống nhúng.
Hình 3.8: Raspberry Pi Power Pack
Raspberry Pi Power Pack là một thiết bị nhỏ gọn nhưng mạnh mẽ, cung cấp hiệu suất lên đến 9 giờ sử dụng liên tục Sản phẩm sử dụng pin Lithium sạc lại với dung lượng 3800mAh, cho công suất 5.1V - 1.8A và trọng lượng chỉ 80g Với hai cổng USB, nó có khả năng cấp nguồn cho hai Raspberry Pi hoặc các phụ kiện khác như màn hình có thể tháo rời.
Trước khi có camera, Raspberry Pi (RPi) chỉ có thể nhận diện hình ảnh thông qua webcam kết nối USB, với webcam Logitech hỗ trợ định dạng mjpeg giúp xử lý nhanh hơn Tuy nhiên, giá thành webcam Logitech, đặc biệt là các loại có độ phân giải cao, khá đắt Raspberry Pi Camera tích hợp camera 5 megapixel với độ nhạy sáng cao, cho phép chụp ảnh chất lượng tốt trong nhiều điều kiện ánh sáng khác nhau, cả trong nhà và ngoài trời, đặc biệt nổi bật với khả năng chụp hình độ nét cao trong quá trình quay phim.
Khi sử dụng Raspberry Pi Camera, người dùng không cần sử dụng cổng USB vì camera được kết nối trực tiếp qua socket CSI Điều này giúp giảm thiểu tình trạng nghẽn băng thông cho chip xử lý USB trên Raspberry Pi, đồng thời tối ưu hóa hiệu suất hoạt động của thiết bị.
32 nối camera đã được thiết kế tỉ mỉ để đạt độ dài tối ưu, đồng thời đảm bảo tốc độ truyền tải hình ảnh từ module đến RPi.
Arduino Uno được trang bị vi điều khiển Atmega328 và có 14 chân vào/ra, trong đó 6 chân hỗ trợ đầu ra PWM Nó bao gồm 6 ngõ ra Analog, một cổng USB, một jack nguồn, ICSP và một nút nhấn Reset Board này tích hợp đầy đủ các thành phần cần thiết để hỗ trợ vi điều khiển, cho phép kết nối với máy tính qua cáp USB hoặc sử dụng với bộ chuyển đổi AC sang DC hoặc pin để bắt đầu dự án.
Hình 3.10: Board Arduino Uno (mặt trước và sau)
Bảng 3.2: Thông số của board Arduino Uno
Digital I/O Pins 14 (of which 6 provide PWM output)
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Mạch điều khiển 16 kênh PWM PCA9685 cho phép xuất ra 16 xung PWM đồng thời từ 16 cổng khác nhau thông qua giao tiếp I2C Sử dụng IC PCA9685, mạch này giúp bạn điều khiển 16 servo RC hoặc 16 thiết bị dimmer một cách hiệu quả.
Mạch điều khiển 16 kênh PWM PCA9685 có thiết kế phần cứng đơn giản và đi kèm với thư viện hỗ trợ trên Arduino, giúp người dùng dễ dàng sử dụng và kết nối.
Hình 3.11: Mạch Điều Khiển 16 Chanel PWM PCA9685
Mạch điều khiển 16 Chanel PWM PCA9685
Điện áp sử dụng: 2.3 ~ 5.5VDC
Số kênh PWM: 16 kênh, tần số: 40~1000Hz
Độ phân giải PWM: 12 bit
Giao tiếp: I2C (chấp nhận mức Logic TTL 3 ~ 5VDC)
Kích thước: 62.5mm x 25.4mm x 3mm
Sơ đồ kết nối phần cứng
Hình 3.14: Sơ đồ kết nối phần cứng
Trong hình 3.14, Pi Camera kết nối với Raspberry sử dụng giao thức điện CSI-
2 PCA 9685 kết nối với Raspberry Pi qua hai chân I2C (SDA và SCL), 3.3V và đất Động cơ được kết nối với Channel 0 và Servo với Channel 1 Arduino board được sử dụng để đọc các giá trị ga mong muốn từ PWM module PCA 9685, tốc độ thực tế đọc từ encoder sau đó duy trì vận tốc của xe với thuật toán điều khiển PID.
Cấu trúc phần cứng của mô hình xe tự hành
Sau khi hoàn thành thiết kế sơ đồ phần cứng và sơ đồ kết nối dây, quy trình xây dựng xe tự hành bắt đầu bằng việc điều chỉnh khung gầm của xe RC Car, kết hợp với các thành phần phần cứng đã được đề cập trong phần 3.2.
Bên ngoài xe được thể hiện trong hình 3.15 và hình 3.16 Hình 3.17 minh họa thành phần bên trong xe
Hình 3.15: Phía trên của mô hình xe tự hành
Hình 3.16: Phía trái của mô hình xe tự hành
Hình 3.17: Bên trong xe tự hành (a) bên trong xe nhìn từ phía trên (b) bánh răng của encoder (c) hệ thống bể lái (d) Motor và ESC b) c) d) a)
GIẢI THUẬT ĐIỀU KHIỂN CỦA MÔ HÌNH XE TỰ HÀNH
Sơ đồ khối thu thập dữ liệu huấn luyện
Hình 4.1: Sơ đồ khối thu thập dữ liệu huấn luyện
Khi khởi động xe, bước đầu tiên là kiểm tra kênh ga để điều chỉnh thanh ga, giúp xe chạy với tốc độ mong muốn Tiếp theo, cần kiểm tra các góc lái; nếu điều chỉnh thanh góc lái, xe sẽ thay đổi hướng theo góc đã nhận từ tay cầm điều khiển, nếu không, xe sẽ tiếp tục di chuyển về phía trước Trong quá trình xe đang chạy, chúng tôi chụp ảnh đường và lưu lại tên hình ảnh cùng với giá trị góc và ga vào tập dữ liệu Cuối cùng, để dừng xe, chỉ cần nhấn nút tắt.
Sơ đồ khối điều hướng mô hình xe tự hành
Hình 4.2: Sơ đồ khối điều hướng mô hình xe tự hành
Để bắt đầu quá trình tự động lái xe, bạn chỉ cần nhấn nút khởi động, sau đó xe sẽ di chuyển và chụp ảnh để gửi đến mô hình CNN nhằm dự đoán tốc độ và góc lái Chiếc xe sẽ tự động điều hướng dựa trên các thông tin từ mô hình CNN Cuối cùng, để dừng xe, bạn chỉ cần nhấn nút dừng.
Cấu trúc mạng và tối ưu các thông số
Mạng nơ-ron tích chập được thiết kế để huấn luyện dữ liệu với kiến trúc bao gồm 9 lớp, trong đó có 1 lớp chuẩn hóa, 3 lớp chập, 3 lớp gộp tối đa và 2 lớp kết nối hoàn toàn Kiến trúc mạng này được tác giả trình bày trong Hình 4.3.
Hình 4.3: Cấu trúc mạng huấn luyện cho mô hình xe tự hành
Lớp đầu tiên chuẩn hóa tất cả các ảnh có giá trị pixel trong khoảng từ -1 đến 1 Các lớp pooling được thiết kế dựa trên thực nghiệm, với kernel kích thước 5x5 và không có bước trượt cho lớp đầu tiên, trong khi các kernel kích thước 3x3 cũng không có bước trượt Độ sâu tương ứng của mỗi lớp là 16, 32 và 64.
Các lớp max-pooling, thường được sử dụng trong mạng nơ-ron tích chập (CNN), đóng vai trò quan trọng trong việc giảm kích thước hình ảnh mà vẫn giữ lại thông tin quan trọng Phương pháp này hoạt động bằng cách trượt một khung cửa sổ nhỏ qua hình ảnh và lấy giá trị tối đa tại mỗi vị trí Kết quả là hình ảnh sau khi gộp sẽ chỉ còn khoảng một phần tư kích thước ban đầu, giúp giảm số lượng hyperparameters cần tính toán, từ đó rút ngắn thời gian xử lý và hạn chế hiện tượng overfitting Tất cả các lớp max-pooling đều sử dụng kernel 2x2 và không có bước trượt.
Các lớp được kết nối hoàn toàn được thiết kế với việc giảm dần kích thước:
19456 và 500 Lớp đầu ra chắc chắn là 1 nơtron vì mô hình của chúng tôi dự đoán một giá trị như một lệnh điều khiển đầu ra cho góc lái
Chúng tôi sử dụng kích hoạt lớp là ELUs (đơn vị tuyến tính theo cấp số nhân) để cải thiện sự hội tụ, với mục tiêu duy trì giá trị trung bình gần bằng không, từ đó tăng tốc độ học tập Nghiên cứu cho thấy ELUs có khả năng đạt được độ chính xác phân loại cao hơn so với ReLUs Khác với ReLU, đầu ra của ELU không chỉ giữ kích thước đầu vào mà còn xử lý các giá trị âm một cách hiệu quả hơn.
Với a là siêu tham số và một điều kiện là a 0
Chúng tôi đã áp dụng hàm MSE (Mean-Square-Loss) cho đề tài này, một công cụ thường được sử dụng trong các bài toán hồi quy Hàm này tính toán giá trị trung bình của tổng bình phương sự khác biệt giữa kết quả thực tế và giá trị dự đoán.
Để giảm thiểu sự mất mát trong quá trình học, thuật toán tối ưu hóa Adam được lựa chọn, thường được ưa chuộng trong các ứng dụng học sâu Tác giả đã sử dụng các tham số mặc định của Adam trong Keras, với tốc độ học là 0.001.
Mạng nơron giải mã với nhiều lớp ẩn phi tuyến tính tạo ra các mô hình phức tạp, dẫn đến mối quan hệ phức tạp giữa đầu vào và đầu ra Để tăng cường kiến trúc và ngăn chặn overfitting, các lớp dropout được thêm vào, vô hiệu hóa một phần tế bào thần kinh với xác suất nhất định, từ đó ngăn cản sự đồng thích hợp Trong nghiên cứu này, tác giả áp dụng tỷ lệ dropout là 20%.
Hình 4.4: Lớp dropout a) mạng nơ-ron tiêu chuẩn, b) mạng nơ-ron sau khi áp dụng dropout a) b)
Phần mềm và các thư viện sử dụng để lập trinhg
4.4.1 Giới thiệu thư viện Tensorflow
TensorFlow là một thư viện phần mềm mã nguồn mở dành cho máy học trong nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ
Chạy trên hệ điều hành desktop Linux hoặc Mac OS X 64-bit, cũng như trên các hệ thống máy chủ và các nền tảng di động như Android và iOS của Apple.
TensorFlow có thể chạy trên nhiều CPU và GPU
TensorFlow cung cấp một API Python, cũng như một ít tài liệu API C/C++
4.4.2 Giới thiệu thư viện Keras
Keras is a Python-based machine learning framework designed to minimize the time between conceptualizing ideas and implementing them It features two high-level APIs: Keras Sequential and Keras Functional, making it user-friendly for developers.
Nó có thể sử dụng chung với các thư viện Deep Learning nổi tiếng như Tensorflow
Dễ sử dụng, xây dựng model nhanh
Keras có thể run trên cả CPUvà GPU
Hỗ trợ xây dựng CNN, RNN và có thể kết hợp cả hai.
THỰC NGHIỆM
Môi trường thực nghiệm
Hình 5.1: Quỹ đạo thực nghiệm 1: (a) Quỹ đạo hình bầu dục.(b) góc rẽ của đường đi (c) mô hình xe đang di chuyển theo quỹ đạo
Hình 5.2:Quỹ đạo thực nghiệm 2: (a) quỹ đạo hình số 8 (b) và (c) biển báo hiệu chỉ đường a) b) c) a) b) c)
Để thu thập dữ liệu đào tạo, mô hình xe tự hành được điều khiển trên quỹ đạo ngoài trời với hình dạng oval dài 50 mét và rộng 70 cm, bao gồm dải băng rộng 10 cm Xe có khả năng rẽ trái hoặc phải tại các đường cong bán kính 3 mét Quỹ đạo hình số 8 bao gồm hai vòng tròn tạo thành giao lộ ngang, dài 40 mét với cả đường cong bên phải và bên trái Bên ngoài đường có bốn biển báo giao thông đường kính 15 cm để hướng dẫn xe.
Mô tả tập dữ liệu
Chuẩn bị dữ liệu là rất quan trọng trong việc phát triển các mạng học tập sâu Raspberry Pi thu thập hình ảnh và thông tin lái xe từ người dùng khi di chuyển quanh đường đua với tốc độ 5-6 km/h Dữ liệu này bao gồm hơn 15.500 hình ảnh kèm theo góc lái, với độ phân giải ban đầu là 160x120 Pi Camera được thiết lập để chụp với tốc độ 10 khung hình/giây và thời gian phơi sáng 5000us, giúp giảm thiểu hiện tượng mờ do rung động khi xe di chuyển Các hình ảnh mẫu từ tập dữ liệu này được trình bày trong Hình 5.3.
Hình 5.3: Tập dữ liệu thu thập được: (a) là các mẫu từ tập dữ liệu lái xe (b), (c) và
(d) là những hình ảnh điển hình trong tập dữ liệu
Các phương pháp để tạo ra các nhiều dữ liệu khác nhau
Mô hình học tập sâu thường gặp khó khăn khi làm việc với tập dữ liệu nhỏ, dẫn đến hiệu suất tổng quát kém do thiếu mẫu huấn luyện Để khắc phục điều này, tăng cường dữ liệu là một công nghệ hiệu quả, giúp tạo ra nhiều trường hợp dữ liệu huấn luyện hơn bằng cách biến đổi ngẫu nhiên các mẫu hiện có Phương pháp này không chỉ tăng số lượng mà còn cải thiện chất lượng của tập huấn luyện thông qua các phép biến đổi như lật ngang, điều chỉnh độ sáng, tạo bóng ngẫu nhiên và thay đổi kích thước ảnh.
Hình 5.4: Ví dụ về các phương pháp tạo thêm dữ liệu huấn luyện
Quá trình huấn luyện
Tác giả đã chia tập dữ liệu lưu trữ thành hai phần: dữ liệu huấn luyện và dữ liệu thử nghiệm, với tỷ lệ 80:20 Sơ đồ huấn luyện được minh họa trong Hình 5.5, và tác giả đã tận dụng GPU NVIDIA GeForce để tối ưu hóa quá trình này.
GT 740M với bộ nhớ là 2GB có sẵn để huấn luyện mạng với ba lần, mỗi lần lượt là
Hình 5.5: Sơ đồ huấn luyện cho mô hình xe tự hành
Thời gian tổng cộng để thực hiện đào tạo với 100 chu kỳ cho 15,500 mẫu là khoảng 280 phút, tương đương với trung bình 168 giây cho mỗi chu kỳ Hình 5.6 minh họa một số hình ảnh đại diện cho các lớp tích chập.
Bảng 5.1: Sự ảnh hưởng của chu kỳ huấn luyện đến độ chính xác của mô hình
Số lượng mẫu huấn luyện
Thời gian huấn luyện Độ chính xác
Hình 5.6: Trực quan các lớp tích chập a) ảnh gốc b), c) và d) là lần lượt là các lớp tích chập thứ 1,2 và 3
Kết quả thực nghiệm ngoài trời
Sau khi được huấn luyện trên laptop, mô hình đã được sao chép trở lại Raspberry
Bộ điều khiển chính của xe sử dụng mạng Pi để nhận khung hình từ Camera Pi làm đầu vào Mỗi giây, hệ thống xử lý 10 hình ảnh, cho phép xe di chuyển với tốc độ tối đa khoảng 5-6 km/h khi đi quanh các khúc cua.
Mô hình dự đoán góc lái cho xe tự hành đạt độ chính xác 98,23%, cho thấy khả năng tự động điều hướng hiệu quả trong nhiều điều kiện lái xe khác nhau, bất kể có dấu hiệu làn đường hay không Giá trị góc lái được dự đoán một cách tương đối chính xác, minh chứng cho sự tiềm năng của công nghệ này trong việc cải thiện tính an toàn và hiệu suất của xe tự hành.
Hình 5.7: Độ chính xác của mạng CNN được đề xuất
Hình 5.8: Giá trị góc lái được dự đoán