1. Trang chủ
  2. » Giáo Dục - Đào Tạo

nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản

41 4 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Xe Tự Hành
Tác giả Tiêu Quách Anh Tuấn, Trần Đình Nam, Hồ Tấn Kiệt, Nguyễn Trần Tú Uyên, Huỳnh Đăng Khoa
Người hướng dẫn TS. Lê Thanh Phúc
Trường học Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh
Chuyên ngành Cơ Khí Động Lực
Thể loại Đồ Án Môn Học
Năm xuất bản 2024
Thành phố TP. Thủ Đức
Định dạng
Số trang 41
Dung lượng 6,83 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI (4)
    • 1.1. Mở đầu (4)
    • 1.2. Giới thiệu đề tài (4)
    • 1.3. Mục tiêu (5)
    • 1.4. Phạm vi nghiên cứu (6)
    • 1.5. Phương pháp nghiên cứu (6)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VỀ XE TỰ HÀNH (6)
    • 2.1. Sự hình thành và phát triển (6)
    • 2.2. Tình hình nghiên cứu xe tự hành trong nước (11)
    • 2.3. Các định hướng phát triển xe tự hành trong nước (12)
    • 2.4. Cơ sở xây dựng mô hình xe điều khiển tự hành (13)
    • 2.5. Nguyên lý hoạt động của mô hình xe điều khiển tự hành (16)
  • CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ (16)
    • 3.1. Sơ đồ khối (16)
    • 3.2. Sơ đồ nguyên lý (17)
    • 3.3. Sơ đồ giải thuật (20)
    • 3.4. Thi công (21)
    • 3.5. Kết quả mô phỏng và thực nghiệm (23)
    • 3.6. Phương pháp lập trình và code điều khiển xe tự hành (24)
  • TÀI LIỆU THAM KHẢO (41)

Nội dung

Sử dụng công nghệ tiên tiến điều hướng tự nhiên, các xe tự hành khôngchỉ giúp tối ưu hóa quá trình lái xe mà còn mang lại nhiều lợi ích về tính an toàn vàhiệu suất vận hành.Cụ thể, hệ th

TỔNG QUAN VỀ ĐỀ TÀI

Mở đầu

Trên hành trình tiến bộ của ngành công nghiệp ô tô, sự bùng nổ của công nghệ kỹ thuật đang tạo ra những đột phá đầy ấn tượng Đặc biệt, trong bối cảnh thị trường ngày càng đòi hỏi sự hiệu quả và an toàn cao trong vận hành xe hơi, việc sử dụng các công nghệ tiên tiến đang trở thành xu hướng hàng đầu.

Một trong những giải pháp đáng chú ý nhất trong lĩnh vực này là việc phát triển xe tự lái Sử dụng công nghệ tiên tiến điều hướng tự nhiên, các xe tự hành không chỉ giúp tối ưu hóa quá trình lái xe mà còn mang lại nhiều lợi ích về tính an toàn và hiệu suất vận hành.

Cụ thể, hệ thống dẫn đường tự nhiên dựa vào các cảm biến và camera đã trở thành một phần quan trọng của công nghệ xe tự hành Không chỉ giảm bớt ảnh hưởng đến không gian lái xe, công nghệ này còn cho phép sự linh hoạt cao hơn trong việc thiết lập và điều chỉnh bố trí điểm, quy trình vận hành Điều này không chỉ giảm thiểu chi phí mà còn tăng cường tính hiệu quả và an toàn trong quá trình vận hành.

Với tiềm năng và ưu điểm vượt trội, không ngạc nhiên khi việc áp dụng công nghệ xe tự lái đang trở thành một phần không thể thiếu trong ngành công nghệ ô tô. Đây không chỉ là một xu hướng mà còn là một bước đột phá quan trọng, định hình lại tương lai của ngành công nghiệp ô tô với những tiêu chuẩn mới về an toàn, hiệu quả và tiện ích.

Giới thiệu đề tài

Xe tự hành hiểu đơn giản là xe tự lái, nó khả năng điều hướng dựa vào cảm nhận môi trường mà không cần con người phải can thiệp Trong thời đại công nghệ ngày nay, việc phát triển xe tự hành đang thu hút sự quan tâm lớn từ cả người tiêu dùng và ngành công nghiệp ô tô Từ khi được nhắc đến lần đầu trong các dự án nghiên cứu sơ khai ở thập kỷ 1920-1930, đến khi trở thành một trong những xu hướng công nghệ nổi bật trong thập kỷ gần đây, công nghệ xe tự hành đã trải qua một quá trình phát triển dài và đầy thách thức.

Một trong những lợi ích chính của xe tự hành nằm ở khả năng nâng cao tính an toàn giao thông Với khả năng phát hiện và phản ứng nhanh hơn con người, các hệ thống xe tự hành có thể giảm thiểu nguy cơ tai nạn do lỗi của lái xe Bằng cách đó, không chỉ bảo vệ tính mạng và tài sản của người tham gia giao thông mà còn giảm tải gánh nặng cho hệ thống y tế và bảo hiểm.

Ngoài ra, xe tự hành còn mang đến nhiều tiện ích cho người sử dụng Không cần phải tự lái xe sẽ giúp họ tiết kiệm thời gian và công sức, có thể tập trung vào các hoạt động khác trong khi di chuyển như làm việc, giải trí hoặc thư giãn Đặc biệt, đối với người cao tuổi, người khuyết tật hoặc những người không có khả năng lái xe, công nghệ xe tự hành sẽ giúp họ dễ dàng di chuyển mà không phải phụ thuộc vào người khác.

