Tải bản đầy đủ (.pdf) (83 trang)

Đồ án Xe tự hành tránh vật cản sử dụng opencv, raspberry, c++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.5 MB, 83 trang )

MỤC LỤC
DANH MỤC CÁC HÌNH VẼ ...................................................................... 3
LỜI NÓI ĐẦU .............................................................................................. 6
Chương 1: TỔNG QUAN VỀ XE TỰ HÀNH VÀ BÀI TOÁN ĐIỀU KHIỂN
XE TỰ HÀNH ...................................................................................................... 8
1.1. Tổng quan về xe tự hành .................................................................... 8
1.2. Tình hình nghiên cứu xe tự hành trên thế giới và trong nước. ........ 13
1.3. Đặt bài toán xây dựng mô hình và hệ thống điều khiển xe tự hành 17
1.4. Kết luận chương 1 ............................................................................ 19
Chương 2: CƠ SỞ XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN CHO XE
TỰ HÀNH ........................................................................................................... 20
2.1. Tổng quan về các thư viện sử dụng cho hệ thống điều khiển xe tự hành . 20
2.1.1. Thư viện Opencv ....................................................................... 20
2.1.2. Thư viện wiringPi. .................................................................... 29
2.2. Logic mờ và bộ điều khiển mờ ........................................................ 31
2.2.1. Lịch sử phát triển của logic và bộ điều khiển mờ. .................... 31
2.2.2. Khái niệm và các phép toán trên tập mờ................................... 33
2.2.3. Luật hợp thành mờ .................................................................... 35
2.2.4. Phương pháp giải mờ ................................................................ 37
2.2.5. Cấu trúc và các bước xây dựng bộ điều khiển mờ.................... 41
2.3. Kết luận chương 2 ............................................................................ 44
Chương 3: XÂY DỰNG MÔ HÌNH VÀ CHƯƠNG TRÌNH ĐIỀU KHIỂN
CHO XE TỰ HÀNH ........................................................................................... 45


3.1. Xây dựng mô hình............................................................................ 45
3.1.1. Xây dựng cấu trúc hệ thống và sơ đồ kết nối thiết bị ............... 45
3.1.2. Các thiết bị phần cứng sử dụng trong hệ thống. ....................... 48
3.2. Xây dựng chương trình điều khiển cho xe tự hành ......................... 57
3.2.1. Xây dựng phần điều khiển bám đường ..................................... 58
3.2.2. Xây dựng phần điều khiển tránh vật cản. ................................. 74


3.3. Thử nghiệm và đánh giá................................................................... 78
3.4. Kết luận chương 3 ............................................................................ 81
KẾT LUẬN CHUNG.................................................................................. 82
TÀI LIỆU THAM KHẢO........................................................................... 83


DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Xe hơi trong năm 2017 ............................................................... 11
Hình 1.2. Xe hơi trong năm 2021 ............................................................... 12
Hình 1.3. Xe hơi trong năm 2026 ............................................................... 13
Hình 2.1. Độ cao, miền xác định, miền tin cậy của tập mờ ........................ 34
Hình 2.2. Mô tả hàm liên thuộc của luật hợp thành.................................... 36
Hình 2.3. Các nguyên lý giải mờ theo phương pháp cực đại ..................... 39
Hình 2.4. Các khối chức năng của bộ điều khiển mờ ................................. 41
Hình 2.5. Sơ đồ cấu trúc bộ điều khiển mờ ................................................ 42
Hình 3.1. Sơ đồ liên kết các phần cứng ...................................................... 45
Hình 3.2. Sơ đồ kết nối các thiết bị phần cứng ........................................... 46
Hình 3.3. Sơ đồ bố trí của xe mô hình ........................................................ 47
Hình 3.4. Xe sau khi được lắp ráp .............................................................. 48
Hình 3.5. Raspberry Pi 3 ............................................................................. 49
Hình 3.6. GPIO Raspberry Pi 3 model B .................................................... 51
Hình 3.7. Sơ đồ chân của module L298...................................................... 52
Hình 3.8. Cảm biến siêu âm HC-SR04 ....................................................... 53
Hình 3.9. Động cơ servo ............................................................................. 54
Hình 3.10. Sơ đồ chân của động cơ RC servo ............................................ 55
Hình 3.11. Sơ đồ hoạt động của động cơ RC Servo ................................... 56
Hình 3.12. Camera A4-Tech PK-720G....................................................... 56
Hình 3.13. Sơ đồ thực hiện chương trình.................................................... 58



