TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠ KHÍ ĐỘNG LỰC ĐỒ ÁN TỐT NGHIỆP Ngành: Công nghệ Kỹ thuật ô tô Tên đề tài NGHIÊN CỨU VÀ TÍNH TOÁN HỆ THỐNG HỖ TRỢ ĐỖ XE TỰ
TỔNG QUAN VỀ ĐỀ TÀI
Lý do chọn đề tài
Chúng ta đang sống trong thời hiện đại với sự phát triển nhanh chóng của công nghệ, ô tô không chỉ là phương tiện di chuyển phổ biến mà còn là biểu tượng của sự tiện nghi và tiên tiến Xu hướng trong tương lai dường như đặt ra yêu cầu cao hơn về tính thông minh và khả năng tự hành của xe Trong bối cảnh đó, công nghệ đỗ xe tự động là một công nghệ hiện đại để có thể đáp ứng nhu cầu của người lái
Hệ thống đỗ xe tự động không chỉ là một đột phá trong lĩnh vực ô tô, mà còn là một trải nghiệm an toàn và thoải mái cho tài xế Việc sử dụng cảm biến và camera để quét môi trường xung quanh và xác định chính xác vị trí bãi đỗ trống và thu thập thông tin chi tiết không gian và kích thước của nó Phần mềm được lập trình để điều khiển sau đó tiến hành tính toán và điều chỉnh các thao tác lái xe, bao gồm quay lái, di chuyển và phanh, để đưa xe vào vị trí đỗ một cách chính xác
Lợi ích của hệ thống này không chỉ là sự tiện lợi trong việc đỗ xe, mà còn là sự giảm bớt căng thẳng và áp lực cho người lái Đặc biệt, trong những tình huống đỗ xe khó khăn và không gian hẹp, nó giúp tối ưu hóa thời gian và công sức Sự tiên tiến của công nghệ ô tô hiện đại không chỉ thể hiện ở khả năng tự động hóa mà còn ở khả năng tạo ra một trải nghiệm lái xe an toàn và hiện đại
Hệ thống đỗ xe tự động không chỉ giúp giảm nguy cơ va chạm không mong muốn mà còn đóng vai trò như một trợ lý đắc lực cho những tài xế mới thiếu kinh nghiệm Việc tự động hóa các thao tác lái xe giúp cho các tài xế dễ dàng hơn trong việc thích nghi với môi trường đô thị, đồng thời giảm áp lực và lo lắng trong quá trình đỗ xe Điều này tạo ra một môi trường lái xe thoải mái và an toàn hơn, hỗ trợ các tài xế mới sang lái xe một cách tự tin và hiệu quả hơn
Chính nhờ những điều trên mà nhóm chúng em quyết định thực hiện nghiên cứu “Hệ thống hỗ trợ đỗ xe tự động”.
Mục đích nghiên cứu đề tài
- Tìm hiểu về cấu tạo, nguyên lý hoạt động của hệ thống hỗ trợ đỗ xe tự động
- Tính toán được các số liệu như: bán kính quay vòng, góc đánh lái
- Tính toán nghiên cứu quỹ đạo di chuyển của xe
- Sử dụng Matlab để tính toán các dữ liệu cần từ các công thức đã nghiên cứu
- Tạo mô hình xe điều khiển bằng Arduino để thực hiện quá trình đỗ xe tự động.
Tình hình nghiên cứu trong và ngoài nước
Tính đến thời điểm hiện tại, lĩnh vực hệ thống đỗ xe tự động được rất nhiều sự quan tâm và đầu tư nghiên cứu đồ từ nhiều quốc gia Các quốc gia như Trung Quốc, Hoa Kỳ, Châu Âu, Nhật Bản và Hàn Quốc đều đang tích cực tham gia vào nghiên cứu và phát triển trong lĩnh vực này Ở Trung Quốc, công nghệ lái xe tự động và hệ thống đỗ xe tự động đang được các công ty công nghệ lớn như Baidu và Huawei đặt ưu tiên phát triển Tại Hoa Kỳ, các công ty ô tô như Tesla, Waymo và General Motors đang dẫn đầu trong việc nghiên cứu và triển khai các giải pháp hệ thống đỗ xe tự động
Châu Âu tập trung vào tích hợp hệ thống đỗ xe tự động với các phương tiện giao thông công cộng để tối ưu hóa di chuyển trong thành phố Nhật Bản và Hàn Quốc cũng tích cực tham gia nghiên cứu và triển khai hệ thống đỗ xe tự động để cải thiện giao thông đô thị và tăng tính hiệu quả của các phương tiện di chuyển
Xu hướng chung bao gồm sự tích hợp trí tuệ nhân tạo, mạng kết nối 5G và sự phát triển của xe tự động vào hệ thống đỗ xe Tuy nhiên, các thách thức về bảo mật và quản lý giao thông vẫn là những điều cần được giải quyết khi triển khai hệ thống hỗ trợ đỗ xe tự động trong các thành phố đông đúc.
Đối tượng và phạm vi nghiên cứu
1.4.1 Đối tượng nghiên cứu Đề tài: “Nghiên cứu và tính toán hệ thống hỗ trợ đỗ xe tự động” được nghiên cứu với đối tượng là các dòng xe Sedan va SUV
- Tính toán quỹ đạo đi của xe theo phương pháp hình học
- Tính toán các giá trị trên Matlap
- Xây dựng mô hình xe mô phỏng quá trình đỗ xe
- Đánh giá các kết quả của quá trình chạy thử nghiệm để đưa ra hướng hoàn thiện đề tài.
Phương pháp nghiên cứu
- Nghiên cứu các tài liệu về hệ thống hỗ trợ đỗ xe tự động
- Xem xét các bài báo, nghiên cứu, và tài liệu liên quan đến hệ thống đỗ xe tự động để hiểu về tiến triển và thách thức hiện tại
- Nghiên cứu về các công nghệ và cảm biến được sử dụng trong hệ thống hỗ trợ đỗ xe thông minh
- Phương pháp phân tích mô hình động học
- Phương pháp phân tích tính toán (tính toán các thông số của mô hình như: góc đánh lái, bán kính quay vòng)
- Mô phỏng đánh giá (chạy mô phỏng các số liệu đã tính toán kết hợp so sánh với các kết quả tính toán trên cơ sở lý thuyết để đánh giá và đưa ra kết luận hướng cải tiến)
- Chạy thử nghiệm trên mô hình (quá trình đỗ xe tự động)
- So sánh kết quả tính toán với chạy thực nghiệm: So sánh kết quả chạy thực nghiệm với kết quả tính toán dựa trên cơ sở lý thuyết để đánh giá độ chính xác và hiệu suất của mô hình
- Đánh giá và hướng cải tiến: Đánh giá sự tương đồng và khác biệt giữa kết quả mô phỏng và tính toán Đề xuất hướng cải tiến cho hệ thống dựa trên kết quả, có thể là sửa đổi mô hình hoặc cập nhật phần mềm.
Nội dung thực hiện
- Tìm hiểu, nghiên cứu các số liệu ban đầu và cơ sở lý thuyết về hệ thống đỗ xe tự động
- Tính toán góc đánh lái, bán kính quay vòng
- Tính toán quỹ đạo xe di chuyển
- Sử dụng Matlab để tính toán các dữ liệu từ các công thức đã nghiên cứu và chạy thử mô phỏng
- Chạy mô hình xe sử dụng Arduino để điều khiển
- So sánh các kết quả tính toán so với kết quả khi chạy thực tế trên mô hình để đánh giá mức độ hoàn thiện và đưa ra hướng cải tiến cho đề tài.
Kế hoạch thực hiện đồ án
Bảng 1.1 Kế hoạch thực hiện đồ án
Thời gian Nội dung thực hiện
28/09/2023 - Nhận đề tài: “Nghiên cứu và tính toán hệ thống hỗ trợ đỗ xe tự động”
- Tìm, đọc hiểu tài liệu lý thuyết bán kính quay vòng
- Tìm hiểu và nghiên cứu các tài liệu về hệ thống hỗ trợ đỗ xe tự động
- Tìm thông số cần thiết của mô hình
- Tính toán các số liệu
- Tính toán và nghiên cứu công thức tính quỹ đạo xe di chuyển
- Tính toán các thông số dựa trên công thức đã nghiên cứu trên Matlab
- Xây dựng mô hình xe để mô phỏng thực hiện quá trình đỗ xe
- Tổng hợp lý thuyết và hoàn thành file Word
7/01/2024 - Thiết kế Powerpoint, tổng hợp nội dung
- Chỉnh sửa, nghiên cứu lại kiến thức và luyện tập thuyết trình
CƠ SỞ LÝ THUYẾT
Mô hình động học của xe
Trong quá trình phát triển hệ thống đỗ xe tự động cho phương tiện không người lái, việc nghiên cứu mô hình động học của xe đặt ra một tầm quan trọng, đặc biệt là khi xe di chuyển ở tốc độ thấp Trong các tình huống như vậy, tác động của trượt bên của lốp trở nên không đáng kể, cho phép chúng ta đơn giản hóa biểu diễn chuyển động của xe như là một thân xe cứng Điều này dẫn đến sự chú trọng chủ yếu vào động học, tức là hình học của chuyển động
Một phần quan trọng của quá trình này là bộ điều khiển theo dõi đường Được thiết kế dựa trên mô hình động học của xe [3], bộ điều khiển này sử dụng tọa độ trung tâm của trục sau của xe để xác định hướng di chuyển và hành vi đỗ xe
Hình 2.1 Mô hình động học của xe
Các phương trình động học bao gồm:
Trong đó: 𝑥̇ là vận tốc của xe theo trục x
𝑦̇ là vận tốc của xe theo trục y
𝑣 𝑟 là tốc độ ở giữa cầu sau
𝑙 là chiều dài cơ sở của xe
𝛿 là góc đánh lái của bánh xe phía trước
∅ là góc hướng của xe
∅̇ là tốc độ góc quay thân xe
Phương trình (1) là phương trình chuyển động ngang: Xét chuyển động ngang của xe, nơi mà tốc độ của trục sau và góc hướng của xe có vai trò xác định vận tốc theo hướng ngang
Phương trình (2) là phương trình chuyển động dọc: Đối với chuyển động dọc, các yếu tố tương tự như tốc độ trục sau và góc hướng xe lại được sử dụng để xác định vận tốc theo hướng dọc
Phương trình (3) là phương trình vận tốc xoay: Đây là tốc độ thay đổi hướng của xe, phụ thuộc vào góc bánh xe phía trước và khoảng cách giữa hai trục xe
Các phương trình này giúp xác định cách xe di chuyển và xoay hướng trong quá trình đỗ Sự chú trọng vào mô hình động học không chỉ giúp loại bỏ sự phức tạp liên quan đến mô hình động lực học, mà còn hỗ trợ quá trình lập trình và triển khai hệ thống đỗ xe tự động Trong môi trường đỗ xe, nơi mà kiểm soát chính xác vị trí và hướng của xe đặc biệt quan trọng, mô hình động học cung cấp một cách tiếp cận linh hoạt và hiệu quả Điều này là kết quả của việc tránh sự phức tạp không cần thiết liên quan đến động lực học, thích hợp cho các tình huống di chuyển ở tốc độ thấp như đỗ xe Như vậy, mô hình động học trở thành công cụ hữu ích để phát triển hệ thống đỗ xe tự động trong bối cảnh xe không người lái ngày nay
Bán kính quay vòng của xe [1]
Hình 2.2 Bán kính quay vòng của xe
Trong mô hình động học của xe ô tô, bán kính quay vòng (R) đóng một vai trò quan trọng trong việc xác định khả năng quay của xe Bán kính quay vòng có thể được tính bằng công thức:
𝑅 = 𝑙 𝑡𝑎𝑛𝛿 Trong đó: l là khoảng cách giữa hai trục xe δ là góc quay của bánh xe phía trước
Vận tốc góc của xe khi quay vòng 𝜔 được tính là:
Công thức này giúp lý giải mối liên hệ giữa khả năng quay của xe và góc quay của bánh xe phía trước Khi góc quay δ tăng lên, bán kính quay vòng R giảm, cho thấy xe có khả năng quay chuyển động ở các không gian hạn chế Ngược lại, khi góc δ giảm, bán kính quay vòng tăng lên, phù hợp cho việc quay vòng ở tốc độ cao hoặc trong không gian rộng rãi
Chúng ta xét động học quay vòng của xe khi bỏ qua biến dạng ngang của các bánh xe do độ đàn hồi của lốp Nếu không tính đến độ biến dạng ngang của lốp, thì khi quay vòng
9 véc tơ vận tốc chuyển động của các bánh xe sẽ trùng với mặt phẳng quay (mặt phẳng đối xứng) của bánh xe
Hình 2.3 Sơ đồ động học quay vòng của ô tô khi bỏ qua biến dạng ngang
Hình 2.3 mô tả động học quay vòng của ô tô có hai bánh dẫn hướng ở cầu trước khi bỏ qua biến dạng ngang của lốp Ở trên sơ đồ, A, B là vị trí của hai trụ đứng E là điểm giữa của AB 𝛿 1 ; 𝛿 2 là góc quay vòng của bánh xe dẫn hướng bên ngoài và bên trong so với tâm quay vòng O
Bởi vậy, góc 𝛿 sẽ là đại diện cho góc quay vòng của các bánh xe dẫn hướng ở cầu trước Mặt khác AC và BD song song với trục dọc của ô tô
Khi xe quay vòng, để các bánh xe không bị trượt lết hoặc trượt quay, đường vuông góc với các véctơ vận tốc chuyển động của các bánh xe phải gặp nhau tại một điểm, đó là tâm quay vòng tức thời của xe (điểm O)
Theo sơ đồ trên, ta chứng minh được biểu thức về mối quan hệ giữa các góc quay vòng của hai bánh xe dẫn hướng để đảm bảo cho chúng không bị trượt khi xe quay vòng: cot 𝛿 1 − cot 𝛿 2 =𝑞
𝑞 là khoảng cách giữa hai đường tâm trụ đứng tại vị trí đặt các cam quay của các bánh xe dẫn hướng
𝑙 là chiều dài cơ sở của xe Điều này có ý nghĩa quan trọng trong việc ứng dụng thực tế, đặc biệt là trong việc nghiên cứu thiết kế và lập trình hệ thống hỗ trợ đỗ xe tự động Hiểu rõ về bán kính quay vòng giúp tối ưu hóa quá trình quay và đỗ xe, đảm bảo xe di chuyển linh hoạt và an toàn trong môi trường đô thị.
Cở sở lí thuyết về hệ thống lái
Hệ thống lái trên ô tô là một bộ phận quan trọng giúp người lái kiểm soát và điều khiển hướng di chuyển của xe Chức năng chính của hệ thống lái là chuyển động xoay từ vô-lăng (bánh lái) thành chuyển động tuyến tính cho bánh xe, thay đổi hướng di chuyển của xe theo mong muốn của người lái
2.3.1 Cấu tạo của hệ thống lái
Cấu tạo của hệt thống lái gồm: Dẫn động lái, cơ cấu lái, trợ lực lái
- Vô lăng (Steering Wheel): Bánh lái được người lái sử dụng để điều khiển hướng di chuyển của xe
- Trục lái (Steering Column): Là trục nối giữa vô-lăng và hộp số lái, truyền động xoay từ vô-lăng đến cơ cấu lái
- Các thanh dẫn động và chuẩn liên kết: Các thành phần này truyền động chuyển động từ vô-lăng đến bánh lái, giúp thay đổi hướng di chuyển của xe
- Trục vít - Thanh răng: Một loại cơ cấu lái cơ khí sử dụng trục vít và thanh răng để chuyển động xoay thành chuyển động tuyến tính cho bánh lái
- Bi tuần hoàn: Là một cơ cấu lái khác, sử dụng bi tuần hoàn để chuyển động giữa trục vít và thanh răng
- Hệ thống thủy lực lái (Hydraulic Power Steering): Sử dụng dầu thủy lực để hỗ trợ người lái giảm sức đẩy cần thiết
- Hệ thống lái trợ lực điện (Electric Power Steering - EPS): Sử dụng động cơ điện và bộ điều khiển để cung cấp lực hỗ trợ, giảm mức tiêu thụ năng lượng so với hệ thống thủy lực lái
2.3.2 Phân loại hệ thống lái
2.3.2.1 Hệ thống lái thuần cơ khí
- Sử dụng cơ cấu cơ khí truyền thống như cơ cấu vít - thanh răng, cơ cấu bi tuần hoàn, hoặc các cơ cấu lái cơ khí khác
- Không có hệ thống hỗ trợ điện hoặc thủy lực
- Thường được sử dụng trong các xe cổ điển hoặc các xe giữ nguyên cấu trúc cơ khí đơn giản
2.3.2.2 Hệ thống lái thủy lực
- Sử dụng dầu thủy lực để tăng cường lực hỗ trợ, giảm sức đẩy cần thiết từ người lái
- Hệ thống thủy lực có thể được tích hợp vào cơ cấu lái cơ khí hoặc làm việc cùng với hệ thống lái điện
- Thường được sử dụng trong nhiều loại xe, từ xe con đến xe thương mại và xe tải
2.3.2.3 Hệ thống lái điện (Electric Power Steering - EPS)
- Sử dụng động cơ điện và bộ điều khiển điện tử để cung cấp lực hỗ trợ
- Không sử dụng thủy lực, giúp giảm mức tiêu thụ năng lượng và cải thiện hiệu suất năng lượng của xe
- Thường được sử dụng trong các xe hiện đại và được coi là một giải pháp hiệu quả về năng lượng
2.3.3 Nguyên lý hoạt động của hệ thống lái:
Hệ thống lái trên ô tô đóng vai trò quan trọng trong việc tạo ra một trải nghiệm lái xe an toàn và dễ kiểm soát Nguyên lý hoạt động cơ bản của hệ thống này xuất phát từ sự tương tác giữa người lái và các thành phần cơ khí và điện tử, tạo nên một quá trình lái xe linh hoạt và hiệu quả
Người lái, thông qua vô-lăng, áp dụng lực xoay để định hình hướng di chuyển của xe Chuyển động xoay này sau đó được truyền từ vô-lăng đến bánh lái thông qua các thành phần như trục lái và hộp số lái Cơ cấu lái, như cơ cấu vít - thanh răng hoặc bi tuần hoàn, chuyển động xoay này thành chuyển động tuyến tính cho bánh lái
Các cơ cấu nối như thanh nối và càng lái liên kết các thành phần này để đảm bảo chuyển động đồng đều và chính xác Cảm biến góc lái đo lường góc quay của bánh lái và truyền thông tin đến hệ thống kiểm soát điện tử Hệ thống lái trợ lực, nếu có, thêm vào lực hỗ trợ, giảm sức đẩy cần thiết từ người lái và tạo ra một trải nghiệm lái xe thoải mái và hiệu quả
Ngoài ra, hệ thống kiểm soát điện tử (ECU) đóng vai trò quan trọng trong việc duy trì và điều chỉnh hoạt động của hệ thống lái ECU nhận và xử lý thông tin từ cảm biến góc lái để điều chỉnh lực hỗ trợ và cung cấp sự ổn định cho xe trong mọi điều kiện lái xe
Hệ thống lái 4 bánh (4WS) là công nghệ lái xe nâng cao hiệu suất và khả năng kiểm soát bằng cách tự động điều chỉnh góc lái của cả bánh trước và sau Khi di chuyển dưới
40 km/h, 4WS sẽ điều chỉnh góc lái của 2 bánh sau ngược chiều với 2 bánh trước để giảm hiện tượng thiếu lái, tùy vào tốc độ của xe và góc lái của 2 bánh sau có thể được chỉnh lên đến 2,8 hoặc 3 độ giúp xe quay đầu linh hoạt và điều khiển tốt trong khúc cua Ở tốc độ trên 40 km/h, hệ thống làm cho bánh sau quay cùng hướng, cung cấp sự ổn định và phản ứng nhanh trên đường cao tốc Điều này tăng tính linh hoạt và hiệu suất lái xe, đặc biệt trên các dòng xe hiệu suất cao như Porsche 911 Turbo và Panamera Dự kiến, hệ thống này sẽ trở thành tiêu chuẩn trang bị trên nhiều dòng xe trong tương lai
Nhìn chung thì trong hệ thống hỗ trợ đỗ xe tự động thì hệ thống lái 4 bánh xe giúp xe di chuyển vào bãi đỗ linh hoạt hơn với bán kính quay vòng hơn
Hình 2.5 Hệ thống lái 4 bánh.
Cơ sở lí thuyết Matlab
MATLAB, hay còn gọi là Matrix Laboratory, đây là một môi trường tính toán và lập trình số, sử dụng ngôn ngữ lập trình dựa trên khái niệm về ma trận Được phát triển bởi
MathWorks, nền tảng này mang đến những công cụ mạnh mẽ để xử lý ma trận, tạo đồ thị và phân tích dữ liệu MATLAB rộng rãi được sử dụng trong nhiều lĩnh vực như kỹ thuật, tự động hóa và các ứng dụng đa dạng khác Một điểm đặc biệt của nó là Simulink, một phần mở rộng hỗ trợ mô phỏng và mô hình hóa hệ thống động và điều khiển Sự hỗ trợ chính thức từ MathWorks cùng với đóng góp tích cực từ cộng đồng làm cho MATLAB trở thành công cụ quan trọng trong quá trình nghiên cứu và phát triển
Hình 2.6 Biểu tượng của Matlab
Những vấn đề này bao gồm:
- Phương trình toán học và tính toán
- Mô phỏng, mô hình hóa, và tạo các bản thiết kế
- Phân tích dữ liệu và vẽ đồ thị dữ liệu
- Trình bày sơ đồ khoa học và kỹ thuật
- Phát triển các ứng dụng, bao gồm cả phát triển với giao diện người dùng
MATLAB nổi bật so với C và Fortran với khả năng xử lý ma trận và vectơ hiệu quả, giúp giảm thời gian tính toán đáng kể Môi trường lập trình linh hoạt của MATLAB cho phép tương tác và thử nghiệm dễ dàng Thư viện đa dạng và các công cụ đồ họa mạnh mẽ
15 làm cho MATLAB trở thành lựa chọn ưa thích cho nhiều ứng dụng kỹ thuật Tích hợp linh hoạt với các ngôn ngữ khác cũng là điểm mạnh của MATLAB
Hệ thống MATLAB gồm có 5 phần chính:
- Môi trường phát triển (IDE - Integrated Development Environment): Môi trường này không chỉ là nơi người dùng nhập và thực thi mã nguồn, mà còn cung cấp nhiều tính năng hỗ trợ như trình biên tập mã, thanh công cụ, trình gỡ lỗi, và bảng điều khiển để theo dõi và quản lý biến và dữ liệu
- Thư viện các hàm toán học: MATLAB có một bộ sưu tập đa dạng các hàm toán học giúp người dùng thực hiện nhanh chóng các phép toán phức tạp Từ các hàm cơ bản như tính sin, cosin, đến các chức năng cao cấp như tìm kiếm ma trận nghịch đảo, tìm kiếm ma trận riêng, hàm Bessel và biến đổi Fourier nhanh (FFT)
- Ngôn ngữ lập trình: MATLAB sử dụng một ngôn ngữ lập trình chuyên dụng được thiết kế để thao tác với ma trận và mảng một cách hiệu quả Nó bao gồm các tính năng lập trình cơ bản như lệnh điều kiện, hàm, cấu trúc dữ liệu, đầu vào/đầu ra dữ liệu và cả tính năng lập trình hướng đối tượng
- Đồ họa: MATLAB không chỉ là một công cụ tính toán mạnh mẽ mà còn là một môi trường đồ họa đa dạng Nó cung cấp các công cụ để biểu diễn dữ liệu 2D và 3D, xử lý hình ảnh tĩnh và chuyển động, cũng như tạo ra các biểu đồ và đồ thị theo ý muốn của người dùng
- API (Interface Lập Trình Ứng Dụng): API của MATLAB cho phép tích hợp dễ dàng với các ứng dụng khác Các API này thường là các thư viện cho phép người dùng gọi các hàm MATLAB từ các ngôn ngữ lập trình như C và Fortran, thực hiện liên kết động, và đọc/ghi các tệp MAT
Có hai loại tệp có đuôi m:
- Tệp script trong MATLAB là một loại tệp chứa chuỗi các lệnh MATLAB thực thi tuần tự Nó không định nghĩa biến đầu vào hoặc đầu ra và thường được sử dụng để thực hiện các nhiệm vụ cụ thể như xử lý dữ liệu, tính toán, và mô phỏng quá trình tính toán Tệp script có thể sử dụng cả biến toàn cục và cục bộ, có khả năng tương tác với người sử dụng và có thể chạy từ dòng lệnh hoặc giao diện MATLAB
Công cụ linh hoạt này giúp quản lý mã nguồn và thực hiện các nhiệm vụ tính toán trong môi trường MATLAB
- Hàm trong MATLAB là một khối mã nguồn độc lập, có thể nhận biến đầu vào và trả về kết quả thông qua biến đầu ra Hàm giúp tạo mã nguồn có tính modul, dễ bảo trì, và tái sử dụng Có thể định nghĩa hàm bằng cách tạo một tệp m với tên giống với tên hàm Biến đầu vào và đầu ra được khai báo trong phần đầu của tệp hàm Hàm cũng có thể quản lý ngoại lệ và sử dụng các tính năng nâng cao như giới hạn đầu vào và đầu ra Việc sử dụng hàm giúp tăng độ đọc, quản lý phức tạp của chương trình và tạo mã nguồn dễ hiểu
Sau khi khởi động MATLAB, trên màn hình người dùng sẽ xuất hiện môi trường phát triển tích hợp MATLAB, trong đó có một số cửa sổ, trong đó có các cửa sổ quan trọng sau:
- Cửa sổ lệnh (Window): Có chức năng hiển thị thông báo nhập lệnh từ bàn phím và View tính toán Kết quả sau khi nhập lệnh hoặc gọi hàm
- Cửa sổ lịch sử lệnh: Hiển thị danh sách các lệnh được viết hoặc các chức năng được gọi trong mỗi phiên
- Cửa sổ Current Directory trong MATLAB là nơi hiển thị đường dẫn thư mục làm việc hiện tại Nó cho phép người dùng xem và chọn thư mục, quản lý tệp, và thay đổi vị trí làm việc trong môi trường lập trình MATLAB Cửa sổ này làm quan trọng trong việc tổ chức và duy trì mã nguồn, đặc biệt là khi làm việc với dự án lớn và phức tạp
- Workspace: Hiển thị danh sách tất cả các biến bao gồm: tên biến, giá trị biến hiện tại, loại biến có trong phiên làm việc hiện tại
Khi sử dụng MATLAB và thực hiện các hành động như gọi lệnh hoặc chọn mục trong menu, người dùng thường xem xuất hiện các cửa sổ hay bảng điều khiển cụ thể tương ứng Các cửa sổ này có thể hiển thị đồ thị, cung cấp bảng điều khiển để điều chỉnh các tham số, hoặc hiển thị kết quả của các thao tác Để chỉnh sửa mã lệnh hoặc chức năng, người dùng có thể chọn menu "File" -> "New" -> "M-File" hoặc nhấp vào biểu tượng "M-File mới" trên thanh công cụ Sau đó, cửa sổ
17 soạn thảo sẽ hiển thị trên màn hình, cung cấp đầy đủ chức năng soạn thảo giống như các môi trường soạn thảo của các ngôn ngữ lập trình khác Để nhận trợ giúp cho một lệnh hoặc hàm cụ thể trong MATLAB, người dùng có thể nhập "help" theo sau là tên của lệnh hoặc hàm trong cửa sổ lệnh của MATLAB.
Cơ sở lí thuyết Arduino
Arduino là một nền tảng phổ biến trong lĩnh vực phát triển dự án điện tử và lập trình nhúng Được thiết kế với mục đích giúp người dùng dễ dàng thực hiện các dự án sáng tạo, Arduino kết hợp cả phần cứng và phần mềm để tạo ra một môi trường phát triển linh hoạt Sử dụng ngôn ngữ lập trình dựa trên C/C++, Arduino có cộng đồng lớn và hỗ trợ dễ học, là lựa chọn lý tưởng cho người mới bắt đầu trong lĩnh vực điện tử và lập trình nhúng Điều này giúp nhanh chóng thử nghiệm ý tưởng và xây dựng các ứng dụng điện tử một cách sáng tạo và hiệu quả
Arduino Uno R3 là một board mạch vi xử lý tích hợp, được thiết kế để xây dựng các ứng dụng giao tiếp với nhau hoặc với môi trường một cách thuận lợi Board này sử dụng vi điều khiển AVR ATmega328 họ 8 bit và có các tính năng như cổng giao tiếp USB, chân đầu vào analog, và chân I/O kỹ thuật số tương thích với các board mở rộng đa dạng
Các thông số kỹ thuật của Arduino Uno R3 gồm:
- Vi điều khiển chính: ATmega328P
- Tốc độ xử lý: 16 MHz
- Flash: 32 KB (trong đó, một phần được sử dụng cho bootloader)
- Giao tiếp Serial: Có (RX, TX)
- Điện áp vào khuyến nghị: 7-12V DC
- Điện áp vào giới hạn: 6-20V DC
- Dòng tiêu thụ: Khoảng 50 mA (hoạt động)
- Dòng ra tối đa (5V): 500 mA
- Dòng ra tối đa (3.3V): 50 mA
Arduino Uno có thể sử dụng 3 vi điều khiển họ 8 bit AVR là ATmega8, ATmega168, ATmega328 Nó có thể thực hiện nhiều ứng dụng đơn giản như điều khiển đèn LED, xử lý tín hiệu cho xe điều khiển từ xa, hoặc làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD
Các chân năng lượng bao gồm GND (Ground), 5V, 3.3V, Vin (Voltage Input), IOREF, và RESET Board cũng có 2 chân Serial (RX và TX) và các chân PWM (~) cho việc xuất ra xung PWM Chân giao tiếp SPI và các chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10 bit Đặc biệt, có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
Hình 2.8 Sơ đồ chân kết nối Arduino Uno R3
Arduino Nano cũng giống như Arduino Uno đều sử dụng bộ vi điều khiển ATmega328P Sự khác biệt chủ yếu giữa chúng nằm ở hình dạng vật lý Bo mạch Arduino UNO có dạng PDIP (Plastic Dual-In-line Package) và có 30 chân, trong khi Arduino Nano có dạng TQFP (Plastic Quad Flat Pack) với 32 chân Một điểm khác biệt khác là Arduino Nano trang bị 8 cổng ADC, trong khi Arduino UNO chỉ có 6 cổng tương tự
Khác biệt quan trọng khác là Arduino Nano không có cổng nguồn DC như các phiên bản khác của Arduino Thay vào đó, nó sử dụng cổng USB mini, phục vụ cả quá trình lập trình và giám sát nối tiếp Một đặc điểm nổi bật của Arduino Nano là khả năng tự động
20 chọn đầu ra lớn nhất dựa trên điện áp hiện tại, làm cho nó trở thành một lựa chọn linh hoạt trong các ứng dụng về điện tử
- Vi điều khiển chính: ATmega328P
- Tốc độ xử lý: 16 MHz
- Flash: 32 KB (trong đó, một phần được sử dụng cho bootloader)
- Giao tiếp Serial: Có (RX, TX)
- Điện áp vào khuyến nghị: 7-12V DC
- Điện áp vào giới hạn: 6-20V DC
- Dòng tiêu thụ: Khoảng 19 mA (hoạt động)
- Dòng ra tối đa (5V): 500 mA
Hình 2.10 Sơ đồ chân kết nối Arduino Nano Đầu vào năng lượng bao gồm GND (Ground), 5V, 3.3V, Vin (Voltage Input), IOREF, và RESET Chân Serial (RX và TX) cho phép truyền nhận dữ liệu qua cổng Serial Các chân PWM (~) hỗ trợ tạo xung PWM để điều khiển độ rộng xung và tần số Chân giao tiếp SPI (MISO, MOSI, SCK, SS) được sử dụng để kết nối với các thiết bị ngoại vi Các chân analog (A0 → A7) cung cấp khả năng đọc giá trị analog từ cảm biến và thiết bị khác Chân SDA và SCL hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
TỔNG QUAN HỆ THỐNG HỖ TRỢ ĐỖ XE
Lịch sử phát triển
Hệ thống đỗ xe tự động đã phát triển từ những nghiên cứu đầu tiên vào những năm
1990 đến những đột phá công nghệ trong thập kỷ 2000 Sự tích hợp của cảm biến, trí tuệ nhân tạo và kết nối thông minh đã đưa hệ thống đỗ xe tự động từ giai đoạn thử nghiệm sang giai đoạn triển khai trên đường phố trong thập kỷ 2010 Hiện tại, công nghệ này tiếp tục phát triển với những thách thức như an toàn và chấp nhận cộng đồng, nhưng cũng mang lại cơ hội để cải thiện tính thuận tiện và giảm áp lực giao thông trong tương lai
Hình 3.1 Hệ thống hỗ trợ đỗ xe.
Hệ thống đỗ xe là gì?
Hệ thống hỗ trợ đỗ xe (Parking Assistance System) là một phần của bộ an toàn và các thiết bị hỗ trợ lái xe trong ô tô Chức năng chính của nó là hỗ trợ tài xế điều khiển phương tiện trong quá trình đỗ xe, giúp họ thực hiện các thao tác này một cách thuận tiện và an toàn
Hệ thống này được tích hợp các công nghệ như cảm biến, camera và radar để giám sát môi trường xung quanh xe Trong một số trường hợp, nó có khả năng xác định vị trí phù hợp để đỗ xe và cảnh báo người lái về sự xuất hiện của các chướng ngại vật xung quanh bằng cách truyền đạt thông tin qua giao diện trực quan hoặc âm thanh
Hệ thống hỗ trợ đỗ xe có thể có nhiều biến thể và được các nhãn hiệu ô tô đặt tên riêng biệt Tuy nhiên, chung quy, chúng cung cấp sự hỗ trợ thông qua giám sát không gian xung quanh và cung cấp thông tin chi tiết giúp người lái xe thực hiện quá trình đỗ xe một cách hiệu quả Các phiên bản tiên tiến có thể thậm chí tự động thực hiện việc đỗ xe.
Cấu tạo hệ thống đỗ xe
Hình 3.2 Cấu tạo của hệ thống hỗ trợ đỗ xe tự động
Cấu tạo của hệ thống bao gồm:
Hầu hết cấu tạo của các hãng xe khá giống nhau
Hệ thống hỗ trợ đỗ xe tự động được kích hoạt với một nút ấn Khi tài xế nhấn vào nút này, hệ thống đỗ xe tự động sẽ được kích hoạt và bắt đầu tìm kiếm bãi đỗ phù hợp Quá
24 trình này có thể bao gồm việc sử dụng cảm biến, camera, và các hệ thống khác để quét và phân tích môi trường xung quanh, sau đó thực hiện các bước cần thiết để đỗ xe một cách tự động Nút này cung cấp một cách thuận tiện và an toàn để kích hoạt tính năng đỗ xe tự động trên xe
Hình 3.3 Nút nhấn để điều khiển hệ thống
Cảm biến siêu âm (Ultrasonic Sensor) thường được sử dụng trong hệ thống đỗ xe tự động của các nhiều xe ô tô Cảm biến siêu âm hoạt động bằng cách phát sóng sóng siêu âm và đo thời gian mà sóng siêu âm phản xạ trở lại từ các vật thể xung quanh Dựa vào thời gian này, hệ thống có thể xác định khoảng cách giữa xe và các vật thể xung quanh
Hình 3.4 Cảm biến siêu âm trên xe
Trong hệ thống đỗ xe tự động, cảm biến siêu âm chủ yếu được đặt ở các vị trí phía trước và phía sau Các cảm biến này giúp hệ thống theo dõi khoảng cách giữa xe và các vật thể xung quanh, đồng thời cung cấp các dữ liệu cần thiết cho quá trình đỗ xe
Chức năng của cảm biến siêu âm trong hệ thống đỗ xe tự động bao gồm:
- Phát hiện vật cản: Cảm biến siêu âm giúp xe phát hiện các vật cản xung quanh, chẳng hạn như xe khác, tường, hoặc vật dụng khác, để tránh va chạm trong quá trình đỗ xe
- Đo khoảng cách: Dữ liệu từ cảm biến siêu âm có thể được dùng để đo khoảng cách giữa xe và vật thể, từ đó xác định được không gian đủ cho quá trình đỗ
- Hỗ trợ xe tự động đỗ: Cảm biến siêu âm có thể được sử dụng trong hệ thống tự động đỗ xe để hỗ trợ xe tự động điều khiển đỗ xe an toàn và hiệu quả
- Cảnh báo va chạm: Nếu có nguy cơ va chạm, hệ thống sẽ kích hoạt cảnh báo hoặc tự động can thiệp để tránh va chạm không mong muốn
3.3.3 Bộ điều khiển điện tử ECU
ECU (Engine Control Unit) đóng vai trò quan trọng trong hệ thống hỗ trợ đỗ xe tự động Các nhiệm vụ ECU đảm nhiệm như sau:
- Quản lý cảm biến: ECU thu thập thông tin từ nhiều loại cảm biến như cảm biến khoảng cách, cảm biến siêu âm, cảm biến hình ảnh
- Xử lý dữ liệu và nhận diện: ECU xử lý dữ liệu từ cảm biến để nhận diện vật thể xung quanh và không gian đỗ xe Các thuật toán thông minh được áp dụng để phân tích dữ liệu và đưa ra quyết định
- Tính toán vị trí và quỹ đạo của xe: Dựa trên thông tin từ cảm biến và các nguồn dữ liệu khác, ECU tính toán vị trí chính xác của xe trong không gian và lập kế hoạch cho quỹ đạo di chuyển để đỗ xe
- Điều khiển hệ thống lái và phanh: ECU điều khiển hệ thống lái và phanh để đảm bảo xe di chuyển theo quỹ định một cách an toàn và chính xác
- Hướng dẫn người lái: Trong một số trường hợp, ECU cung cấp hướng dẫn cho người lái thông qua giao diện người dùng hoặc tín hiệu âm thanh và hình ảnh, nhằm hỗ trợ họ trong quá trình đỗ xe
3.3.4 Hệ thống lái trợ lực điện EPAS
Hình 3.5 Cấu tạo hệ thống trợ lực lái điện EPAS
Hệ thống lái trợ lực điện (EPAS) trên ô tô sử dụng công nghệ điện để cung cấp lực lái trợ lực Thay vì thủy lực, EPAS sử dụng motor điện và bộ điều khiển để giảm áp lực cần thiết khi lái xe Điều này mang lại tính linh hoạt, tiết kiệm năng lượng, và cải thiện trải nghiệm lái xe EPAS cũng tương tác tốt với các hệ thống an toàn và làm giảm tiêu thụ nhiên liệu
Cấu tạo của hệ thống lái trợ lực điện (EPAS):
- Motor điện (Electric Motor): Hệ thống EPAS sử dụng một động cơ điện để cung cấp lực đẩy cho bánh lái Động cơ này được điều khiển bởi một bộ điều khiển điện tử để điều chỉnh mức lực đẩy dựa trên tốc độ, tốc độ vòng quay của bánh lái, và các yếu tố khác
- Cảm biến góc đánh lái (Steering Angle Sensor): Để theo dõi vị trí của bánh lái và góc quay của nó, hệ thống EPAS sử dụng cảm biến góc bánh lái Thông tin từ cảm biến này được sử dụng để đánh giá mức lực cần thiết để lái xe
- Bộ điều khiển điện tử (Electronic Control Unit - ECU): Bộ điều khiển này là trí óc của hệ thống, chịu trách nhiệm xử lý dữ liệu từ cảm biến và quyết định mức lực cần thiết để hỗ trợ lái xe dựa trên điều kiện lái và yêu cầu của người lái
Nguyên lý hoạt động
Nguyên lý hoạt động của hệ thống đỗ xe tự động thường bao gồm các bước sau:
- Nhận diện chỗ trống: Hệ thống sử dụng cảm biến và camera để quét và nhận diện chỗ trống phù hợp để đỗ xe Các cảm biến có thể bao gồm cảm biến siêu âm, cảm biến hồng ngoại hoặc cảm biến laser Camera được sử dụng để giúp tạo ra hình ảnh và thông tin chi tiết về môi trường xung quanh xe
- Tính toán quỹ đạo di chuyển: Sau khi xác định chỗ trống, hệ thống tính toán quỹ đạo di chuyển để đưa xe vào vị trí đỗ Quỹ đạo này bao gồm các thông số như góc lái, tốc độ di chuyển và khoảng cách
- Điều khiển lái xe: Hệ thống sử dụng phần mềm điều khiển để điều chỉnh các thao tác lái xe Nó có thể sử dụng hệ thống lái điện tử để tự động điều chỉnh góc lái và quay vô lăng để đưa xe vào vị trí đúng Phần mềm điều khiển cũng có thể tương tác với hệ thống phanh và hệ thống truyền động để điều chỉnh tốc độ và dừng xe khi cần thiết
Hình 3.6 Màn hình hiển thị để thông báo và hướng dẫn
3.6.a Thông báo đang tìm bãi đỗ
3.6.b Thông báo tìm được bãi đỗ thích hợp
- Giám sát và điều khiển: Trong quá trình đỗ xe, hệ thống liên tục giám sát các thông số như khoảng cách, vị trí và các vật thể xung quanh Nếu có tình huống không mong muốn xảy ra, hệ thống có thể tự động dừng lại và cảnh báo tài xế để tránh va chạm
- Hoàn thành việc đỗ xe: Khi xe đã đưa vào vị trí đúng, hệ thống kích hoạt chế độ đỗ xe tự động sẽ dừng lại và tắt động cơ Tài xế có thể tiến hành tắt hệ thống và rời xe
Tất cả các bước trên diễn ra tự động và dựa trên các thuật toán và phần mềm điều khiển phức tạp Hệ thống đỗ xe tự động được thiết kế nhằm giảm tải công việc cho tài xế và cung cấp sự tiện lợi và an toàn trong quá trình đỗ xe.
Công dụng
Hệ thống đỗ xe tự động không chỉ làm giảm căng thẳng cho người lái khi đỗ xe vào các bãi đậu, giảm va chạm không mong muốn và dễ dàng đỗ xe vào những bãi đậu hẹp, mà còn đem lại lợi ích lớn về việc tiết kiệm thời gian
Khi sử dụng hệ thống này, người lái không cần phải mất nhiều thời gian để có thể tìm kiếm chỗ đỗ xe phù hợp Hệ thống cảm biến và công nghệ lái tự động giúp xe tự động quét và xác định vị trí đỗ xe thích hợp một cách nhanh chóng Quá trình này không chỉ giảm thời gian mà còn mang lại sự thuận tiện cho người lái
Nhờ vào khả năng tự động hóa, việc đỗ xe trở nên hiệu quả hơn và giảm thiểu thời gian mà người lái phải dành cho những công đoạn này Điều này đồng nghĩa với việc hệ thống đỗ xe tự động không chỉ tạo ra một trải nghiệm lái xe dễ dàng và an toàn mà còn đóng góp vào việc tối ưu hóa lịch trình lái xe hàng ngày của người lái.
Ưu và nhược điểm
- Giảm nguy cơ va chạm và tai nạn khi đỗ xe, đặc biệt là trong không gian hẹp và khó khăn
- Giúp tài xế đỗ xe dễ dàng mà không cần phải thực hiện các pha lái xe phức tạp, giảm bớt thời gian và công sức
- Đối với người lái mới thiếu kinh nghiệm, hệ thống này là một trợ lý đắc lực, giúp họ thích ứng nhanh chóng và giảm áp lực khi lái xe
- Quét môi trường xung quanh và tính toán động học để tối ưu hóa việc đỗ xe, sử dụng hiệu quả không gian đỗ
- Mang lại trải nghiệm lái xe tiện nghi và hiện đại, phản ánh sự tiên tiến trong công nghệ ô tô
- Yêu cầu công nghệ và cảm biến đắt đỏ, có thể làm tăng chi phí sản xuất và giá bán của xe
- Hiệu suất phụ thuộc vào sự chính xác của cảm biến và phần mềm điều khiển, có thể gặp vấn đề trong điều kiện thời tiết xấu hoặc môi trường phức tạp
- Có thể gặp khó khăn khi đối mặt với cơ sở hạ tầng không đồng đều.
Phân loại
Hệ thống đỗ xe tự động có thể được phân loại theo cách nó thực hiện quy trình đỗ xe tại các bãi đỗ, trong đó bao gồm ba loại phổ biến: đỗ song song, đỗ vuông góc và đỗ chéo Đỗ song song (Parallel Parking): Đỗ song song thường được sử dụng khi người lái xe cần đỗ vào những vị trí dọc theo chiều dài đường Hệ thống này giúp xe di chuyển một cách mượt mà vào vị trí đỗ, giảm căng thẳng cho người lái khi đối mặt với những khoảng trống hẹp Đỗ vuông góc (Perpendicular Parking): Đỗ dọc là loại phổ biến tại các bãi đỗ và khu vực công cộng Hệ thống đỗ xe tự động dọc giúp xe đỗ vuông góc với chiều dài của đường, thường được ưu tiên sử dụng tại các cơ sở thương mại hay trên các tuyến đường phố Đỗ chéo (Diagonal Parking): Đỗ chéo là lựa chọn tối ưu hóa không gian, nơi xe đỗ theo đường chéo tại các bãi đỗ được thiết kế để tận dụng tối đa diện tích Loại đỗ xe này thường xuất hiện ở các khu vực trung tâm mua sắm hoặc khu vực giải trí
Hình 3.7 Các kiểu đỗ xe
Mỗi loại đỗ xe đều có đặc trưng riêng và đòi hỏi sự linh hoạt từ hệ thống đỗ xe tự động Sử dụng cảm biến và công nghệ lái tự động, hệ thống này giúp xe di chuyển và đỗ vào vị trí một cách an toàn và hiệu quả, tạo ra một trải nghiệm đỗ xe thuận tiện và nhanh chóng.
Một số hệ thống đỗ xe thông minh trên các dòng xe hiện nay
Hiện nay, công nghệ đỗ xe tự động đã được tích hợp trên một số mẫu xe của các nhà sản xuất ô tô hàng đầu Dưới đây là một số ví dụ về hệ thống đỗ xe tự động trên các mẫu xe phổ biến:
Tesla Autopark: Hệ thống Autopark của Tesla là một tính năng tự lái được tích hợp trên các mẫu xe của hãng, bao gồm Model S, Model 3, Model X và Model Y Hệ thống này cho phép xe tự động tìm kiếm, nhận diện và thực hiện quá trình đỗ xe song song hoặc vuông góc
BMW Park Assist: Hệ thống Park Assist của BMW có trên nhiều mẫu xe của hãng, bao gồm các dòng Series 3, Series 5 và Series 7 Hệ thống này sử dụng cảm biến và camera để nhận diện chỗ trống và thực hiện quá trình đỗ xe tự động
Mercedes-Benz Active Park Assist: Hệ thống Active Park Assist của Mercedes-Benz có trên nhiều mẫu xe của hãng, bao gồm các dòng C-Class, E-Class và S-Class Hệ thống này sử dụng cảm biến và camera để phát hiện chỗ trống và điều khiển góc lái để xe tự động vào vị trí đỗ
Toyota Intelligent Park Assist (IPA): Toyota, một trong những nhà sản xuất ô tô hàng đầu, đã tích hợp công nghệ hỗ trợ đỗ xe thông minh của họ, IPA, trên một số mẫu xe Hệ thống này sử dụng cảm biến và camera để giúp người lái xe đỗ xe một cách thuận tiện và
32 hiệu quả Người lái chỉ cần thao tác ga và phanh, trong khi hệ thống tự động thực hiện các động tác lái xe để đưa xe vào vị trí đỗ, giảm áp lực và tăng tính an toàn và hiệu suất
Ford Active Park Assist: Hệ thống Active Park Assist của Ford có trên nhiều mẫu xe của hãng, bao gồm các dòng Focus, Fusion và Escape Hệ thống này sử dụng cảm biến và camera để phát hiện chỗ trống và điều khiển góc lái để xe tự động thực hiện quá trình đỗ xe
Audi Park Assist: Hệ thống Park Assist của Audi có trên nhiều mẫu xe của hãng, bao gồm các dòng A3, A4 và Q7 Hệ thống này sử dụng cảm biến và camera để nhận diện chỗ trống và hướng dẫn người lái điều khiển góc lái để xe tự động đỗ vào vị trí Đây chỉ là một số ví dụ về hệ thống đỗ xe tự động trên các mẫu xe hiện nay Các hãng ô tô khác cũng đã tích hợp công nghệ tương tự trên một số mẫu xe của họ để mang lại tính tiện lợi và an toàn khi đỗ xe
NGHIÊN CỨU VÀ TÍNH TOÁN HỆ THỐNG
Tính toán các giới hạn để tránh va chạm
Trong phương pháp này, quỹ đạo di chuyển của xe được chia thành 2 giai đoạn (xem hình 4.1):
Giai đoạn 1: xe di chuyển từ vị trí 𝑃 3 đến 𝑃 2
Giai đoạn 2: xe di chuyển từ vị trí 𝑃 2 đến 𝑃 1
4.1.1 Tính quỹ đạo xe giai đoạn 1
Trong giai đoạn 1: khi xe di chuyển từ 𝑃 3 đến 𝑃 2 , thì xe có nguy cơ va chạm với điểm
E nếu 𝐿 𝑝 quá nhỏ Vậy trong trường hợp này ta tính chiều dài bãi đỗ tối thiểu 𝐿 𝑝 𝑚𝑖𝑛
Hình 4.2 Điểm có nguy cơ va chạm với xe trước
4.1.1.1 Công thức tính toán tâm quay vòng và các bán kính quay vòng của xe
Hình 4.3 Kích thước của xe
Trong đó: 𝑙 là chiều dài cơ sở của xe
𝑙 𝑟 là khoảng cách từ tâm bánh xe sau đến phần phía sau
𝑙 𝑓 là khoảng cách từ tâm bánh xe trước đến phần phía trước
𝐿 là chiều dài của xe
𝑊 là chiều rộng của xe
Bằng cách xác định bán kính quay vòng, chúng ta có thể lập kế hoạch đường đi ngắn nhất bằng cách sử dụng các đường tròn có bán kính tối thiểu Khi này, việc nghiên cứu bán kính quay vòng trở nên quan trọng để xác định các phép tính chi tiết của hướng đi và đảm bảo an toàn và chuyển động tối ưu nhất
Như ở hình 4.4 có thể xác định hai bán kính quay vòng 𝑅 𝑖 và 𝑅 𝑒 : bán kính nội 𝑅 𝑖 là bán kính nhỏ nhất được tính từ bánh xe sau bên trong đến tâm bán kính quay vòng, bán kính ngoại 𝑅 𝑒 là bán kính lớn nhất được tính từ góc phía trước đầu xe bên ngoài đến tâm bán kính quay vòng [6]
Hình 4.4 Bán kính quay vòng khi xe quay vòng
Bán kính quay vòng 𝑅 được tính bằng công thức:
𝑅 = 𝑙𝑡𝑎𝑛𝛿Bán kính 𝑅 𝑖 có thể được tính từ bán kính R bằng cách áp dụng định lý Pythagore:
Tương tự, bán kính 𝑅 𝑒 có thể được tính từ bán kính 𝑅 bằng cách áp dụng định lý Pythagore:
+ (𝑙 − 𝑙 𝑓 ) 2 Điều này cho chúng ta hiểu rõ hơn về cách bán kính 𝑅 𝑖 và 𝑅 𝑒 phản ánh sự giảm khi góc lái tăng lên và làm thế nào nó được ảnh hưởng bởi các thông số kích thước của phương tiện như chiều dài cơ sở của xe và khoảng cách giữa các bánh xe
Vì khi xe ở vị trí 𝑃 1 và 𝑃 3 xe nằm song song với bãi đỗ nên tâm quay vòng 𝑂 1 , 𝑂 2 sẽ nằm trên đường thẳng vuông góc với bãi đỗ và có bán kính quay vòng là R
Hình 4.5 Quỹ đạo quay vòng của xe để vào bãi đỗ
4.1.1.2 Tính toán chiều dài bãi đỗ tối thiểu 𝑳 𝒑 𝒎𝒊𝒏
Trong hệ thống đỗ xe tự động, thường sử dụng các cảm biến như siêu âm hoặc hồng ngoại để đo lường không gian đỗ xe Tuy nhiên, đối với các không gian không có vật cản cụ thể như tường, các cảm biến này thường không thể cung cấp thông tin chính xác về độ sâu của không gian Ở những bãi đỗ thông thường, việc đỗ xe thường được thực hiện theo hàng, đặt xe xen kẽ với các phương tiện khác Vì vậy, trong phần tiếp theo, chúng ta giả định rằng chiều sâu của không gian đỗ xe tương đương với chiều rộng của xe Điều này giúp đơn giản hóa quá trình đỗ xe và tối ưu hóa khả năng xử lý của hệ thống tự động, giúp xe thực hiện các thao tác đỗ một cách chính xác và hiệu quả
Một trong những thách thức quan trọng là xác định chiều dài tối thiểu của bãi đỗ
𝐿 𝑝 𝑚𝑖𝑛 Để tính toán 𝐿 𝑝 𝑚𝑖𝑛 ta sử dụng phương pháp hình học và tính toán theo các bán kính quay vòng tối thiểu (xem hình 4.5)
Góc lái tối đa của xe, ký hiệu là 𝛿 𝑚𝑎𝑥 đóng vai trò quan trọng trong tính toán này Khi xe đánh lái với góc đánh lái tối đa, khi đó bán kính quay vòng nhỏ nhất được xác định
Chiều dài tối thiểu của bãi đỗ xe có thể được tính bằng công thức:
Chúng em tin rằng việc tiếp cận này sẽ giúp chúng em tạo ra một hệ thống đỗ xe tự động hiệu quả và an toàn, đồng thời tối ưu hóa sử dụng không gian đỗ xe
Hình 4.6 Tính 𝐿 𝑝 theo các bán kính quay vòng
4.1.2 Tính quỹ đạo xe đi ở giai đoạn 2
Trong giai đoạn này, khi xe rời bãi đỗ để xe không va chạm với xe phía trước (điểm E) thì ta cần tìm vị trí 𝑂 1 phù hợp để khi xe quay vòng không bị va chạm (xem hình 4.6) Bánh xe bên phải phía sau có nguy cơ bị va chạm với xe phía trước, vì đây là điểm có bán kính quay vòng nhỏ nhất
Hình 4.7 Điểm có nguy cơ va chạm khi xe rời bãi đỗ
Trong quá trình nghiên cứu, chúng em đã nghiên cứu được một yếu tố quan trọng khác của hệ thống đỗ xe tự động, đó là tính toán khoảng cách tối thiểu so với xe bên cạnh của
39 xe (𝛥𝑦 𝑚𝑖𝑛 ), vị trí của xe sau khi rời bãi đỗ Khi xe rời bãi đỗ, nếu đường cong mà chiếc xe cần di chuyển là quá ngắn, có nguy cơ va chạm với xe phía trước, nên ta cần tính toán góc quét tối thiểu (𝜃 𝑚𝑖𝑛 ) để tránh va chạm
Khi tính toán trong giai đoạn này, ta tính toán với 𝐿 𝑝 là 𝐿 𝑝 𝑚𝑖𝑛 đã được tính toán ở giai đoạn 1 từ trước đó Trong trường hợp này, chúng em tập trung vào bán kính liên quan đến bánh xe sau bên phải phía sau là 𝑅 𝑖 𝑚𝑖𝑛
4.1.2.1 Tìm tọa độ tâm bán bán kính quay vòng 𝑶 𝟏
Khi xe rời khỏi bãi đỗ, bánh xe sau bên phải phía sau tạo ra một vòng tròn có bán kính
𝑅 𝑖 𝑚𝑖𝑛 + 𝑊 với tâm là 𝑂 2 , sau đó tạo ra một vòng tròn có bán kính 𝑅 𝑖 𝑚𝑖𝑛 với tâm là 𝑂 1 Để khi xe quay vòng với tâm 𝑂 1 bán kính 𝑅 𝑚𝑖𝑛 mà không va chạm với điểm E thì khoảng
40 cách giữa điểm E với 𝑂 1 bằng Rimin Và theo hình 4.7 ta thấy tâm 𝑂 1 với 𝑂 2 luôn nằm cùng trên một đường thẳng Nên chúng em vẽ một vòng tròn có bán kính 𝑅 𝑖 𝑚𝑖𝑛 với tâm là E, và một đường tròn có bán kính 2𝑅 𝑖 𝑚𝑖𝑛 + 𝑊 với tâm là 𝑂 2 Khi đó 𝑂 1 là điểm giao giữa 2 đường tròn đó
Hình 4.9 Vị trí của tâm quay vòng 𝑂 1 Giải phương trình giao điểm của hai đường tròn để tính toán các điểm giao nhau của hai vòng tròn này và chúng em có được hai điểm 𝑂 1 Sử dụng công thức tính ở [10] ta được:
ℎ = √(2𝑅 𝑖 𝑚𝑖𝑛 + 𝑊) 2 − 𝑚 2 Trong đó: k là khoảng cách từ 𝑂 2 đến đoạn thẳng 𝑂 1 𝑂 1 ′ m là khoảng cách từ 𝑂 2 đến 𝐸 h là khoảng cách từ 𝑂 1 đến đoạn đoạn thẳng 𝑂 2 𝐸
Tọa độ điểm 𝑂 3 là tọa độ giao điểm của 𝑂 1 𝑂 1 ′ và 𝑂 2 𝐸 được tính như sau:
𝑘 (𝐸 − 𝑂 2 ) Cuối cùng, ta tính 2 tọa độ giao điểm của hai đường tròn 𝑂 1 như sau:
Sử dụng Matlab để tìm tọa độ 𝑂 1 , ta được: a)
42 b) Hình 4.10 Xác định tâm 𝑂 1 bằng Matlab Để tối ưu quá trình di chuyển xe vào bãi đỗ thì ta chọn vị trí 𝑂 1 dựa vào quãng đường xe di chuyển ngắn nhất Điều này được tính toán ở phần 4.1.2.2
Sau khi tìm được tâm quay vòng 𝑂 1 , ta bắt đầu tính 𝛥𝑦 𝑚𝑖𝑛 và 𝜃 𝑚𝑖𝑛
Ta có công thức tính 𝛥𝑦 𝑚𝑖𝑛 như sau:
Tính toán quỹ đạo xe di chuyển
Bây giờ, sau khi ta có được 𝛥𝑦 𝑚𝑖𝑛 và 𝜃 𝑚𝑖𝑛 thì có một vấn đề xảy ra là không phải khi nào bãi đỗ cũng có kích thước là 𝐿 𝑝𝑚𝑖𝑛 , và với một giá trị L bất kì thì việc ta cần làm bây giờ là tìm vị trí của xe trước khi bắt đầu di chuyển vào bãi đỗ
Trong trường hợp này ta giả sử cho xe đánh hết lái 𝛿 𝑚𝑎𝑥 mỗi khi chuyển hướng, ta có được giá trị 𝑅 𝑚𝑖𝑛
Trong quá trình triển khai hệ thống hỗ trợ đỗ xe tự động, việc đầu tiên là xác định vị trí chính xác của xe so với bãi đỗ, đây là một phần quan trọng của dự án Trong quá trình này hệ thống được thiết kế để tự động quét và thu thập thông tin về vị trí của bãi đỗ, từ đó tính toán tọa độ của các điểm quan trọng như 𝑃 3 và 𝑂 2 (xem hình 4.12) Chọn gốc tọa độ như hình 4.12 ta có:
Tọa độ điểm 𝑃 3 (điểm kết thúc quá trình đỗ xe) là:
Dựa trên tọa độ của điểm 𝑃 3 và 𝑂 2 , hệ thống sẽ tiến hành tính toán để xác định tọa độ của 𝑃 1 Điểm 𝑃 1 là điểm mà tại đó xe sẽ bắt đầu thực hiện các thao tác cần thiết để có thể di chuyển vào bãi đỗ một cách an toàn và chính xác Quá trình này bao gồm việc điều chỉnh hướng, tốc độ và khoảng cách đảm bảo xe di chuyển một cách linh hoạt và phù hợp với không gian đỗ xe đã được xác định trước đó
Ta tính được tọa độ 𝑃 2 :
Tọa độ điểm 𝑃 1 ta có được là:
Hình 4.13 Tìm tạo độ điểm 𝑃 1 Thông thường thì trước khi thực hiện quá trình đỗ xe, các tài xế thường điều xe của họ sao cho nó luôn nằm song song với bãi đỗ Do đó, trong tình huống này, chúng tôi giả định rằng xe luôn giữ vị trí song song với bãi đỗ trước khi tiến hành quá trình đỗ xe Với giả định này, quá trình tính toán trở nên đơn giản hóa, đồng thời tăng cường sự linh hoạt và hiệu suất của hệ thống Thêm vào đó, thông tin về khoảng cách ∆y, được đo bằng các cảm biến siêu âm, đó là yếu tố quan trọng giúp đảm bảo rằng vị trí của xe là chính xác
47 trong quá trình di chuyển vào bãi đỗ và đồng thời tránh va chạm với các vật cản xung quanh
Những giả định và quá trình tính toán này được tích hợp trong hệ thống để đảm bảo rằng xe có thể thực hiện chuỗi hành động để đỗ xe một cách an toàn và chính xác, giảm bớt gánh nặng cho tài xế và đảm bảo hiệu suất tốt của hệ thống tự động hóa
Tìm quãng đường để xe di chuyển từ vị trí hiện tại của xe 𝑃 0 đến vị trí 𝑃 1 để bắt đầu đỗ xe:
Hình 4.14 Tím 𝑠 0 Quỹ đạo xe được tính toán trên Matlab với ∆ 𝑦 = 3 (𝑐𝑚)
Hình 4.14 Quỹ đạo xe được tính toán với ∆ 𝑦 = 3 (𝑐𝑚)
MÔ HÌNH XE ĐIỀU KHIỂN BẰNG ARDUINO
Bộ phận chính của hệ thống
- Đóng vai trò là bộ xử lý chính của hệ thống
- Nhận dữ liệu đo được từ cảm biến siêu âm, cảm biến này dùng để đo kích thước bãi đỗ
- Tính toán quỹ đạo di chuyển của xe
- Gửi tín hiệu đến cho Arduino Nano để điều khiển động cơ
- Từ chân D2 đến D9 dùng để giao tiếp với 4 cảm biến Ultrasonic
- Chân TX và RX để giao tiếp với Arduino Nano
- Chân D11 là chân nhận tín hiệu từ nút nhấn
- Chân A4 và A5 dùng để giao tiếp với LCD 1602 bằng I2C
- Chân 5V và GND để cấp nguồn cho các cảm biến Ultrasonic và LCD Và chân GND dùng để nối mass chung với Arduino Nano
Hình 5.1 Các chân kết nối trên Arduino Uno
- Nhận tín hiệu điều khiển từ Arduino Uno
- Chân D4, D5, D6, D7, D9 dùng để điều khiển động cơ thông qua Model L298N
- Chân TX và RX dùng để giao tiếp với Arduino Uno
- Chân GND dùng để nối chung mass với Arduino Uno
Hình 5.2 Các chân kết nối trên Arduino Nano
5.1.3 Kết nối hai Arduino với nhau thông qua giao tiếp UART
Trong dự án này, chúng tôi đã triển khai kết nối giữa hai bo mạch Arduino, một là Arduino Uno và một là Arduino Nano, thông qua cổng Serial để thực hiện truyền thông dữ liệu giữa chúng Điều này mang lại khả năng tương tác giữa hai bo mạch, mở ra nhiều khả năng ứng dụng trong lĩnh vực tự động hóa và điều khiển
Quá trình kết nối được thực hiện bằng cách nối chân TX (Transmit) của Arduino Uno với chân RX (Receive) của Arduino Nano và ngược lại Các chân GND của cả hai board được kết nối để tạo một đất chung, và cả hai Arduino được cấp nguồn từ một nguồn điện chung
50 Để kiểm soát và kiểm tra kết nối, chúng em đã viết hai chương trình riêng cho mỗi bo mạch Arduino Uno được thiết lập làm bên gửi tín hiệu, tín hiệu được gửi đi đến Arduino Nano để điều khiển động cơ
Hình 5.3 Kết nối hai Arduino bằng giao tiếp UART.
Các bộ phận của hệ thống
Trong dự án đỗ xe tự động, mô tơ DC 3V đóng vai trò quan trọng trong quá trình điều khiển chuyển động của xe Được thiết kế để hoạt động với điện áp thấp, mô tơ này không chỉ đảm bảo tính linh hoạt mà còn phù hợp với các ứng dụng yêu cầu kích thước nhỏ và hiệu suất ổn định
Mô tơ DC 3V được tích hợp vào hệ thống lái xe và cơ cấu chuyển động, chịu trách nhiệm cho việc kiểm soát hướng chuyển động của xe Nó là thành phần chủ chốt trong quá trình thực hiện các chuyển động tiến và lùi của xe khi nhận được tín hiệu điều khiển từ mạch điều khiển chính của hệ thống Đặc biệt, mô tơ này được tích hợp chặt chẽ với các cảm biến và mô-đun khác trong hệ thống, tạo ra một hệ thống đồng bộ và an toàn Nó không chỉ đảm bảo độ chính xác trong việc đỗ xe mà còn giúp tối ưu hóa hiệu suất và đảm bảo khả năng đáp ứng linh hoạt đối với môi trường đường phố thực tế
Hình 5.5 Cảm biến siêu âm HC-SR04
Cảm biến siêu âm HC-SR04, một linh kiện điện tử phổ biến trong lĩnh vực đo khoảng cách, đặc biệt là trong các ứng dụng của Arduino và các dự án điện tử sáng tạo Để hiểu rõ về cách cảm biến này hoạt động và cách tích hợp nó vào mạch điều khiển, cần tìm hiểu về các chân kết nối quan trọng
52 Ở đây ta có 2 chân tín hiệu của cảm biến:
- Trig (Trigger - Tín hiệu kích hoạt): Chân Trigger đóng vai trò làm ngõ vào để nhận tín hiệu kích hoạt Khi một xung ngắn được đưa vào chân này, cảm biến bắt đầu quá trình đo khoảng cách bằng cách gửi sóng siêu âm
- Echo (Tín hiệu phản xạ): Chân Echo, một chân quan trọng khác, chịu trách nhiệm phát ra tín hiệu sau khi cảm biến đã nhận được sóng siêu âm và đo được thời gian mà sóng này mất để quay trở lại Các giá trị thời gian này sẽ được sử dụng để tính toán khoảng cách
Thông qua các chân kết nối này, cảm biến HC-SR04 thực hiện quá trình gửi sóng siêu âm, đo thời gian và tính toán khoảng cách dựa trên công thức khoảng cách = (thời gian * vận tốc âm thanh)/2 với vận tốc âm thanh là 340m/s Điều này rất hữu ích trong các ứng dụng đo khoảng cách và phát hiện vật thể
Hình 5.6 Nguyên lý hoạt động của cảm biến siêu âm
Module điều khiển L298 là một công cụ linh hoạt và hiệu quả trong việc quản lý động cơ DC Với thiết kế có 4 lỗ tận dụng ở mỗi góc, module này giúp dễ dàng lắp đặt và tích hợp tản nhiệt, ngăn chặn quá trình quá nhiệt độ và bảo vệ IC, cho phép điều khiển động cơ với dòng điều khiển lên đến 2A
- Sử dụng chip L298N và tích hợp hai mạch cầu H
- Điện áp điều khiển từ +5V đến +12V
- Dòng tối đa của mỗi cầu H là 2A
- Điện áp của tín hiệu điều khiển từ +5V đến +7V
- Tín hiệu điều khiển có dòng từ 0 đến 36mA
- Công suất hao phí lên đến 20W (ở nhiệt độ 75°C)
- Nhiệt độ bảo quản từ -25°C đến +130°C
Cách sử dụng module L298 khá linh hoạt với IC tích hợp hai mạch cầu H Chân kết nối bao gồm:
- 4 chân INPUT (IN1, IN2, IN3, IN4) dành cho tín hiệu điều khiển
- 4 chân OUTPUT (OUT1, OUT2, OUT3, OUT4) kết nối với động cơ
- Hai chân ENA và ENB để kiểm soát hoạt động của cầu H Để điều khiển động cơ, người sử dụng có thể thực hiện theo các bước sau:
- ENA = 0 – 255 để điều khiển động cơ
- IN2/ IN1 = HIGH/LOW Để điều khiển chiều quay của động cơ
Tương tự, với ENB, IN3 và IN4, người sử dụng có thể điều chỉnh chiều quay và tốc độ của động cơ một cách linh hoạt và thuận tiện
Màn hình LCD 1602 sử dụng giao tiếp I2C là giải pháp tối ưu cho việc tiết kiệm chân kết nối và đơn giản hóa quá trình giao tiếp với LCD 1602 chỉ thông qua 4 chân, bao gồm một Màn hình LCD 1602 và một Module I2C giao tiếp
Hình 5.8 Màn hình LCD 1602 tích hợp I2C
Màn hình LCD 1602 thường được sử dụng rộng rãi trong nhiều ứng dụng, từ máy photo, máy fax, máy in laser cho đến các thiết bị công nghiệp và mạng như router Đặc biệt, nó là sự lựa chọn phổ biến trong việc học tập cũng như nghiên cứu để giao tiếp hiển thị với các vi điều khiển như Arduino, Raspberry Pi, STM32, v.v
- Màu sắc hiển thị: Đèn nền xanh dương
- Có độ tương phản cao và góc quan sát rộng
- Sử dụng chip HD44780 tích hợp bên trong để điều khiển LCD
- Dạng hiển thị: 2 dòng, mỗi dòng 16 ký tự
- Điện áp hoạt động: 5V DC
- Kích thước của Module: 80mm x 35mm x 9mm
- Kích thước hiển thị trên màn hình: 64.5mm x 16mm
Giải pháp sử giao tiếp I2C cho LCD không chỉ mang lại tính tiện ích trong giao tiếp mà còn đảm bảo chất lượng hiển thị ổn định và đẹp mắt trong các ứng dụng khác nhau.
Mô hình xe và sơ đồ kết nối các bộ phận trên mô hình
Mô hình xe sử dụng 4 cảm biến siêu âm: 2 cảm biến bên phải, 1 cảm biến ở đầu xe và
Kích thước của xe mô hình là:
- Góc đánh lái tối đa của bánh trước: 𝛿 𝑚𝑎𝑥 = 20 (độ)
- Chiều rộng của xe (khoảng cách giữa hai bánh xe): 𝑊 = 8 (cm)
- Khoảng cách giữa hai trục bánh xe: 𝑙 = 11 (cm)
- Khoảng cách từ tâm bánh xe trước đến phần phía trước: 𝑙 𝑓 = 3.5 (cm)
- Khoảng cách từ tâm bánh xe sau đến phần phía sau: 𝑙 𝑟 = 3 (cm)
Vị trí các cảm biến siêu âm trên mô hình:
Hình 5.10 Vị trí các cảm biến trên mô hình
Vì khoảng cách đo được nhỏ nhất của cảm biến là 2 cm, nên vị trí cảm biến U1 và U2 được đặt lùi vào trong 2 cm
5.3.2 Sơ đồ kết nối các bộ phận trên mô hình
Hình 5.11 Sơ đồ các chân kết nối của mô hình.
Tổng quan chương trình xử lý của hệ thống
Khi chúng ta kích hoạt hệ thống hỗ trợ đỗ xe tự động, đằng sau những động tác đơn giản là một chuỗi quyết liệt của các bước phức tạp và tính toán chính xác Hệ thống bắt đầu hành trình của mình bằng việc điều khiển xe tiến tới và kích hoạt chức năng quét bãi đỗ
Trước hết, hệ thống tìm kiếm bãi đỗ có chiều rộng phù hợp Nếu bãi đỗ thỏa mãn yêu cầu về chiều rộng, hệ thống sẽ chuyển sang bước tiếp theo Trong trường hợp ngược lại, hệ thống sẽ tiếp tục tìm kiếm các bãi đỗ khác, không ngừng quét và so sánh để đảm bảo rằng bãi đỗ được chọn là lựa chọn tối ưu
Khi hệ thống xác định được bãi đỗ phù hợp với yêu cầu, quá trình đo chiều dài của bãi đỗ bắt đầu Nếu chiều dài đáp ứng tiêu chuẩn, hệ thống sẽ dừng xe và bắt đầu tính toán quỹ đạo di chuyển vào bãi đỗ Ngược lại, nếu chiều dài không đủ, hệ thống sẽ tiếp tục tìm kiếm bãi đỗ khác và lặp lại quá trình đo và tính toán
Sau khi quỹ đạo di chuyển được tính toán và xác định, xe sẽ bắt đầu di chuyển theo đường quỹ đạo đó để vào bãi đỗ Điều này đòi hỏi sự chính xác cao trong tính toán và
58 điều khiển của hệ thống, giúp xe di chuyển một cách mượt mà và an toàn vào vị trí đỗ đã được xác định trước đó
Hình 5.12 Sơ đồ khối nguyên lý hoạt động của chương trình.
Chương trình xử lý
Ở đây vì sử dụng hai con Arduino là Arduino Uno và Arduino Nano Giao tiếp với nhau bằng cổng Serial nên sẽ có hai chương trình riêng
5.2.1 Chương trình của Arduino Uno
Trong chương 4, chúng ta đã tính toán chiều sâu của bãi đỗ 𝑊 𝑝 với giả định là bằng với chiều rộng của xe 𝑊 Tuy nhiên, để phản ánh đúng kích thước thực tế, 𝑊 𝑝 có thể lớn hơn và đòi hỏi điều chỉnh trong việc tính toán tọa độ của các điểm Để thực hiện điều này, ta có thể thay đổi tính toán tọa độ của các điểm từ chương 4, để đảm bảo mô hình tính toán phản ánh chính xác và linh hoạt với các biến động trong kích thước của bãi đỗ
Tọa độ điểm đỗ xe cuối cùng 𝑃 3 :
5.2.1.1 Sơ đồ khối thuật toán của chương trình
Hình 5.13 Sơ đồ khối thuật toán của Arduino Uno
Trong phần thực hiện mô phỏng này, ban đầu xe sẽ được đặt song song với bãi đỗ (hình 5.14a) Khi nhận được tín hiệu kích hoạt hệ thống từ nút nhấn thì chương trình sẽ bắt đầu chạy và xe di chuyển tiến tới Khi đó các cảm biến siêu âm bắt đầu thực hiện công việc đo khoảng cách và gửi giá trị về Arduino Uno Khi này, chương trình sẽ tính giá trị của U12, nếu giá trị U12 > 1 có nghĩa là cảm biến U1 bắt đầu đo được chiều rộng của bãi đỗ (hình 5,14b) int U12 = distance1 - distance2; Ở giai đoạn tiếp theo, chương trình sẽ bắt đầu tính chiều rộng của bãi đỗ (𝑊 𝑝 ), giá trị của 2 cảm biến siêu âm U1 và U2 được cập nhập liên tục trong quá trình này Và giá trị của U12 vẫn được tính tiếp, nếu U12 có giá trị nhỏ hơn chiều rộng của xe thì chương trình sẽ loại bãi đỗ đó và tìm bãi đỗ tiếp theo, nếu U12 lớn hơn hoặc bằng chiều rộng của xe thì Wp được trả về một giá trị bằng U12 do { int distance1, distance2, distance3, distance4; readUltrasonicSensors(distance1, distance2, distance3, distance4);
Sau khi xe đo được bãi đỗ có chiều rộng phù hợp, xe vẫn tiếp tục chạy tiến cho tới khi cảm biến U1 quét được đuôi xe của xe phía trước (xem hình 5.14c) Trong quá trình này, ta sử dụng một lệnh thời gian để đo khoảng thời gian từ khi cảm biến U1 bắt đầu đo bãi đỗ đến khi kết thúc Từ đó, suy ra được chiều dài của bãi đỗ bằng cách lấy vận tốc của xe nhân thời gian đi hết bãi đỗ float tinhLp(float Wp,float carSpeed)
{ int distance1, distance2, distance3, distance4; readUltrasonicSensors(distance1, distance2, distance3, distance4); unsigned long thoi_gian_bat_dau = millis(); while(distance1 > Wp)
62 int distance1, distance2, distance3, distance4; readUltrasonicSensors(distance1, distance2, distance3, distance4); distance1 = sonar1.read(); if(distance1 < Wp)
} unsigned long thoi_gian_ket_thuc = millis(); unsigned long thoi_gian = thoi_gian_ket_thuc - thoi_gian_bat_dau; float thoi_gian_phut = thoi_gian / 1000.0; float Lp = (carSpeed * thoi_gian_phut)*2.7; return Lp;
Nếu giá trị 𝐿 𝑝 nhỏ hơn 𝐿 𝑝 𝑚𝑖𝑛 thì bãi đỗ không phù hợp và xe sẽ tiếp tục chạy tiến để tìm bãi đỗ khác và bắt đầu tìm lại 𝑊 𝑝 Nếu 𝐿 𝑝 lớn hơn hoặc bằng 𝐿 𝑝 𝑚𝑖𝑛 thì bãi đỗ được xác định là phù hợp Khi đó xe chạy tiếp và sẽ dừng lại khi cảm biến U2 quét được đuôi xe phía trước (xem hình 5.14d) do{ int distance1, distance2, distance3, distance4; readUltrasonicSensors(distance1, distance2, distance3, distance4); distance2 = sonar2.read(); if(distance2 < Wp) { break; }
Sau khi xe đã tìm được bãi đỗ phù hợp thì chương trình bắt đầu tính toán vị trí hiện tại của xe, tọa độ các điểm 𝑃 1 , 𝑃 2 , 𝑃 3 và tọa độ tâm bán kính quay vòng 𝑂 1 và 𝑂 2 để tính quỹ đạo để xe di chuyển vào bãi đỗ Giá trị ∆ 𝑦 được đo từ cảm biến siêu âm U2
// TỌA ĐỘ O2 float xO2 = lr + a; float yO2 = (Wp - W/2) + Rmin; float O2[] = {xO2, yO2};
// TỌA ĐỘ P3 float xP3 = lr + a; float yP3 = Wp - W/2; float P3[] = {xP3, yP3};
// TỌA ĐỘ O1 float xO1 = (2 * (sqrt(sq(Rmin) - sq(Rmin + (Wp - W/2) - ((((Wp - W/2) + Rmin) + ((Wp + dy + (W / 2)) - Rmin)) / 2))) + (lr + a))) - (lr + a); float yO1 = (Wp + dy + (W / 2)) - Rmin; float O1[] = {xO1, yO1};
// TỌA ĐỘ P1 float xP1 = (2 * (sqrt(sq(Rmin) - sq(Rmin + (Wp - W/2) - ((((Wp - W/2) + Rmin) + ((Wp + dy + (W / 2)) - Rmin)) / 2))) + (lr + a))) - (lr + a); float yP1 = Wp + dy + (W / 2); float P1[] = {xP1, yP1};
// TỌA ĐỘ P2 float xP2 = sqrt(sq(Rmin) - sq(Rmin + (Wp - W/2) - ((((Wp - W/2) + Rmin) + ((Wp + dy + (W / 2)) - Rmin)) / 2))) + (lr + a); float yP2 = (((Wp - W/2) + Rmin) + ((Wp + dy + (W / 2)) - Rmin)) / 2; float P2[] = {xP2, yP2};
Tiếp theo chương trình sẽ tính độ dài quãng đường 𝑠 0 để xe di chuyển từ vị trí hiện tại đến điểm 𝑃 1 Sau đó tính độ dài cung 𝑠 1 , 𝑠 2 và thời gian để xe đi hết cung 𝑠 1 , 𝑠 2
Sau tính toán xong, chương trình sẽ điều khiển xe di chuyển vào bãi đỗ bằng cách gọi
2 chương trình con để gửi lệnh đến cho Arduino Nano và điều điều khiển động cơ void dichuyendenP1(float dx_global, float carSpeed) { float thoigiandx = abs(dx_global) / carSpeed; if (dx_global > 0) {
Trong cả quá trình, Arduino Uno sẽ gửi tín hiệu 1 byte đến Arduino Nano thông qua cổng Serial bằng cách như sau:
Giá trị sẽ được in ở cổng Serial và Arduino Nano sẽ nhận được như sau:
Hình 5.14 Giá trị in ở cổng Serial a)
65 b) c) d) Hình 5.15 Các trạng thái khi xe tìm bãi đỗ
5.2.2 Chương trình của Arduino Nano:
Arduino Nano nhận tín hiệu từ Arduino Uno thông qua cổng Serial và thực hiện các lệnh Tín hiệu nhận được là tín hiệu 1 byte là số từ 1 đến 8 Tùy theo từng tín hiệu mà chương trình sẽ cho chạy các hàm con để điều khiển xe di chuyển tiến hay lùi và đánh lái lái trái hay phải void loop() { motorSpeed = 50; if (Serial.available() > 0) {
66 char signal = Serial.read(); // Đọc dữ liệu từ cổng serial if (signal == '0'){dungxe();Serial.println("0");} else if (signal == '1') {chaytien();Serial.println("1");} else if (signal == '2'){chaylui();Serial.println("2");} else if (signal == '3') {dungxetien();Serial.println("3");} else if (signal == '4') {dungxelui();Serial.println("4");} else if (signal == '5'){chayluidanhlaiphai();Serial.println("5");} else if (signal == '6'){chayluidanhlaitrai();Serial.println("6");} }
Kết quả chạy mô hình
Quá trình chạy mô hình:
Hình A: Khi xe được kích hoạt hệ thống thì xe sẽ bắt đầu quét tìm bãi đỗ phù hợp
Hình B: Xe nhận tìm được bãi đỗ phù hợp thì xe dừng lại và bắt đầu tính toán quỹ đạo di chuyển Vùng màu đỏ là vùng được xác định để xe di chuyển vào bãi đỗ
Hình C: Xe bắt đầu đánh lái và di chuyển vào bãi đỗ
Hình D: Xe hoàn tất quá trình đỗ xe
Hình 5.16 Quá trình chạy mô hình