Tuy nhiên, việc triển khai công nghệ xe tự hành cũng đặt ra nhiều thách thức. Một trong số đó là vấn đề về pháp lý và an ninh Cần có sự phối hợp chặt chẽ giữa các cơ quan chức năng, doanh nghiệp và người dùng để đảm bảo rằng việc sử dụng xe tự hành được thực hiện một cách an toàn và có hiệu quả Ngoài ra, việc đào tạo và nâng cao nhận thức cho người sử dụng cũng là một yếu tố quan trọng để tăng cường sự chấp nhận và sử dụng công nghệ này.

Trong tương lai, công nghệ xe tự hành có tiềm năng phát triển mạnh mẽ hơn nữa Không chỉ đơn thuần là phương tiện vận chuyển, xe tự hành còn có thể trở thành một phần của hệ thống giao thông thông minh, giúp cải thiện quản lý luồng giao thông và giảm thiểu kẹt xe trong các đô thị đông đúc Đồng thời, việc tích hợp công nghệ xe tự hành vào các dịch vụ giao hàng và logistics cũng sẽ mang lại nhiều tiện ích và hiệu quả trong quá trình vận chuyển hàng hóa.

Công nghệ xe tự hành không chỉ là một trong những đổi mới quan trọng của ngành công nghiệp ô tô mà còn là một điểm sáng trong việc cải thiện an toàn, tiện ích và hiệu suất trong giao thông và vận tải Tuy nhiên, để thực sự khai thác được tiềm năng của công nghệ này, cần có sự hợp tác và phối hợp chặt chẽ giữa các bên liên quan, cùng với sự chấp nhận và ứng dụng thông minh từ phía người dùng.

Mục tiêu

Xe tự hành đang trở thành xu hướng không thể phủ nhận trong ngành công nghiệp ô tô thời đại số Để đạt được mục tiêu vận hành chính xác và trơn tru, các nhà nghiên cứu cần khắc phục những hạn chế hiện tại Đồ án này hướng tới việc xây dựng mô hình xe tự hành có khả năng bám đường hiệu quả, nắm vững nguyên lý hoạt động của hệ thống linh kiện Bên cạnh đó, đồ án cũng sẽ mở rộng nghiên cứu và phát triển thuật toán lập trình giúp xe tự hành bám sát làn đường và tránh vật cản encountered.

Phạm vi nghiên cứu

Đồ án này tập trung nghiên cứu xe tự hành vận hành dựa trên một số linh kiện như: ESP, ESP32-CAM,…Ngoài ra, xe tự hành còn sử dụng code phần mềm Python để xử lý hình ảnh từ camera và xe sẽ vận hành dựa vào những dữ liệu cũng như hình ảnh mà nó nhận được.

Phương pháp nghiên cứu

Để thực hiện các mục tiêu của đề tài, các em sử dụng các phương pháp nghiên cứu sau:

- Phương pháp nghiên cứu tài liệu

- Phương pháp phân tích và tổng hợp

- Phương pháp thực nghiệm trên mô hình

CƠ SỞ LÝ THUYẾT VỀ XE TỰ HÀNH

Sự hình thành và phát triển

a) Khái niệm về xe tự hành.

Xe tự hành AVG “Automated Guided Vehicle”, có nghĩa là “xe tự động được điều khiển” là loại xe được thiết kế để di chuyển mà không cần sự can thiệp của người lái Thông thường, chúng được trang bị các công nghệ và cảm biến để tự định hướng, phát hiện và phản ứng với môi trường xung quanh, nhưng có sự kiểm soát từ xa hoặc điều khiển hoàn toàn tự động Các hệ thống trí tuệ nhân tạo và học máy thường được sử dụng để giúp xe tự hành phân tích và hiểu môi trường đường đi, đối phó với tình huống giao thông và đưa ra quyết định an toàn.

Xe tự hành được biết đến như xe tự lái, một chiếc xe có khả năng hoàn thành nhận môi trường và điều hướng theo lập trình đã có mà không cần sự can thiệp của con người. b) Lịch sử phát triển xe tự hành

Xe tự hành AGV “Automated Guided Vehicle” có nguồn gốc từ những năm

1950, khi các nhà khoa học và kỹ sư bắt đầu tiến hành, nghiên cứu và phát triển các loại xe tự động để thay thế con người trong việc vận chuyển hàng hóa trong môi trường sản xuất Mãi cho đến năm 1970, công nghệ này mới các ký sư áp dụng rộng rãi trong các nhà máy sản xuất ô tô.

+Điều khiển bằng dây điện:

Xe tự hành đầu tiên được trình làng ra thị trường vào những năm 1950 của Barrett Electronics ở Northbrook, Illinois Tại thời điểm này, xe tự hành chỉ đơn giản là một chiếc xe kéo đi theo dây điện được chôn dưới sàn.

Dây tín hiệu được đặt sâu khoảng 2(cm) dưới bề mặt sàn Dây được dùng để điều hướng cho AGV và để truyền tín hiệu radio Có 1 cảm biến được lắp đặt ở dưới gầm của AGV, vị trí gần mặt đất nhất Cảm biến này sẽ phát hiện vị trí tương đối của tín hiệu vô tuyến được truyền từ dây Thông tin chuyển đến được sử dụng để điều chỉnh mạch lái, làm cho AGV đi theo đúng lộ trình dây tín hiệu được chôn sẵn dưới sàn nhà xưởng.