Hình 3.14. Phạm vi tính tâm đường và tâm đường..................................... 59
Hình 3.15. Sơ đồ thực hiện thuật toán tìm tâm đường................................ 59
Hình 3.16. Vùng ảnh left và right ............................................................... 60
Hình 3.17. Xe nằm giữa hai vạch đường .................................................... 61
Hình 3.18. Xe nằm bên ngoài bên phải cả hai vạch đường ........................ 62
Hình 3.19. Xe nằm bên trong bên phải một vạch đường ............................ 62
Hình 3.20. Xe nằm bên ngoài bên trái cả hai vạch đường .......................... 62
Hình 3.21. Xe nằm bên trong bên trái một vạch đường ............................. 63
Hình 3.22. Xe nằm giữa, mất vạch đường bên phải ................................... 63
Hình 3.23. Xe lệch sang phải, mất vạch đường bên phải ........................... 63
Hình 3.24. Xe nằm giữa, mất vạch đường bên trái ..................................... 64
Hình 3.25. Xe lệch sang trái, mất vạch đường bên trái .............................. 64
Hình 3.26. Xe không bắt được vạch đường ................................................ 64
Hình 3.27. Góc thực .................................................................................... 65
Hình 3.28. Sơ đồ thực hiện của bộ điều khiển mờ...................................... 66
Hình 3.29. Định nghĩa tập mờ cho biến ngôn ngữ gocthuc ........................ 67
Hình 3.30. Định nghĩa tập mờ cho biến ngôn ngữ DeltaPWM .................. 70
Hình 3.31. Hàm thuộc đầu ra của luật hợp thành với giá tri gocthuc=26,25... 73
Hình 3.32. Giải mờ sử dụng phương pháp điểm trọng tâm cho luật Sum-Min .. 73
Hình 3.33. Sơ đồ thực hiện thuật toán tìm vật cản ..................................... 74
Hình 3.34. Ảnh đầu vào .............................................................................. 75
Hình 3.35. Ảnh sau khi lọc màu ................................................................. 75
Hình 3.36. Vật cản sau khi tìm được .......................................................... 76


Hình 3.37. Sơ đồ thực hiện thuật toán điều khiển tránh vật cản ................. 76
Hình 3.38. Vật cản nằm bên trái đường ...................................................... 76
Hình 3.39. Vật cản nằm bên phải đường .................................................... 77
Hình 3.40. Vật cản nằm giữa đường ........................................................... 77
Hình 3.41. Tâm đường mới trường hợp vật cản nằm bên trái đường ......... 77

Hình 3.42. Tâm đường mới trường hợp vật cản nằm bên phải đường ....... 78
Hình 3.43. Tâm đường mới trường hợp vật cản ở giữa đường................... 78
Hình 3.44. Xe chạy thử nghiệm với đường vòng tròn ................................ 79
Hình 3.45. Thử nghiệm xe tránh vật cản .................................................... 80


6

LỜI NÓI ĐẦU
Trên thế giới đã từng trải qua ba cuộc cách mạng công nghiệp lớn. Sau mỗi
một cuộc cách mạng, nó làm thay đổi thế giới trên tất cả các mặt kinh tế, xã hội
và văn hóa. Và hiện nay thế giới đang bước vào cuộc cách mạng công nghiệp lần
thứ tư. Đây được gọi là cuộc cách mạng số, thông qua các công nghệ như Internet
vạn vật (IoT), trí tuệ nhân tạo (AI), thực tế ảo (VR), tương tác thực tại ảo (AR),
mạng xã hội, điện toán đám mây, phân tích dữ liệu lớn (SMAC) và đặc biệt là xe
tự hành.
Các chuyên gia dự đoán, trong khoảng 15 đến 20 năm nữa, xe tự hành sẽ áp
đảo các phương tiện đang thịnh hành hiện nay. Hiện đã có rất nhiều tập đoàn sản
xuất xe hơi và công nghệ lớn trên thế giới đã tham gia vào cuộc chạy đua phát
triển xe hơi công nghệ tự lái thông minh (gọi tắt là xe tự lái, xe tự hành) mà không
cần đến bàn tay can thiệp của con người, trong đó có những tên tuổi nổi bật như
Tesla, Daimler, Google.
Yếu tố quan trọng để xe có thể tự động lái được đó chính là phần xử lý bám
đường và tránh vật cản. Nhận thấy được tầm quan trọng này, nên trong đồ án này
em sẽ nghiên cứu hệ thống điều khiển bám đường, tránh vật cản cho xe tự hành,
sử dụng camera xác định làn đường và cảm biến HC-SR04 để đo khoảng cách đến
vật cản. Với điều kiện đường có phân chia làn bởi các vạch sơn trắng như trên
đường cao tốc thực tế.
Để thực hiện được đồ án này em sử dụng phần cứng là máy tính nhúng
Raspberry Pi 3 có cài đặt hệ điều hành raspbian-jessie, kết hợp với camera f4tech

và cảm biến siêu âm HC-SR04. Để viết chương trình điều khiển em sử dụng ngôn
ngữ C++, thư viện opencv và wiringPi.
Nội dung của đồ án này gồm các phần:
- Chương 1: Tổng quan về xe tự hành và bài toán điều khiển xe tự hành.


7
- Chương 2: Cơ sở xây dựng chương trình điều khiển cho xe tự hành.
- Chương 3: Xây dựng mô hình và chương trình điều khiển cho xe tự hành.
Trong quá trình làm đồ án, do trình độ chuyên môn còn hạn chế nên không
thể tránh khỏi những sai sót, rất mong được sự đóng góp của các thầy, cô và bạn
đọc để đồ án được hoàn thiện hơn.
Em xin chân thành cảm ơn Thiếu tá – Tiến sĩ – Thầy giáo Phạm Văn Nguyên,
cùng các thầy cô trong bộ môn Tự động và kỹ thuật tính đã tận tình, hướng dẫn,
chỉ bảo và tạo điều kiện thuận lợi nhất để em có thể hoàn thành đồ án này.
Hà nội, ngày tháng năm 2017
Học viên thực hiện

Lê Văn Thu


8