+Điều khiển bằng điện từ:

Thấy được những khó khan cũng như những bất lợi khi sử dụng dây điện được lắp đặt dưới sàn để điều hướng vào năm 1960 Các kỹ sư lúc này đã cho ra đời phương pháp điều hướng xe bằng băng từ hay còn gọi là nam châm cuộn Thay vì sử dụng dây điện được lắp đặt cố định dưới sàn, người ta sẽ sử dụng băng từ được dán trên sàn, chúng có thể dễ dàng được gỡ bỏ và dời theo lộ trình khác nếu lộ trình di chuyển từ vị trí cấp hàng tới vị trí sản xuất cần thay đổi, điều này làm giảm chi phí đầu tư và linh hoạt trong khâu chuẩn bị Có 2 loại băng được sử dụng:Loại từ tính và loại màu.

Nghiên cứu và phát triển về xe tự hành đã được tiến hành từ ít nhất là những năm 1920, với những thử nghiệm đầy hứa hẹn diễn ra vào năm

1950, công việc này đã được bắt đầu kể từ đó Những chiếc xe tự hành đầu tiên xuất hiện vào năm 1980, do trường đại học Carnegie Mellon của Navlab bởi dự án ALV (Autonomous Land Vehicle) năm 1984.

-Hãng Mercedes-Benz và Bundeswehr của trường đại học Munich với dự án Prometheus EUREKA vào năm 1987.Từ lúc đó, nhiều công ty lớn và các tổ chức nghiên cứu của các hãng xe đã phát triển xe tự hành bao gồm: Mercedes-Benz, General Motors, Continental Automotive Systems, IAV, Autoliv Inc., Bosch, Nissan, Renault, Toyota, Audi, Hyundai Motor Công ty, Volvo, AKKA Technologies, Peugeot, Tesla Motors, Local Motors, Vislab từ Đại học Parma, Đại học Oxford và Google

Vào tháng 7 năm 2013, Vislab đã chứng minh khả năng tự hành của BRAIVE trên tuyến đường giao thông công cộng Năm 2015, sáu địa phương tại Mỹ (Nevada, Florida, California, Virginia, Michigan và Washington, DC) cho phép thử nghiệm xe tự động hoàn toàn trên đường công cộng Trong khi các phương tiện tự hành được thử nghiệm rộng rãi trong điều kiện thời tiết bình thường trên đường phố thông dụng, Ford đã thực hiện thử nghiệm xe tự hành của họ trong những điều kiện khắc nghiệt như tuyết phủ dày.

Chiếc xe đầu tiên được coi là xe tự hành được tạo ra bởi Francis Houdina Người đứng sau khái niệm này đã sử dụng thuật ngữ "radio-controlled car" (xe điều khiển bằng radio) Chiếc xe điều khiển vô tuyến đầu tiên được chế tạo bởi RCA Tuy nhiên, những thử nghiệm về xe tự hành lúc bấy giờ chưa thực sự thành công như kỳ vọng.

Hình 2.1: Xe tự hành điều khiển bằng RCA.

-Hiện nay,có rất nhiều công nghệ được tích hợp trên xe nhầm mục đích điều khiển chính xác hơn trong quá trình vận hành Công nghệ tự động với hệ thống phanh, làm cho chiếc xe kiểm soát tốc độ và thay đổi làn đường thúc đẩy sự thoải mái của người lái và hành khách Các kỹ sư đã tạo ra nó bằng máy ảnh, radar và cảm biến sonar 360 độ Công nghệ nhúng để gửi tín hiệu giao thông theo tình hình hiện tại và khiến hệ thống phải hành động phù hợp khi các máy ảnh quét được vật cản phí trước xe Nó cũng cho phép đỗ xe tự động khi đến đích Với xu hướng hiện công nghệ ngày càng phát triển hơn trong tương lai thì xu hướng xe tự hành là mục tiêu nghiên cứu tất yếu của các hãng xe trên toàn thế giới

-Gần gũi hơn là hãng xe TOYOTA ,đã giới thiệu Prius hybrid vào năm 2003. Chiếc xe trở nên phổ biến cho bãi đỗ xe tự động nơi tất cả các cảm biến và camera hoạt động tốt Trong dòng thời gian xe tự lái , điều này mang lại niềm phấn khích lớn.

Xu hướng sau đó được tiếp nối bởi BMW cũng như cách này hệ thống đỗ xe tự động.

Hình 2.2: Xe đỗ tự động.

*Ưu điểm và nhược điểm của xe tự hành Ưu điểm:

- Rất an toàn, công nghệ tự hành có thể giảm nguy cơ tai nạn giao thông do loại bỏ yếu tố con người gây ra như mệt mỏi, lơ đễnh, hoặc sai lầm lái xe.

- Xe tự hành giúp người lái tiết kiệm thời gian và công sức bằng cách cho phép họ làm việc, thư giãn hoặc tận hưởng thời gian đi lại một cách thoải mái.

- Công nghệ tự hành có thể tối ưu hóa việc lái xe để tiết kiệm nhiên liệu và giảm khí thải.

Tình hình nghiên cứu xe tự hành trong nước

Trước bối cảnh nghiên cứu xe tự hành đang nóng lên trên toàn thế giới, ngày 2/11/2016, tập đoàn FPT đã chính thức phát động cuộc thi "Cuộc đua số" với chủ đề "Tìm kiếm ý tưởng, giải pháp cho tương lai của xe tự hành" Cuộc thi nhằm thu hút các tài năng trong nước và quốc tế, cùng nhau chung tay tìm ra những giải pháp đột phá cho bài toán hóc búa này, góp phần đưa Việt Nam lên bản đồ công nghệ thế giới.

“Xe không người lái” nhằm mục đích giúp cho các bạn trẻ Việt Nam xây dựng một nền tảng vững chắc để đón nhận cơ hội và thành công trong cuộc cách mạng số đang diễn ra hết sức mạnh mẽ trên toàn thế giới

- Và để có cái nhìn toàn diện về công nghệ ô tô và robot trong cuộc cách mạng công nghiệp 4.0 này, ngày 15/4/2017, tại Hà Nội, FPT Software đã hợp tác với Vietnamworks về tổ chức hội thảo về "Tương lai công nghệ ô tô và robot trong cuộc cách mạng công nghiệp 4.0" FPT Software cũng giới thiệu mô hình thử nghiệm xe tự hành do công ty tự nghiên cứu phát triển từ tháng 8/2016 Các nhóm nghiên cứu đã tiến hành lắp ráp và lập trình xe tự hành trong vài tháng với các linh kiện nhập từ nhiều nước Theo đại diện FPT Software, xe có thể tự động nhận diện vật cản, leo trèo bãi đất, bãi cát, leo dốc đến 45 độ, lội nước ngập sâu 10cm, lội sình lầy, lội tuyết

- Xe chạy được trên các cung đường đơn giản và tránh được vật cản nhờ thuật toán phát hiện biên của ảnh để xác định đường di chuyển của xe, nhờ vào việc đọc dữ liệu từ cảm biến siêu âm, tính tốc độ động cơ, điều khiển động cơ PID cơ bản cho vòng tốc độ và vị trí

- Tại thời điểm hiện tại trong nước mới chỉ có tập đoàn FPT tuyên phong đi đầu trong việc tham gia nghiên cứu công nghệ xe không người lái.

- Tính đến ngày hôm nay Việt Nam đang từng bước gia nhập thị trường xe tự lái để đón đầu cuộc cách mạng 4.0 và chinh phục “cơn lốc” phát triển VinFast đã tiên phong với việc sản xuất và công bố mẫu xe chạy điện đầu tiên với nhiều tính năng hỗ trợ lái thông minh mang tên VFe34 Chỉ sau 3 tháng mở bán, sản phẩm này đã nhận về kỷ lục đặt cọc lên đến 25.000 đơn hàng Điều này chứng tỏ dấu hiệu tích cực về bước ngoặc phát triển cho ngành công nghiệp xe tự hành trong nước.

- Trang Vnbussiness nêu rõ, hiện các doanh nghiệp trong nước đã cho thấy tiềm năng và trình độ khi có thể chế tạo một số công nghệ để sản xuất một chiếc xe tự lái như: phần mềm điều khiển, bản đồ được lập trình sẵn, radar, cảm biến lidar và camera, Ngoài ra, một số tập đoàn công nghệ đã và đang triển khai các dự án liên quan đến ô tô tự lái cho khoảng 40 khách hàng lớn trên toàn cầu

- Hơn nữa, theo báo Nhân dân, cái nôi đào tạo hàng nghìn kỹ sư - Đại học BáchKhoa Hà Nội đã xây dựng chương trình giảng dạy tinh hoa Elitech theo khuôn khổ chuẩn mực mới để cung cấp nguồn nhân lực cho nhu cầu thiết kế, chế tạo và sản xuất ô tô tự hành thông minh trong tương lai.

Các định hướng phát triển xe tự hành trong nước

Phát biểu trên trang tin Vnbusiness, Phó giáo sư - Tiến sĩ - Phó chủ tịch Hội

Tự động hóa Việt Nam cho biết: với xu hướng phát triển và mật độ giao thông tại các đô thị lớn như hiện nay thì trong khoảng 10 - 20 năm nữa, xe tự hành sẽ sớm áp đảo các phương tiện đang thịnh hành Động lực để thúc đẩy các doanh nghiệp tham gia vào cuộc đua phát triển công nghệ xe tự lái tại Việt Nam bao gồm:

-Thứ nhất, để sản phẩm này có thể chạy trên đường phố thì Việt Nam cần hoàn thiện hơn về mặt công nghệ, nâng cấp và cải tiến chất lượng cơ sở hạ tầng, lắp đặt thiết bị hỗ trợ, đèn tín hiệu và hệ thống biển báo đúng chuẩn

-Thứ hai, xe hơi tự hành cần phải đạt tiêu chuẩn của cơ quan Quản lý An toàn giao thông Quốc gia Mỹ (NHTSA) Theo đó, tổ chức NHTSA sẽ sử dụng 6 thang đo cấp độ tự động để kiểm tra an toàn và khả năng cải thiện tình trạng giao thông ở khu vực đô thị lớn của một chiếc ô tô tự lái Các cấp độ xe tự lái được phân từ 0 đến 5 đảm nhiệm những vai trò khác nhau Do vậy, định hướng quan trọng nhất mà các doanh nghiệp cần làm là nắm rõ và áp dụng quy trình thử nghiệm nghiêm ngặt để đánh giá được tình hình thực tế và cho ra đời sản phẩm phù hợp với điều kiện tại Việt Nam. Những tiêu chí quan trọng cần được các chuyên gia lưu ý khi thử nghiệm gồm có: xác định mức độ đánh giá an toàn mới, sử dụng phương pháp tiếp cận trong thế giới thực, vận hành thử nghiệm tập lái theo yêu cầu để phê duyệt, kết hợp thử nghiệm trên thế giới ảo lẫn thực tế, sử dụng thiết bị điều khiển từ xa có độ chính xác cao.