Chương 1: TỔNG QUAN VỀ XE TỰ HÀNH VÀ BÀI TOÁN
ĐIỀU KHIỂN XE TỰ HÀNH
1.1. Tổng quan về xe tự hành
a) Khái niệm về xe tự hành
Xe tự hành, cũng được biết đến như xe tự lái, là một chiếc xe có khả năng
hoàn thành các khả năng vận chuyển con người của xe truyền thống. Nó có khả
năng cảm nhận môi trường và điều hướng mà không cần sự can thiệp của con

người[3].
b) Lịch sử ra đời và phát triển
Các thí nghiệm về xe tự hành đã được tiến hành ít nhất là từ những năm
1920, thử nghiệm đầy hứa hẹn đã diễn ra vào những năm 1950 và 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 những
năm 1980, do trường đại học Carnegie Mellon của Navlab trong dự án ALV
(Autonomous Land Vehicle) năm 1984, Mercedes-Benz và Bundeswehr của
trường đại học Munich trong dự án Prometheus EUREKA vào năm 1987. kể từ
đó, nhiều công ty lớn và các tổ chức nghiên cứu đã 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, Tesla
Motors, Peugeot, Local Motors, AKKA Technologies, Vislab từ Đại học Parma,
Đại học Oxford và Google. Vào tháng Bảy năm 2013, Vislab chứng minh
BRAiVE, một chiếc xe tự hành di chuyển trên một tuyến đường giao thông công
cộng. Trong năm 2015, năm quốc gia Mỹ (Nevada , Florida , California , Virginia,
và Michigan) cùng với Washington, DC cho phép thử nghiệm xe tự động hoàn
toàn trên đường công cộng. Trong khi xe ô tô tự trị nói chung đã được thử nghiệm
trong thời tiết bình thường trên những con đường bình thường, Ford đã thử nghiệm
xe tự trị của họ trên những con đường phủ đầy tuyết.


9
c) Ưu điểm của xe tự hành
- Tiết kiệm được vô số thời gian của con người.
- Giải quyết các vấn đề về môi trường.
- Hạn chế tắc đường.
- Các xe có thể tự giao tiếp với nhau, giảm thiểu được các tai nạn giao thông.
- Giảm được số tài xế, nhân viên chỉ dẫn giao thông công cộng.
- Kết quả nghiên cứu cho thấy người điều khiển là nguyên nhân chính gây ra
tai nạn giao thông. Với xe tự hành, sự phân tâm khi mệt mỏi hay say rượu sẽ

không ảnh hưởng tới khả năng làm chủ trên đường bởi nhiệm vụ này được máy
tính đảm nhận.
- Đã giảm bớt gánh nặng đặt lên người điều khiển trên đường cao tốc hay
khi tắc đường bởi tất cả đều được tự động hóa. Từ phát hiện điểm mù, cảnh báo
làn đường khi khởi hành, quản lý gia nhập làn đường và thậm chí tự đậu xe, ...
- Từ trước đến nay, điều khiển một chiếc xe chỉ dành cho người có thể vượt
qua kì thi lấy bằng lái. Những người quá trẻ hoặc quá già, người khuyết tật hoặc
có triệu chứng tâm lý không thể có được trải nghiệm này. Nhưng với xe tự hành,
giao thông cá nhân sẽ mở ra tất cả các phân khúc đơn lẻ của xã hội. Việc làm chủ
một thiết bị di chuyển hiện đại sẽ nằm trong tầm tay của tất cả mọi người.
- Về mặt thẩm mỹ, xe tự hành sẽ thay đổi cách nhìn nhận một chiếc xế hộp,
hoặc ít nhất về khía cạnh nội thất sẽ rất khác biệt. Vô-lăng, nút bấm, bàn đạp
phanh, ga, cần sang số, đồng hồ tốc độ và nhiều cụm thiết bị khác bỗng trở nên
thừa thãi. Những nguyên tắc cứng nhắc như ghế ngồi phải hướng về phía trước sẽ
không còn hiệu lực. Nội thất xe sẽ được thiết kế phục vụ nhu cầu sinh hoạt và giải
trí của người sử dụng. Bạn có thể ăn, ngủ, nghỉ, thậm chí tận hưởng cuộc sống
ngay trong lúc xe vẫn đang chạy trên đường. Xét về tính ứng dụng, xe tự hành


10
giống như một ngôi nhà lưu động và trở thành giải pháp cho hiện trạng đô thị chật
chội ngày nay.
d) Nhược điểm của xe tự hành
- Hệ thống cơ sở hạ tầng còn chưa phù hợp với xe tự hành.
- Kinh phí xây dựng hệ thống giao thông, biển bảng rất lớn.
- Giá thành của các xe sẽ tương đối cao.
- Công nghệ còn chưa thay thế được con người hoàn toàn.
- Vấn đề việc làm sẽ mất cân đối: nhiều tài xế, nhân viên giao thông bị thất
nghiệp.
- Hệ thống này không thực sự hoàn hảo bởi sự phụ thuộc vào điều kiện môi