-Thứ ba, người tham gia giao thông cần ý thức hơn về hành vi và thói quen đi trên đường của mình để đảm bảo an toàn Lợi ích của xe tự lái là có thể thay thế con người làm chủ vô lăng đến 90% Khả năng này ngày càng được cải thiện để gia tăng độ an toàn và hạn chế một số rủi ro nhất định Tuy nhiên, người điều khiển vẫn nên hiểu rõ nguyên lý xe tự hành để sử dụng đúng cách đồng thời bảo vệ chính mình Cụ thể là: không phụ thuộc vào ô tô tự lái, tự chủ điều khiển, nắm vững tính năng an toàn trên xe, bảo dưỡng và theo dõi trình trạng xe thường xuyên.

Cơ sở xây dựng mô hình xe điều khiển tự hành

Cấu tạo xe điều khiển tự hành gồm có các bộ phận sau:

+ Khung xe : Được làm từ vật liệu mica.Mica là một vật liệu nhẹ và cứng, giúp giảm trọng lượng của xe mà vẫn đảm bảo tính cứng cáp và ổn định Mica có tính cách điện tốt, giúp tránh tình trạng dẫn điện không mong muốn trong các mạch điện của xe.chống ăn mòn và chịu nhiệt tốt.

+ Motor điều khiển bánh xe hay (động cơ DC): Động cơ DC là loại động cơ điện một chiều, nó chuyển đổi năng lượng điện thành năng lượng cơ học Thông thường, động cơ DC sẽ lấy năng lượng điện thông qua dòng điện trực tiếp và chuyển đổi năng lượng thành vòng quay cơ học.

Bố trí 4 động cơ DC gắn với 4 bánh xe được đặt giữa 2 khung và cố định lại như hình bên dưới.

Hình 2.3: khung xe điều khiển.

Phần tiếp theo các chi tiết chính hay còn gọi là phần dầu não của 1 chiếc xe điều khiển tự hành gồm các linh kiên điện tử sau:

ESP32 là dòng vi điều khiển được sản xuất bởi Espressif Systems, sở hữu khả năng kết nối Wi-Fi và Bluetooth tích hợp Với vi xử lý tốc độ cao và bộ nhớ lớn, ESP32 có thể xử lý các tác vụ phức tạp, đồng thời được thiết kế để tiết kiệm năng lượng, tối ưu cho ứng dụng như xe điều khiển từ xa hoặc thiết bị di động.

+ ESP32-CAM: là một phiên bản của vi điều khiển ESP32 tích hợp camera, được Espressif Systems phát triển Nó kết hợp cả hai khả năng của ESP32 với khả năng ghi hình và chụp ảnh ESP32-CAM có một camera tích hợp, cho phép ghi hình video và chụp ảnh trực tiếp từ thiết bị mà không cần phải sử dụng một camera ngoài, có khả năng kết nối Wi-Fi, cho phép nó gửi dữ liệu hình ảnh và video qua mạng Wi-

Fi, hoặc thậm chí là streaming trực tiếp.

+ L298N một cầu H kép, có thể điều khiển hai động cơ DC độc lập hoặc một động cơ DC hai chiều (quay thuận và quay ngược) một cách độc lập, có khả năng chịu dòng lớn, cho phép điều khiển động cơ DC có công suất cao Nó có thể được điều khiển bằng tín hiệu điện từ các vi điều khiển như Arduino, Raspberry Pi hoặc bất kỳ vi điều khiển nào khác có thể tạo ra tín hiệu điện L298N thường đi kèm với bảo vệ nhiệt độ và quá dòng, giúp bảo vệ mạch khi hoạt động ở điều kiện tải cao Có thể được sử dụng trong nhiều ứng dụng khác nhau, từ robot di động đến hệ thống tự động hóa và điều khiển động cơ.

Nguyên lý hoạt động của mô hình xe điều khiển tự hành

Máy tính nhận tính hiệu từ esp32-cam sau đó xử lý hình ảnh thông qua openCv python nhận biết được đâu làm đường lane, từ đó xách định điểm giữa và các điểm trái phải, sau đó song sánh độ lệnh của điểm giữa với hai điểm trái - phải sau đó máy tính đóng vai trò là một client khai thác dữ liệu từ esp32 đóng vai tròng là server, máy tính sẽ gửi các luồn dữ liệu để ESP32 thực hiện các chương trình cho xe đi thẳng,quẹo trái, quẹo phải hoặc đứng yên.

TÍNH TOÁN VÀ THIẾT KẾ

Sơ đồ khối

Hình 3.1: Ảnh sơ đồ khối

- Khối cảm biến: Sử dụng ESP32 cam

- Khối điều khiển trung tâm: Sử dụng ESP32 để nhận tín hiệu từ ESP32 cam và truyền cho L298N

- Khối chấp hành: Sử dụng mạch cầu L298N nhận tín hiệu từ ESP32 truyền qua để điều khiển tốc độ quay của motor

- Khối động cơ: Sử dụng 4 động cơ DC để tăng tốc và giảm tốc