trường. Tính hiệu quả chỉ phát huy tối đa khi môi trường xung quanh hội tụ đủ
tiêu chuẩn nhất định.Thời tiết không thuận lợi sẽ ảnh hưởng tới độ chính xác cũng
như an toàn của xe khi vận hành.
- Tuy nhiên, rào cản lớn nhất không đến từ khía cạnh kỹ thuật mà là luật
pháp. Ví dụ như khi tai nạn xảy ra, thật khó xác định lỗi thuộc về người ngồi trên
xe hay không. Luật pháp dù có cải tiến vẫn chậm chạp hơn tốc độ phát triển của
công nghệ. Một số tiểu bang Hoa Kỳ đã chú ý tới điều luật dành cho xe tự động
và bán tự động.
e) Dự đoán tương lai của xe tự hành
Ôtô trong tương lai sẽ được trang bị nhiều công nghệ tự lái hiện đại, giúp
làm giảm căng thẳng và mệt mỏi cho các lái xe, đồng thời giảm thiểu khả năng va
chạm với phương tiện khác.
Công nghệ xe tự hành hứa hẹn mang đến cho con người sự an toàn, thoải
mái và cá nhân hoá hơn.


11
Ở Nhật dường như đang tiến gần hơn tới việc vận hành hệ thống giao thông
công cộng một cách tự động sau khi một công ty nước này cho trình làng xe buýt
không người lái, có tên Robot Shuttle.
Hiện tại các công nghệ dành cho dòng xe cao cấp trước đây trở thành tiêu
chuẩn như: bluetooth, GPS, cảm biến đỗ xe. Xe hơi bây giờ còn được tích hợp
một trạm phát Wi-Fi, cho phép người trên xe có thể truy cập internet và nó thực
thụ trở thành một thiết bị di động với nhiều tính năng khác nhau (xem Hình 1.1).
Đến năm 2021 sẽ có khoảng 10 chiếc xe tự hành đầu tiên được bán ra trên
thị trường, nó được tích hợp thêm công nghệ giao tiếp giữa xe với xe giúp chúng
cảm nhận và “nhìn thấy nhau”.

Hình 1.1. Xe hơi trong năm 2017
Trên xe các tiện ích đa phương tiện như âm nhạc, video, dữ liệu được tích

hợp sẵn trong kết nối internet trong xe dựa vào công nghệ điện toán đám mây.
Người dùng sử dụng chúng thông qua câu lệnh bằng giọng nói (xem Hình 1.2).


12

Hình 1.2. Xe hơi trong năm 2021
Đến năm 2026, xe tự hành có thể di chuyển hoàn toàn tự động, nó đủ tinh vi
và hiện đại để được sử dụng phổ biến. Khi đó sẽ có pháp luật và quy định riêng
dành cho xe tự hành. Các vấn đề đạo đức cũng được quan tâm và thực hiện (xem
Hình 1.3).
Công nghệ xe tự hành hứa hẹn mang đến cho con người sự an toàn, thoải
mái và cá nhân hoá hơn. Hiện tại thì đã có khá nhiều mẫu xe được trang bị các
công nghệ tự động như tự ra/vào garage, hay tự động đỗ xe, … Có lẽ phải mất
đến vài năm nữa cho đến khi chúng ta có những mẫu xe tự hành thực thụ có thể
chạy trên đường một cách an toàn.
Cuộc đua để đưa những chiếc xe tự hành đến với công chúng đang "nóng"
hơn bao giờ hết khi những người khổng lồ công nghệ đang thử vận may ở lĩnh
vực mới mẻ này và được coi là dòng xe của tương lai.


13

Hình 1.3. Xe hơi trong năm 2026
1.2. Tình hình nghiên cứu xe tự hành trên thế giới và trong nước.
a) Tình hình nghiên cứu xe tự hành của thế giới
Vào năm 2014, để thấy được tình hình nghiên cứu xe tự hành đang ở cấp độ
nào, hiệp hội kỹ sư xe hơi (SAE) đã đưa ra 6 cấp độ cho xe tự hành[12].
Cấp độ 0 hoàn toàn không có tính năng tự lái. Nhiều ô tô đang được lưu
thông hiện nay được xếp vào cấp độ này, kể cả những ô tô được trang bị các tính

năng như cảnh báo va chạm phía trước hay công nghệ cảnh báo điểm mù. Ở cấp
độ này, người ngồi phía sau vô lăng phải tự mình điều khiển hoàn toàn các tính
năng của xe, như lái xe, gia giảm tốc độ, hay phanh khi xe đang chạy.
Cấp độ 1 được trang bị một vài tính năng hỗ trợ người lái. Các loại ô tô tự
lái ở cấp độ này có thể có một hoặc nhiều hệ thống điều khiển tốc độ của xe hoặc
hướng lái, nhưng không thể đồng thời vận hành cả hai tính năng này. Nhiều mẫu
ô tô hiện nay được trang bị tính năng Cruise Control nhằm giúp chiếc xe có thể tự
vận hành ở tốc độ mong muốn của người lái xe, từ đó giảm tải việc liên tục phải
giữ chân ga trên một quãng đường dài. Đây là ví dụ cho một tính năng tự hành
cấp độ một. Tới năm 2021, hầu hết ô tô bán ra tại Mỹ sẽ được trang bị hệ thống