+ Sử dụng mạch giảm áp 9V để điều khiển 4 motor

+ Sử dụng mạch giảm áp 5V để điều khiển esp32 và esp32 cam

Sơ đồ nguyên lý

Hình 3.2: Ảnh sơ đồ nguyên lý

ESP32 ESP32-CAM L298N Mạch giảm áp 5V

Mạch giảm áp 9V ĐỘNG CƠ

Thi công

Bước 1: Gắn ốc vít và cố định 4 bánh xe vào phần đế

Hình 3.5: Ảnh thực tế thiết kế khung xe

Bước 2: Lắp ESP32, ESP32 - CAM, L298N, Công tắc, Đế pin + pin

Hình 3.7 Ảnh thực tế sau khi nối dây

Kết quả mô phỏng và thực nghiệm

- Sau quá trình lắp ráp và tinh chỉnh sản phẩm đã hoàn thành

Hình 3.8 Ảnh mô phỏng chạy thửKết quả thực nghiệm

Phương pháp lập trình và code điều khiển xe tự hành

Micro Python chay trên firmware được flash cho ESP32, firmware này được cung cấp trên website của Python Việc cài đặt cũng được hướng dẫn trên website Thông qua Micro Python, ESP32 có thể chạy nhiều chương trình Python bằng cách nạp thông qua pip rshell trên Python Các chương trình này liên kết với nhau và thực thi các tín hiệu được gửi từ máy tính đến ESP32 thông qua giao thức truyền nhận UDP, trong đó ESP32 là socket và máy tính là client.

Tín hiệu hình ảnh từ xe sẽ được xử lý bằng thư viện OpenCV trong Python để nhận biết làn đường Các hàm của thư viện sẽ xác định tọa độ điểm trái và phải, từ đó xác định điểm giữa Góc lái xe được điều chỉnh dựa trên độ lệch của điểm giữa so với hai điểm kia ESP32 sẽ gửi tín hiệu xung đến mạch cầu để điều khiển xe chạy.

Code Mirco Python cho Esp32

# notify print('RUN: boot.py')

# notify print('RUN: main.py')

# import necessary methods on boot import motor import web web.connect() import server server.soc()

3 Motor import machine from machine import Pin, PWM import time

# Pin definition p1 = machine.Pin(15, machine.Pin.OUT) p2 = machine.Pin(16, machine.Pin.OUT) p3 = machine.Pin(17, machine.Pin.OUT) p4 = machine.Pin(18, machine.Pin.OUT)

# Initialize PWM pwm_pin = machine.Pin(19) pwm = machine.PWM(pwm_pin, freqP) pwm_pin1 = machine.Pin(21) pwm1 = machine.PWM(pwm_pin1, freqP)

# Arduino "map" function implementation def convert(x, i_m, i_M, o_m, o_M): return max(min(o_M, (x - i_m) * (o_M - o_m) // (i_M - i_m) + o_m), o_m)

# Easy to use function for setting motor speed and direction def motorSpeed(m1):

## pwm.duty(pwm1) if m1 == 1: # Forward p1.on() p2.off() pwm.duty(340) p3.off() p4.on() pwm1.duty(340) elif m1 == 2: # Reverse p1.off() p2.on() pwm.duty(340) p3.on() p4.off() pwm1.duty(340) elif m1 == 3: # Left p1.on() p2.off() pwm.duty(100) p4.on() pwm1.duty(500) elif m1 == 4: # Right p1.on() p2.off() pwm.duty(500) p3.off() p4.on() pwm1.duty(100) else: # Stop p1.off() p2.off() p3.off() p4.off()

4 Server.py import json # để deserialze list import motor # điều khiển động cơ trên xe def soc(): import socket # Import socket module from machine import Pin, PWM

# servo pin setup p1 = Pin(13) servo = PWM(p1, freqP)

# socket setup s = socket.socket() # Tạo một đối tượng socket host = '172.20.10.2' # Địa chỉ IP tĩnh của Esp32 port = 12345 # Dành một cổng cho dịch vụ của bạn s.bind((host, port)) # Ràng buộc với cổng s.listen(5) # Bây giờ đợi kết nối từ client def con(): motor.motorSpeed(0) while True: try: c, addr = s.accept() # Thiết lập kết nối với client print('Got connection from', addr) while True: d = "thank you for connection" msg = str.encode(data, 'utf-8') c.send(msg) a = c.recv(1024) com = a.decode() # deserialize dictionary de = json.loads(com) if len(de) < 3: angle = int(de['a']) speed = int(de["w"]) servo.duty(angle) print(angle, speed) if abs(speed) > 0: motor.motorSpeed(speed) else: motor.motorSpeed(0) else: if de["w"] == 1 and de["s"] == 0 and de["a"] == 0 and de["d"] == 0: motor.motorSpeed(1) if de["w"] == 0 and de["s"] == 1 and de["a"] == 0 and de["d"] == 0: motor.motorSpeed(2) if de["w"] == 0 and de["s"] == 0 and de["a"] == 1 and de["d"] == 0: motor.motorSpeed(3) if de["w"] == 0 and de["s"] == 0 and de["a"] == 0 and de["d"] == 1: motor.motorSpeed(4) if de["w"] == 0 and de["s"] == 0 and de["a"] == 0 and de["d"] == 0: motor.motorSpeed(0)

## motor.motorSpeed(0) print(de) # for debugging except Exception as e: print("Error:", e) break finally: c.close() # Đóng kết nối print("Connection closed") con() soc()