14
phanh tự động khẩn cấp, vốn cũng là một tính năng của xe tự hành cấp độ 1. Bên
cạnh đó, một vài hãng xe như Subaru còn có cả hệ thống chủ động kiểm soát làn
đường, qua đó có thể tự động lái xe trở về đúng làn đường khi xe chạy chệch làn
trên những xe thuộc phân khúc phổ thông, nhưng các hệ thống này không thịnh
hành bằng hệ thống Cruise Control.
Cấp độ 2 được trang bị các hệ thống hỗ trợ người lái nhiều hơn. Nhiều nhà
sản xuất ô tô hạng sang hiện đã cung cấp các xe tự hành cấp độ hai có thể đồng
thời tự điều khiển hướng lái và tốc độ, mà không cần sự tương tác từ người lái
trong một khoảng thời gian ngắn (dưới 1 phút hay vài giây). Hiện tại, các “ông
lớn” như Volvo, Mercedes-Benz và BMW đều đã cung cấp các tính năng tự hành
cấp độ hai, nhưng tất cả đều yêu cầu người lái phải theo dõi điều kiện môi trường
xung quanh khi xe di chuyển. Hệ thống tự hành cấp độ hai nổi tiếng nhất hiện nay
có lẽ là Autopilot của Tesla. Hệ thống này có thể đo lực xoay trên vô lăng để đảm
bảo rằng người lái đang tập trung lái xe. Xe tự hành ở cấp độ này không thể tự
điều khiển ở mọi trường hợp, bao gồm cả việc nhập làn vào đường cao tốc hay lái
xe trong trình trạng tắc đường. Hiện nay các xe tự hành đã được ra mắt trên thế
giới mới chỉ dừng lại ở cấp độ này.

Cấp độ 3 là tự hành có điều kiện. Không giống như các xe tự hành cấp độ 2,
xe tự hành cấp độ 3 có thể tự điều khiển trong mọi tình huống, đồng thời liên tục
tự theo dõi điều kiện đường xá. Song không giống như những cấp độ tự hành cao
hơn, xe cấp độ 3 sẽ chuyển sang chế độ người lái điều khiển khi chúng không thể
xử lý tình huống. Theo định nghĩa của SAE, xe tự hành cấp độ 3 sẽ yêu cầu người
lái can thiệp khi hệ thống tự lái ngừng hoạt động. Tuy nhiên, một số nhà sản xuất
ô tô cho rằng đây là một vấn đề về an toàn đối với người lái vì họ quá phụ thuộc
vào các hệ thống này và có thể không sẵn sàng để can thiệp khi cần thiết. Đây
cũng là lý do mà nhiều hãng xe như Ford hay Volvo cho biết họ sẽ bỏ qua giai
đoạn này.


15
Cấp độ 4 được mô tả là gần như tự hành. Ford và Volvo gần đây đều loan
báo sẽ cho ra đời những chiếc xe tự hành cấp độ 4 trước năm 2021. Hiện chưa rõ
liệu khách hàng bình thường có được sử dụng những chiếc xe này, hay chúng chỉ
dành cho các hoạt động chia sẻ xe hoặc chỉ có mặt ở một số thành phố nhất định,
nhưng rõ ràng là nhiều hãng xe đang hướng mục tiêu tới cấp độ này. Xe tự hành
cấp độ 4 sẽ không cần đến sự tương tác của người lái nữa mà thay vào đó sẽ tự
động dừng lại khi các hệ thống tự hành ngừng hoạt động. Đây là điểm khác biệt
quan trọng của xe cấp độ 4 so với cấp độ 3. Nhiều nhà sản xuất ô tô như Tesla hay
Mercedes-Benz đã tích hợp tính năng tự giảm dần tốc độ xe đến khi dừng hẳn
hoặc bật đèn cảnh báo nguy hiểm khi phát hiện tín hiệu cho thấy người lái không
tương tác với xe. Nhiều hãng xe cho rằng việc tích hợp cả tính năng tự lái và có
người lái là thừa và tốn kém. Volvo là hãng xe duy nhất cho đến nay cho biết họ
sẽ tung ra chiếc XC90 tự hành cấp độ 4 với cả hai tính năng này.
Cấp độ 5 là những xe tự hành hoàn toàn. Dù cấp độ 4 và cấp độ 5 có vẻ như
không mấy khác biệt, song trên thực tế, đây là một bước nhảy vọt khi xe tự hành
cấp độ năm hoàn toàn không cần đến sự tương tác của người lái trong quá trình
vận hành. Các bộ phận cơ bản của xe như vô lăng, chân ga và chân phanh sẽ không

còn cần thiết trên một chiếc xe tự hành cấp độ này bởi chúng không cần sự điều
khiển của con người nữa.
Hiện nay trên thế giới đã có rất nhiều hãng tham gia nghiên cứu xe tự hành
và trong tương lai gần họ sẽ ra mắt và thử nghiệm một số loại xe tự hành vào đời
sống như:
- Audi: Chiếc Audi A7 đã hoàn tất hành trình tự lái dài 885km vào năm 2016
tuy nhiên Audi vẫn chưa có tuyên bố chính thức về ngày ra mắt của chiếc xe. Audi
cũng là hãng xe đầu tiên nhận được sự cho phép vận hành xe tự hành ở Nevada
(2012) và California (2014)


16
- Daimler: Người đứng đầu của hãng, Thomas Weber tuyên bố Daimler
muốn là hãng xe đầu tiên trang bị công nghệ tự hành trên các mẫu xe của mình,
và hứa với người tiêu dùng rằng hãng sẽ cho ra mắt mẫu xe tự hành đầu tiên vào
cuối thập niên này.
- Apple: Dự án Titan của Apple dự kiến cho ra mắt vào năm 2019. Tuy nhiên,
chưa có thông báo chính thức nào về việc này nên cũng còn phải chờ xem liệu
Apple có thể đánh bại Google trong lĩnh vực này hay không.
- General Motors: Hãng xe sẽ cho ra mắt hệ thống xe tự hành dành cho nhân
viên của hãng di chuyển trong công ty vào cuối năm 2016. Trên web của hãng
cũng có nhắc đến việc cho ra mắt dòng xe bán tự hành vào năm 2020 và dòng xe
tự hành 100% vào thập niên kế tiếp.
- Ford: Ford cũng vừa thành lập một đội ngũ kỹ sư chuyên nghiên cứu công
nghệ tự hành vào tháng 6/2016 vừa qua. Tuy nhiên, hãng cũng cho biết có thể đến
năm 2020 các xe của Ford sẽ không phải là mẫu xe sở hữu công nghệ tự hành
100% vì Ford muốn phát triển công nghệ để có thể trang bị trên tất cả các phân
khúc xe của hãng chứ không chỉ trang bị cho phân khúc siêu sang.
- Nissan: Hãng xe Nhật cũng dự kiến cho ra mắt mẫu xe tự hành vào năm
2020. Hãng xe này đã nghiên cứu và làm việc với các nhà nghiên cứu đến từ các

trường ĐH lớn trên thế giới như Oxford, Stanford, MIT nhằm sớm biến công nghệ
này thành hiện thực.
- Toyota: Người khổng lồ Nhật Bản tuyên bố sẽ cho ra mắt phiên bản Lexus
tự lái vào dịp thế vận hội Olympics Tokyo năm 2020.
b) Tình hình nghiên cứu xe tự hành trong nước
Trước tình hình nghiên cứu xe tự hành trên thế đang rất sôi động, vào 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ủ
đề “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


17
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 đã phối hợp với
Vietnamworks 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. Nhóm nghiên cứu
đã tiến hành lắp ráp và lập trình xe tự hành trong 3 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 đường cong (địa hình đơ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, đọ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í …
Hiện nay trong nước mới chỉ có tập đoàn FPT đang tham gia nghiên cứu
công nghệ xe không người lái.
1.3. Đặt bài toán xây dựng mô hình và hệ thống điều khiển xe tự hành
Để nắm bắt được xu thế công nghệ xe tự hành, em lựa chọn đồ án “Nghiên

cứu xây dựng hệ thống điều khiển bám đường, tránh vật cản cho xe tự hành”. Với
mục đích là xây dựng được mô hình xe tự hành có thể bám được đường dựa theo
mô phỏng đường thực tế và tránh được vật cản. Để đạt được mục đích như vậy,
em đưa ra mục tiêu nghiên cứu như cứu như sau:
- Xây dựng được mô hình xe tự hành có đầy đủ trang, thiết bị cho việc xác
định làn đường và vật cản, xe có thể di chuyển được trên sa hình mô phỏng đường
thực tế.


18
- Nắm được các thiết bị phần cứng được trang bị cho xe để có thể lập trình,
làm việc được với xe.
- Nắm được các cơ sở liên quan đến việc xác định làn đường, xác định vật
cản và các thuật toán điều khiển.
- Nghiên cứu đưa ra được thuật toán xác định làn đường.
- Nghiên cứu đưa ra được thuật toán điều khiển xe bám đường.
- Nghiên cứu đưa ra được thuật toán xác định vật cản.
- Nghiên cứu đưa ra được thuật toán điều khiển tránh vật cản.
- Kết hợp các thuật toán lại thành một chương trình điều khiển xe bám đường,
tránh vật cản hoàn chình.
- Chạy thử nghiệm xe và đưa ra đánh giá.
Để thực hiện được các mục tiêu trên sử dụng các phương pháp 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 hỏi ý kiến chuyên gia;
- Phương pháp thực nghiệm;
Để thực hiện được đồ án này em đưa ra hướng giải quyết như sau:
- Xây dựng mô hình;
- Nghiên cứu xử lý ảnh sử dụng thư viện Opencv;
- Nghiên cứu các thiết bị phần cứng Raspberry Pi 3, cảm biến siêu âm HCSR04, camera A4 tech, điều khiển động cơ qua L298N;

- Nghiên cứu thuật toán xác định làn đường, xác định vật cản và chương trình
điều khiển xe.


19
1.4. Kết luận chương 1
Trong chương 1, trình bày được khái niệm xe tự hành, lịch sử ra đời và phát
triển của xe tự hành, ưu nhược điểm của xe tự hành, dự đoán tương lai và dự đoán
công nghệ xe tự hành trong vòng 10 năm tới. Trình bày được tình hình nghiên cứu
xe tự hành ở thế giới và trong nước. Đưa ra được tính cấp thiết, phạm vi nghiên
cứu, phương pháp nghiên cứu và hướng giải quyết của đồ án.
Chương 1 giúp chúng ta hiểu được tổng quan về xe tự hành, xu thế phát triển
của nó và nêu lên được nội dung mà đồ án này sẽ thực hiện.
Trong chương 2 em tiếp tục trình bày về cơ sở xây dựng trương trình điều
khiển cho xe tự hành. Trong đó em sẽ trình bày tổng quan về thư viện Opencv và
wiringPi, cơ sở lý thuyết về thuật toán điều khiển mờ.


20

Chương 2: CƠ SỞ XÂY DỰNG CHƯƠNG TRÌNH ĐIỀU KHIỂN
CHO XE TỰ HÀNH
2.1. Tổng quan về các thư viện sử dụng cho hệ thống điều khiển xe tự
hành
2.1.1. Thư viện Opencv
2.1.1.1. Tổng quan về thư viện Opencv
OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính
(computer vision), xử lý ảnh, máy học, và các tính năng tăng tốc GPU trong hoạt
động thời gian thực[5].
OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí

cho cả học thuật và thương mại. Nó có các interface C++, C, Python, Java và hỗ
trợ Windows, Linux, Mac OS, iOS và Android. OpenCV được thiết kế để tính
toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực. Được
viết bằng tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của xử lý đa lõi. Được
sử dụng trên khắp thế giới, OpenCV có cộng đồng hơn 47 nghìn người dùng và
số lượng download vượt quá 6 triệu lần. Phạm vi sử dụng từ nghệ thuật tương tác,
cho đến lĩnh vực khai thác mỏ, bản đồ trên web hoặc công nghệ robot[5].
OpenCV đang được sử dụng rộng rãi trong các ứng dụng bao gồm:
- Hình ảnh street view.
- Kiểm tra và giám sát tự động.
- Robot và xe hơi tự lái.
- Phân tích hình ảnh y tế.
- Tìm kiếm và phục hồi hình ảnh/video.
- Phim - cấu trúc 3D từ chuyển động.


21
- Nghệ thuật sắp đặt tương tác.
OpenCV có một cấu trúc modul, cái mà là các gói thư viện được chia sẻ
chung hoặc thư viện tĩnh. Phía dưới là modul có[9].
- Core – là modul nhỏ gọn xác định cấu trúc dữ liệu cở bản, bao gồm mảng
đa chiều Mat và các hàm cơ bản được sử dụng bởi tất cả các modul khác.
- Imgproc – là modul xử lý ảnh bao gồm lọc tuyến tính và phi tuyến tính,
biến đổi hình học (thay đổi kích thước, affine và phối cảnh nhân tạo, sửa đổi dựa
trên bảng chung), chuyển đổi không gian màu, lược đồ, v.v…
- Video – là modul phân tích video bao gồm đánh giá chuyển động, phép trừ
nền và các thuật toán theo dõi đối tượng.
- Calib3d – Các thuật toán hình học nhiều chiều cơ bản, hiệu chuẩn camera
đơn và âm thanh, ước lượng các đối tượng, thuật toán tương phản stereo và các
yếu tố tái tạo 3D.

- Features2d – trình dò đặc trưng, mổ tả và kết nối mô tả.
- Objdetect – phát hiện các đối tượng và các lớp được xác định trước (ví dụ
khuân mặt, mắt, cốc, người, xe hơi, v.v…).
- Highgui – một giao diện dễ sử dụng để quay video, hình ảnh và codecs
video, cũng như giao diện người dùng đơn giản.
- Gpu – Các thuật toán tăng tốc CPU từ các modul opencv khác nhau.
2.1.1.2. Các hàm cơ bản trong Opencv được sử dụng đến trong đồ án.
a) Hàm load ảnh.
C++: Mat imread(const string& filename, int flags=1 )
Các tham số:
- filename – tên của file sẽ load.