# setting up wireless connection def connect(): import network import time import machine

#wifi credentials ssid = "python1" password = "1234567890" station = network.WLAN(network.STA_IF) if station.isconnected() == True: print("Already connected") return station.active(True) if machine.reset_cause() != machine.SOFT_RESET:

# configuration below MUST match your home router settings!!

# CHECK DHCP RANGE OF YOUR ROUTER BEFORE ASSIGNING

#if you are using laptop as access point: station.ifconfig(('static ip you want to assign', 'subnet mask', 'host ip', 'host ip')) station.connect(ssid, password) while station.isconnected() == False: pass print("Connection successful")

#turn on onboard led for 5 sec to notify the successful connection from machine import Pin p = Pin(2, Pin.OUT) print(station.ifconfig()) p.on() time.sleep(5) p.off()

// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality

// Ensure ESP32 Wrover Module or other board with PSRAM is selected

// Partial images will be transmitted if image exceeds buffer size

// You must select partition scheme from the board menu that has at least 3MB APP space.

// Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15

// seconds to process single frame Face Detection is

ENABLED if PSRAM is enabled as well

//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM

//#define CAMERA_MODEL_ESP_EYE // Has PSRAM

//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM

//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM

//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM //#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM

//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM

//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM

#define CAMERA_MODEL_AI_THINKER // Has PSRAM

//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM

//#define CAMERA_MODEL_XIAO_ESP32S3 // Has PSRAM

//#define CAMERA_MODEL_ESP32_CAM_BOARD

//#define CAMERA_MODEL_ESP32S2_CAM_BOARD

//#define CAMERA_MODEL_ESP32S3_CAM_LCD

//#define CAMERA_MODEL_DFRobot_FireBeetle2_ESP32S3 // Has PSRAM

//#define CAMERA_MODEL_DFRobot_Romeo_ESP32S3 // Has PSRAM

// ==========================/small> const char* ssid = "python1"; const char* password = "1234567890"; void startCameraServer(); void setupLedFlash(int pin); void setup() {

To establish a camera configuration, the Serial.println() function is utilized The camera_config_t struct is initialized with the LED controller channel and timer, as well as the GPIO numbers for the data and clock pins The configuration also specifies the frame size (UXGA) and pixel format (JPEG for streaming) The external clock frequency is set to 20 million Hz, and the GPIO numbers for the power down and reset pins are configured.

//config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; config.fb_location = CAMERA_FB_IN_PSRAM; config.jpeg_quality = 12; config.fb_count = 1;

// if PSRAM IC present, init with UXGA resolution and higher JPEG quality

// for larger pre-allocated frame buffer. if(config.pixel_format == PIXFORMAT_JPEG){ if(psramFound()){ config.jpeg_quality = 10; config.fb_count = 2; config.grab_mode = CAMERA_GRAB_LATEST;

// Limit the frame size when PSRAM is not available config.frame_size = FRAMESIZE_SVGA; config.fb_location = CAMERA_FB_IN_DRAM;

// Best option for face detection/recognition

#if CONFIG_IDF_TARGET_ESP32S3 config.fb_count = 2;

#if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP);

// camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) {

Serial.printf("Camera init failed with error 0x%x", err); return;

} sensor_t * s = esp_camera_sensor_get();

// initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1); // flip it back s->set_brightness(s, 1); // up the brightness just a bit s->set_saturation(s, -2); // lower the saturation

// drop down frame size for higher initial frame rate if(config.pixel_format == PIXFORMAT_JPEG){ s->set_framesize(s, FRAMESIZE_QVGA);

#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM) s->set_vflip(s, 1); s->set_hmirror(s, 1);

#if defined(CAMERA_MODEL_ESP32S3_EYE) s->set_vflip(s, 1);

// Setup LED FLash if LED pin is defined in camera_pins.h

#if defined(LED_GPIO_NUM) setupLedFlash(LED_GPIO_NUM);

WiFi.setSleep(false); while (WiFi.status() != WL_CONNECTED) { delay(500);

Serial.println("WiFi connected"); startCameraServer();

Serial.print("Camera Ready! Use 'http://");

// Do nothing Everything is done in another task by the web server delay(10000);

Code Python import socket import numpy as np import requests from io import BytesIO from PIL import Image

# Tạo một đối tượng socket s = socket.socket() host = '172.20.10.2' # Địa chỉ IP của ESP32 port = 12345 # Cổng dịch vụ. s.connect((host, port)) def key_out(steering):

# Chuyển đổi giá trị lái xe thành các lệnh điều khiển if steering < -0.5: return [0, 1, 0, 0] # Rẽ trái elif steering > 0.5: return [1, 0, 0, 0] # Rẽ phải else: return [0, 0, 1, 0] # Đi thẳng

# Hàm chuyển đổi ảnh sang ảnh nhị phân def binarize_image(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

_, binary_image = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY) return binary_image

# Hàm xử lý hình ảnh và gửi lệnh điều khiển def process_image_and_send(): while True:

# Chụp ảnh từ máy chủ web camera ESP32 esp32_url = "http://172.20.10.5/capture" # Thêm '/capture' vào URL try: response = requests.get(esp32_url) img = Image.open(BytesIO(response.content)) frame = np.array(img) except Exception as e: print("Lỗi khi nhận ảnh từ ESP32:", e) continue