22
- flags – cờ chỉ ra loại màu của ảnh load.
CV_LOAD_IMAGE_ANYDEPTH – Nếu cài đặt, trả về ảnh 16 bít
hoặc 32 bit khi đầu vào là tương ứng với ảnh độ sâu, trường hợp
khác chuyển đổi thành 8 bit.
CV_LOAD_IMAGE_COLOR – Nếu cài đặt, luôn luôn chuyển ảnh
về ảnh màu.
CV_LOAD_IMAGE_GRAYSCALE – Nếu cài đặt, luôn luôn
chuyển ảnh thành một ảnh xám.
> 0 trả về ảnh màu ba kênh màu.
= 0 trả về một ảnh xám.
< 0 trả về hình ảnh được tải (như với kênh alpha).
Hàm load ảnh “imread” đọc một ảnh từ một file đã chỉ và trả lại nó. Nếu ảnh
không thể đọc được (vì file lỗi, phân quyền, không hỗ trợ hoặc định dạng lỗi),
hàm sẽ trả về một ma trận rỗng (Mat::data==NULL). Hiện tại, các định dạng file
được hỗ trợ là:
- Windows bitmaps - *.bmp, *.dib (luôn luôn được hỗ trợ).

- JPEG files - *.jpeg, *.jpg, *.jpe (tùy thuộc hệ điều hành).
- JPEG 2000 files - *.jp2 (tùy thuộc hệ điều hành).
- Portable Network Graphics - *.png (tùy thuộc hệ điều hành).
- Portable image format - *.pbm, *.pgm, *.ppm (luôn luôn được hỗ trợ).
- Sun rasters - *.sr, *.ras (luôn luôn được hỗ trợ).
- TIFF files - *.tiff, *.tif (tùy thuộc hệ điều hành)
b) Hàm hiển thị ảnh.
Hiển thị hình ảnh trong cửa sổ đã chỉ rõ.
void imshow(const string& winname, InputArray mat)