# Chuyển đổi ảnh sang ảnh nhị phân binary_image = binarize_image(frame)

# Xử lý ảnh để tính toán góc lái và vẽ các vạch kẻ đường và điểm bên trái, phải, giữa steering_angle, lane_image, middle_point, left_point, right_point calculate_control_signal(binary_image)

# Vẽ các vạch kẻ đường lên ảnh gốc frame_with_lane = cv2.addWeighted(frame, 1, cv2.cvtColor(lane_image, cv2.COLOR_GRAY2BGR), 0.5, 0)

# Vẽ các điểm bên trái, phải, giữa lên ảnh if left_point != -1: cv2.circle(frame_with_lane, (left_point, frame.shape[0]), 5, (0, 0, 255), -1) if right_point != -1: cv2.circle(frame_with_lane, (right_point, frame.shape[0]), 5, (0, 0, 255), -1) if middle_point is not None: cv2.circle(frame_with_lane, middle_point, 5, (255, 0, 0), -1)

When no lane lines are detected (left_point == -1 and right_point == -1), the vehicle is commanded to stop (key = [0, 0, 0, 0]) Otherwise, the steering angle is used to generate key commands (key = key_out(steering_angle)) These commands are encoded ({"a":key[0],"d":key[1],"w":key[2],"s":key[3]}) and sent as a message (msg) to the vehicle.

# Hiển thị ảnh cv2.imshow("Frame", frame_with_lane) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows()

# Hàm phát hiện và tính toán góc lái def calculate_control_signal(img):

# Xử lý ảnh để tìm vạch kẻ đường và tính toán góc lái img_lines = find_lane_lines(img) left_point, right_point = find_left_right_points(img_lines)

# Tạo ảnh trắng để vẽ các vạch kẻ đường lên lane_image = np.zeros_like(img)

# Vẽ các vạch kẻ đường lên ảnh trắng if left_point != -1 and right_point != -1: cv2.line(lane_image, (left_point, img.shape[0]), (right_point, img.shape[0]), 255, 10)

# Tính toán điểm giữa middle_point = None if left_point != -1 and right_point != -1: middle_point = ((left_point + right_point) // 2, img.shape[0])

# Tính toán góc lái dựa trên vị trí của điểm giữa của xe steering_angle = 0 if middle_point is not None: center_diff = img.shape[1] // 2 - middle_point[0] steering_angle = float(center_diff * 0.02) return steering_angle, lane_image, middle_point, left_point, right_point

# Hàm phát hiện vạch kẻ đường def find_lane_lines(img): blurred = cv2.GaussianBlur(img, (11, 11), 0) edges = cv2.Canny(blurred, 150, 200) return edges

# Hàm tìm điểm trái và điểm phải def find_left_right_points(image): im_height, im_width = image.shape[:2]

# Vạch kẻ sử dụng để xác định tâm đường interested_line_y = int(im_height * 0.9) interested_line = image[interested_line_y, :]

# Xác định điểm bên trái và bên phải left_point = -1 right_point = -1 lane_width = 100 center = im_width // 2

# Tìm điểm bên trái và bên phải bằng cách duyệt từ tâm ra for x in range(center, 0, -1): if interested_line[x] > 0: left_point = x break for x in range(center + 1, im_width): if interested_line[x] > 0: right_point = x break

# Dự đoán điểm bên phải khi chỉ nhìn thấy điểm bên trái if left_point != -1 and right_point == -1: right_point = left_point + lane_width

# Dự đoán điểm bên trái khi chỉ thấy điểm bên phải if right_point != -1 and left_point == -1: left_point = right_point - lane_width return left_point, right_point

# Bắt đầu xử lý hình ảnh và gửi lệnh điều khiển process_image_and_send()

Ngày đăng: 22/05/2024, 10:14

HÌNH ẢNH LIÊN QUAN

Hình 2.1: Xe tự hành điều khiển bằng RCA. - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 2.1 Xe tự hành điều khiển bằng RCA (Trang 8)
Hình 2.2: Xe đỗ tự động. - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 2.2 Xe đỗ tự động (Trang 9)
Hình 2.3: khung xe điều khiển. - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 2.3 khung xe điều khiển (Trang 14)
Hình 2.4: ESP 32. - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 2.4 ESP 32 (Trang 14)
Hình 2.5: ESP32-CAM. - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 2.5 ESP32-CAM (Trang 15)
Hình 3.1: Ảnh sơ đồ khối - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.1 Ảnh sơ đồ khối (Trang 17)
Hình 3.2: Ảnh sơ đồ nguyên lý - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.2 Ảnh sơ đồ nguyên lý (Trang 18)
Hình 3.3. Ảnh nối dây - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.3. Ảnh nối dây (Trang 20)
Hình 3.4: Lưu đồ giải thuật 3.4. Thi công - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.4 Lưu đồ giải thuật 3.4. Thi công (Trang 21)
Hình 3.7. Ảnh thực tế sau khi nối dây - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.7. Ảnh thực tế sau khi nối dây (Trang 22)
Hình 3.5: Ảnh thực tế thiết kế khung xe - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.5 Ảnh thực tế thiết kế khung xe (Trang 22)
Hình 3.8. Ảnh mô phỏng chạy thử Kết quả thực nghiệm - nghiên cứu và phát triển code lập trình cho xe tự hành có thể bám đường và tránh được vật cản
Hình 3.8. Ảnh mô phỏng chạy thử Kết quả thực nghiệm (Trang 23)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w