23
Các tham số:
- winname – Tên cửa sổ.
- image – Hình ảnh để hiện thị.
Hàm “imshow” hiện thị một hình ảnh trong cửa sổ đã chỉ rõ. Nếu cửa sổ đã
được tạo với cờ CV_WINDOW_AUTOSIZE, thì hình ảnh hiện thị với kích thước
gốc, tuy nhiên nó sẽ bị giới hạn bởi độ phân giải của màn hình. Các trường hợp
khác, hình ảnh được tỉ lệ để làm vừa cửa sổ. Hàm này có thể tỉ lệ phụ thuộc vào
độ sâu của nó.
- Nếu hình ảnh là ảnh 8 bit không dấu, nó sẽ được hiện thị như là chính nó.
- Nếu hình ảnh là ảnh 16 bit không hoặc 32 bit số nguyên, các pixel sẽ được
chia cho 256. Nó là giá trị trong dải [0, 255*256] ánh xạ thành dải [0, 255].
- Nếu hình ảnh là ảnh 32 bit dấu phẩy động, các giá trị pixel được nhân với
255, đó là các giá trị trong dải [0, 1] ánh xạ thành dải [0, 255].
Nếu cửa sổ chưa được tạo trước khi gọi hàm này, nó sẽ gán cửa sổ đã tạo với
cờ CV_WINDOW_AUTOSIZE.
Nếu bạn cần hiện thị hình ảnh lớn hơn độ phân giải của màn hình, bạn sẽ cần
gọi hàm namedWindow("", WINDOW_NORMAL) trước khi imshow.
Nếu cửa sổ đã được tạo với hỗ trợ OpenGL, imshow hỗ trợ ogl::Buffer,

ogl::Texture2D và gpu::GpuMat như đầu vào.
c) Hàm load video hay thu từ webcam.
Để load video hay thu từ webcam ta cần phải khai báo class VideoCapture.
Đây là class thu video từ file video, chuỗi hình ảnh hoặc từ camera. Class cung
cấp giao diện ứng dụng C++ cho việc thu video từ camera hoặc đọc từ file video
và chuỗi ảnh.
Khai báo biến VideoCapture có hỗ trợ các constructors sau:


24
VideoCapture::VideoCapture()
VideoCapture::VideoCapture(const string& filename)
VideoCapture::VideoCapture(int device)
Các tham số:
- filename – tên của file video được mở (ví dụ: video.avi) hoặc chuỗi hình
ảnh (ví dụ: img_%02.jpg, cái mà sẽ đọc các mẫu như là img_00.jpg, img_01.jpg,
img_02.jpg, …).
- divice – id của thiết bị thu video được mở. Nếu chỉ có một camera được kết
nối thì ta sẽ truyền vào 0.
- Để mở file video hoặc một thiết bị thu video ta dùng một trong các hàm
sau:
C++: bool VideoCapture::open(const string& filename)
C++: bool VideoCapture::open(int device)
Các tham số như đối với các tham số của constructors trên.
Để đọc các frame tiếp theo của video ta sử các hàm:
VideoCapture& VideoCapture::operator>>(Mat& image)
bool VideoCapture::read(Mat& image)
d) Chuyển ảnh qua không gian màu khác.
Chuyển một ảnh từ không gian màu sang không gian khác.
void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

Các tham số:
- src – là ảnh đầu vào, 8 bit không dấu, 16 bit không dấu hoặc dấu phẩy động.
- dst – là ảnh đầu ra có cùng kích thước và độ sâu với ảnh src.


25
- code – là mã chuyển đổi không gian màu.
- dstCn – số kênh màu trong ảnh đích, nếu tham số này bằng 0 thì số kênh
màu sẽ tự động được suy ra từ src và code.
Hàm chuyển một ảnh đầu vào từ một không gian màu sang không gian màu
khác. Trong trường hợp chuyển đổi từ không gian màu RGB đến không gian màu
RGB, thứ tự các kênh màu phải chỉ rõ để tránh xung đột (RGB hay BGR). Chú ý
rằng dạng màu mặc định trong OpenCV thường chỉ là RGB nhưng thực tế là BGR
(các byte là ngược nhau). Vì vậy byte đầu tiên trong ảnh màu chuẩn (24 bit) sẽ là
8 bit của kênh màu xanh, byte thứ hai sẽ là màu xanh lục và byte thứ ba là màu
đỏ. Các byte thứ bốn, năm và sáu sẽ là của pixel thứ hai.
Các dải chuyển đổi của các giá trị của kênh màu R, G và B là:
- [0, 255] cho ảnh có loại CV_8U.
- [0, 65535] cho ảnh có loại CV_16U.
- [0, 1] cho ảnh có loại CV_32F.
- Hàm có thể thực hiện các phép chuyển đổi sau:
- RGB <-> GRAY bởi các mã chuyển đổi không gian màu
CV_BGR2GRAY, CV_RGB2GRAY, CV_GRAY2BGR và CV_GRAY2RGB.
- RGB <-> CIE XYZ bởi các mã chuyển đổi không gian màu
CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR và CV_XYZ2RGB.
- RGB <-> YCrCb hoặc YCC bởi các mã chuyển đổi không gian màu
CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR và CV_YCrCb2RGB.
- RGB <-> HSV bởi các mã chuyển đổi không gian màu CV_BGR2HSV,
CV_RGB2HSV, CV_HSV2BGR và CV_HSV2RGB.
- RGB <-> HLS bởi các mã chuyển đổi không gian màu CV_BGR2HLS,

CV_RGB2HLS, CV_HLS2BGR và CV_HLS2RGB.


×