chuong12 HOANTHANH

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 36

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP. HỒ CHÍ MINH

ĐỒ ÁN TỔNG HỢP Ô TÔ
ĐỀ TÀI: NGHIÊN CỨU VÀ THIẾT KẾ XE TỰ HÀNH
Học kỳ 2 năm học 2023 -2024

Giảng viên hướng dẫn: TS. NGUYỄN VĂN NHANH

SVTH: Phạm Mai An Mã SV:2011253473 Lớp: 20DOTA3


SVTH: Nguyễn Ngọc Anh Mã SV:2011253109 Lớp: 20DOTA3
SVTH: Nguyễn Anh Nhựt Mã SV:2011253072 Lớp: 20DOTA3
SVTH: Nguyễn Chánh Đạt Mã SV: 2011250129 Lớp: 20DOTA3
SVTH: Nguyễn Hữu Vinh Mã SV: 2011250875 Lớp: 20DOTA3
SVTH: Phan Huỳnh Thoại Mã SV:2011252201 Lớp: 20DOTA3

Tp.HCM, ngày 31 tháng 05 năm 2024


LỜI CẢM ƠN

Sau thời gian học tại trường Đại Học Công Nghệ Tp.HCM dưới sự
giảng dạy và chỉ bảo tận tình của các thầy cô Viện Kỹ Thuật Hutech
chúng em đã tiếp thu được một lượng kiến thức cũng như kinh nghiệm bổ
ích giúp chúng em hoàn thiện bản thân để trở thành những người kỹ sư
tương lai. Bước ra ngưỡng cửa đại học sẽ là một thế giới rộng lớn với
nhiều thử thách đang chờ đón, những bài học của thầy cô sẽ là hành trang
giúp chúng em vững bước để trở thành những công dân tốt, đem bàn tay,
khối óc của mình góp phần xây dựng xã hội. Những thành công của
chúng em sau này đều in đậm công lao của các thầy cô. Xin gửi đến quý
thầy cô lòng kính trọng và sự biết ơn sâu sắc của chúng em.
Nhóm chúng em xin chân thành cảm ơn thầy Nguyễn Văn Nhanh
đã tận tình hướng dẫn cho em trong suốt quá trình thực hiện đồ án môn
học. Đồng thời cung cấp cho chúng em những tài liệu, để chúng em có thể
hoàn tất đề tài này.
Xin chân thành cảm ơn quí nhà trường Đại học Công Nghệ
Tp.HCM. Đã tạo điều kiện cho sinh viên chúng em được những cơ hội va
chạm với ngành nghề chúng em đã chọn – ngành công nghệ kỹ thuật ô tô.
Đặc biệt là quí thầy Nguyễn Văn Nhanh, trực tiếp giúp đỡ và tạo
điều kiện, môi trường làm việc tốt cho chúng em hoàn tất tốt đề tài đồ án
này.
Sau cùng chúng em xin chúc các thầy cô lời chúc sức khỏe, hạnh
phúc và luôn luôn thành đạt trong sự nghiệp.
Xin chân thành cảm ơn !
i
DANH MỤC CÁC TỪ VIẾT TẮT

ABS Anti block system

GVHD Giáo viên hướng dẫn

ĐAMN Đồ án môn học

ii
iii
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1. Lý do chọn đề tài:
Hiện nay do nhu cầu xe điện đang phát triển và điều khiển tự động lái. Và được
nghiên cứu, phát triển không ngừng. Ngoài những mục tiêu về an toàn khi sử dụng, hệ
thống xe điện còn có mục tiêu về những tiện ích nhất định cho người sử dụng khi tham
gia giao thông.
Việc nghiên cứu tổng quan về cấu tạo, tính toán cơ cấu xe tự hành cũng như là cách
bảo dưỡng sửa chữa và ngoài ra bản vẽ kỹ thuật chi tiết cũng sẽ là một phần tài liệu
nhỏ sẽ giúp cho học sinh, sinh viên cũng như thợ sửa chữa tiếp cận tốt hơn với những
công nghệ mới về hệ thống xe tự hành.
Vì những lý do trên và với mong muốn củng cố, thu thập, tổng hợp và nâng cao kiến
thức chuyên ngành cũng như kiến thức mới ngoài thực tế khi sắp tốt nghiệp tôi đã
chọn đề tài đồ án: “Nghiên cứu và thiết kế mô hình xe tự hành”. Hoàn thành đề tài đã
giúp cho tôi được hiểu hơn về hệ thống xe tự hành. Và hơn thế là giúp cho nhóm làm
quen về tính toán thiết kế và đặc biệt là hiểu biết về hệ thống của xe điện tự động lái.
Cải thiện một trãi nghiệm lái mới và thoải mái hơn cho người sử dụng ô tô
1.2. Mục tiêu của đề tài
Tổng quan về mô hình xe tự hành
- Giải quyết: đọc phân tích thiết kế về mô hình xe tự hành
- Hướng tới: thực hiện thiết kế mô hình xe tự hành và bản vẽ
1.3. Nhiệm vụ nghiên cứu.
Tìm hiểu quá trình hình thành và phát triển của xe tự hành, trình bày nghiệp vụ-
phân loại-yêu cầu, Phân tích kết cấu- nguyên tắc hoạt động của hệ thống xe tự hành.
1.4 Phương pháp nghiên cứu
- Tìm hiểu trên mạng xã hội, sách báo và môi trường thực tế.
1.5 Kết cấu đồ án
Đồ án gồm 4 chương:
+ Chương 1: Giới thiệu đề tài
+ Chương 2: Cơ sở lý thuyết
+ Chương 3: Thiết kế mô hình xe tự hành, vẽ mô hình
+ Chương 4: Kết luận

31
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1. Công dụng, phân loại và yêu cầu
2.1.1 Công dụng và yêu cầu
a. Công dụng của xe tự hành
Xe tự hành có nhiều ứng dụng hữu ích, bao gồm:
- An toàn giao thông: Xe tự hành có thể giảm nguy cơ tai nạn giao thông do hành vi
lái xe không an toàn của con người.
- Thuận tiện: Cho phép người dùng thư giãn hoặc làm việc trong khi di chuyển mà
không cần phải tập trung vào lái xe.
- Tiết kiệm thời gian: Xe tự hành có thể di chuyển thông minh hơn, giảm tắc đường
và thời gian di chuyển.
- Tiết kiệm năng lượng: Có thể tối ưu hóa hành trình để tiết kiệm nhiên liệu và giảm
khí thải.
- Hỗ trợ người khuyết tật: Cung cấp phương tiện di chuyển cho những người không
thể lái xe.
- Giao hàng tự động: Xe tự hành có thể được sử dụng để giao hàng tự động, giảm chi
phí vận chuyển và thời gian giao hàng.
- Giải trí: Tạo ra một không gian thoải mái và giải trí trong khi di chuyển, ví dụ như
xem phim hoặc chơi trò chơi.
- Phát triển kỹ thuật: Thúc đẩy sự phát triển của công nghệ và trí tuệ nhân tạo.
b. Yêu cầu của xe tự hành
Xe tự hành cần phải đáp ứng một số yêu cầu quan trọng để hoạt động một cách hiệu
quả và an toàn, bao gồm:
- Hệ thống cảm biến: Xe cần được trang bị các cảm biến như radar, lidar, camera và
bộ cảm biến khác để nhận diện và phản ứng với môi trường xung quanh.
- Hệ thống xử lý dữ liệu: Xe cần có hệ thống xử lý dữ liệu mạnh mẽ để phân tích
thông tin từ các cảm biến và ra quyết định lái xe một cách an toàn.
- Kết nối mạng: Để cập nhật thông tin về lưu lượng giao thông, điều kiện đường và
các yếu tố khác, xe tự hành cần kết nối mạng liên tục.

5
- Hệ thống điều khiển: Xe cần có hệ thống điều khiển tự động để điều khiển hướng,
tốc độ và các chức năng khác của xe.
- Phần mềm và thuật toán: Để thực hiện các chức năng tự động, xe cần được lập
trình với các thuật toán và phần mềm phức tạp để nhận diện và phản ứng với môi
trường.
- Hệ thống an toàn: Xe cần có các tính năng an toàn như hệ thống phanh khẩn cấp,
hệ thống giám sát lái xe và các tính năng khác để đảm bảo an toàn cho hành khách và
người đi đường.

CHƯƠNG 3: NỘI DUNG TÍNH TOÁN VÀ THIẾT KẾ MÔ HÌNH


3.1 Tính toán và thiết kế mô hình
3.1.1 Xác định yêu cầu cơ bản

Kích thước mô hình xe tự hành: Nếu mô hình có tỷ lệ 1:10 so với xe thực tế, cần xác
định kích thước xe thực tế để tính toán kích thước mô hình.

- Xe thực tế có chiều dài 4.5m, chiều rộng 1.8m, và chiều cao 1.5m.

- Kích thước mô hình:

- Chiều dài: 4.5m / 10 = 0.45m (45cm)

- Chiều rộng: 1.8m / 10 = 0.18m (18cm)

- Chiều cao: 1.5m / 10 = 0.15m (15cm)

3.1.2. Thành phần chính của xe tự hành:

Số
Sản phẩm Miêu tả Ghi chú Công dụng
lượng
Khung Cấu trúc cơ 1 Khung gầm
gầm bản của xe. của một
Được lắp chiếc xe ô tô
đặt hoàn đóng vai trò
toàn. Mẫu: quan trọng
Reely TC- nhất trong
04, TT-02 việc định
hình và vận
hành của xe.
Nó không
chỉ là nơi để
lắp đặt các

6
bộ phận
khác như hệ
thống lái,
hộp số, ly
hợp, và động
cơ, mà còn
chịu trách
nhiệm chịu
lực tác động
lớn khi xe
tăng tốc
hoặc phanh
gấp. Khung
gầm cũng
đảm bảo an
toàn cho
hành khách
trong xe
trong các
tình huống
nguy hiểm
bằng cách
chịu đựng
các lực tác
động từ bên
ngoài.

Servo lái Bộ kích hoạt 1 Hệ thống


được sử servo lái
dụng cho cơ trong xe ô tô
cấu lái. giúp tăng
Model: RS- cường sức
610WP, mạnh lái xe
MG996R bằng cách
cung cấp lực
hỗ trợ cho
người lái.
Nó giảm sức
nặng cần áp
dụng để điều
khiển xe,
đặc biệt là ở
tốc độ thấp
và trong các
tình huống
lái xe khó
khăn như
trên đường

7
uốn cong.
Điều này
làm cho việc
lái xe trở
nên dễ dàng
hơn và giảm
bớt mệt mỏi
cho người
lái.
Công dụng
chính của
động cơ này
là chuyển
động và
cung cấp
năng lượng
cho các thiết
bị cần di
chuyển hoặc
thực hiện
các chức
năng cơ bản.
Động cơ có
Đặc tính của
chuổi than
Động cơ 1 động cơ này,
Model: RS
bao gồm
– 540
kích thước
nhỏ gọn, khả
năng vận
hành ổn định
và độ bền
cao, làm cho
nó trở thành
lựa chọn phổ
biến trong
các ứng
dụng điện tử
và cơ khí
nhỏ gọn.
Raspberry Máy tính 1h Làm giảm
Pi trên một bo điện áp từ
mạch được nguồn cung
thiết kế để cấp chính
kiểm soát thành điện
phần tự áp phù hợp
động của xe cho các thiết
Raspberry bị hoặc hệ
Pi 3B+, thống điện

8
Raspberry
Pi 4B với bộ khác.
nhớ RAM
2GB/4GB
Thẻ nhớ
Micro SD
16GB. Để Để phục vụ
Thẻ nhớ 1
phục vụ Raspberry Pi
Raspberry
Pi
Bộ điều Vi điều 1 Vi điều
khiển khiển được khiển trong
sử dụng để xe ô tô tự
kiểm soát hành chịu
động cơ, trách nhiệm
góc lái. quản lý và
Mẫu: điều khiển
Arduino R3, các chức
Nucleo năng tự lái
F401RE,... của xe bằng
cách thu
thập và xử lý
thông tin từ
các cảm biến
xung quanh.
Nó giúp xe
tự định hình
và duy trì
động thái an
toàn trên
đường bằng
cách tự động
điều khiển
hệ thống lái,
phanh, và
ga. Đồng
thời, vi điều
khiển cũng
xử lý các
nhiệm vụ
như nhận
diện biển
báo, phân
tích dữ liệu
đường đi và
tương tác
với hệ thống

9
giám sát
trạng thái
của xe để
đảm bảo trải
nghiệm lái
an toàn và
hiệu quả.
Công dụng
chính là
truyền dữ
liệu giữa
board
Cáp giao
Arduino và
tiếp giữa
USB0- máy tính để
Raspberry
miniUSB/ thực hiện lập
và Arduino, 1
USB trình, tải
Nucleo. Sợi
Arduino chương
cáp dài 15
trình, và
cm.
giao tiếp
giữa board
và các phần
mềm trên
máy tính.
Camera Các loại 1 Camera
camera kết trong xe tự
nối với hành thu
aspberry Pi thập dữ liệu
loại một mắt hình ảnh từ
hoặc 2 mắt môi trường
xung quanh
để hỗ trợ hệ
thống tự lái.
Công dụng
chính của nó
là nhận diện
và phân tích
các yếu tố
trên đường
như xe cộ,
người đi bộ,
biển báo và
điều kiện
đường. Dữ
liệu từ
camera được
sử dụng để
hỗ trợ hệ

10
thống tự lái
đưa ra quyết
định an toàn
và chính
xác, đồng
thời cũng
ghi lại thông
tin cho phân
tích sau vụ
việc để cải
thiện hiệu
suất của hệ
thống tự lái
trong tương
lai.
Pin trong ô
tô tự hành
cung cấp
nguồn điện
cho các hệ
thống điện
tử và cảm
biến trong
xe. Công
dụng chính
Dùng để
của pin là
cung cấp
đảm bảo
năng lượng
hoạt động
cho toàn bộ
liên tục và
xe. Dung
Pin/ ắc ổn định của
lượng từ 1
quy các thiết bị
1300 mAh
tự hành,
đến 6200
không phụ
mAh (được
thuộc hoàn
gán ngẫu
toàn vào
nhiên)
nguồn điện
từ động cơ.
Pin cũng có
vai trò dự
phòng trong
trường hợp
xảy ra sự cố
với hệ thống
chính của
xe.

11
Giảm điện
áp từ nguồn
cung cấp
Dùng chính thành
Mạch hạ chuyển đổi điện áp phù
1
áp điện áp DC - hợp cho các
DC LM2596 thiết bị hoặc
hệ thống
điện khác.

Dùng để Dùng để
Điều điều khiển điều khiển
khiển tốc độ động 1 tốc độ động
động cơ cơ DC cơ DC
MBS7961 MBS7961

Thân vỏ của
xe ô tô tự
hành bảo vệ
các hệ thống
và linh kiện
bên trong
khỏi các tác
động bên
ngoài như
Thân xe
thời tiết và
được đặt
va chạm. Nó
phía trên để
cung cấp
che phủ các
không gian
linh kiện.
để lắp đặt
Các mẫu
các thiết bị
thân xe:
cảm biến và
Thân xe Toyota, 1
công nghệ tự
Mazda,
hành như
Lexus,
radar,
BMW,...
camera và
Màu thân xe
lidar. Thân
có thể nhiều
vỏ cũng
màu khác
được thiết kế
nhau
để tăng
cường an
toàn và khả
năng chịu va
đập của xe,
tạo điều kiện
thuận lợi cho
hoạt động tự
hành.

12
Đế board
trong xe ô tô
tự hành giúp
lắp đặt và cố
định các
thiết bị điện
tử và linh
kiện khác
nhau như
cảm biến và
bảng mạch.
Công dụng
chính của nó
là tạo một
Đế test
nền tảng
board dùng
vững chắc
gắn các
để tích hợp
module hoặc
và kết nối
linh kiện
các thiết bị
điện tử, kết
này, giúp hệ
Đế board nối chúng 1
thống tự
với nhau
hành hoạt
bằng các
động hiệu
loại dây
quả và ổn
cắm. Model:
định. Đặc
ZY25, SYB-
biệt, đế
170,...
board cung
cấp không
gian để lắp
đặt các cảm
biến và vi
điều khiển,
từ đó thu
thập và xử lý
dữ liệu từ
môi trường
xung quanh
để điều
khiển hành
động của xe.

13
3.2. Tính toán thiết kế

3.2.1 Xác định các thông số cở bản của xe tự hành

Mô hình

Tỷ lệ mô hình: 1:10 (giả sử các thông số về chiều dài, chiêu rộng và chiêu cao của xe
thực tế là L, W, H, thì thông số của mô hình se là L/10, W/10, H/10)

Chiều dài xe mô hình (Lm): ví dụ xe thực tể dài 4.5m, thì Lm = 4.5m/10 = 0.45m.

Chiêu rộng xe mô hình (W,): ví dụ xe thực tế rộng 2m, thì Wm = 2m/10 = 0.2m

Tính toán bán kính quay dâu

3.2.2 Tính toán bán kính quay đầu

Bán kính quay đầu của xe được tính dựa trên khoảng cách giữa các trục bánh xe
(wheelbase) và góc quay của bánh trước. Công thức cơ bản cho bán kính quay đầu R
là:
Lm
R=
tan ⁡(θ)

Trong đó:

• Lm là khoảng cách giữa các trục bánh xe (còn gọi là chiều dài cơ sở của xe mô
hình).

• O là góc quay của bánh trước. Giả sứ chiều dài cơ sở của xe thực tế là 2.7m, thì
chiêu dài cơ sở của mô hình là 2.7m/10 = 0.27m.

Nếu góc quay tối đa của bánh trước là 30 độ (0.5236 radians), ta có:
0.27
R= ≈ 0.468(m)
tan ⁡(0,5326 )

3.2.3 Tính toán tốc độ động cơ

Tính toán tốc độ động cơ Tốc độ động cơ cân được tính dựa trên tốc độ mong muốn
của mô hình xe. Giả sứ bạn muốn mô hình xe chạy với tốc độ tương ứng với 10
km/h ở xe thực tế.

Chuyển đổi tốc độ từ km/h sang m/s:


10 x 1000
10 km/h= m/s ≈2.78 m/ s
3600

Tốc độ của mô hình (tỷ lệ 1:10):

14
2 , 78
Vm= =0,278 m/ s
10

Để tính toán tốc độ động cơ, bạn cân biet bán kính bánh xe mô hình (r) và công thức
liên hệ giữa tốc độ tuyến tính và tốc độ góc (w):

Vm= r . ω

Giả sử bán kính bánh xe mô hình là 0.03m (3cm), tốc độ góc (w) cân có để đạt tốc
độ 0.278 m/s là:
Vm 0,278
ω¿ = ≈ 9.27 rad /s
r 0.03

chuyển đổi từ rad/s sang vòng/phút (RPM):


60 60
RPM¿ ω x =9.27 x ≈ 88 , 6 RPM
π π

3.2.4Tính toán góc lái


Đường trung tâm chịu trách nhiệm cung cấp cho động cơ servo lái hướng mà nó
sẽ quay và cung cấp cho động cơ DC tiết lưu tốc độ mà nó sẽ hoạt động. Việc tính
toán một đường như vậy là một phép toán lượng giác thuần túy và các trường hợp
cực đoan trong đó ô tô chỉ tìm thấy một hoặc không tìm thấy một đường làn nào
được nghiên cứu trong các điều kiện if-elif-else.
def get_steering_angle(self, frame, lane_lines):
height, width, _ = frame.shape
if len(lane_lines) == 2:
left_x1, left_y1, left_x2, left_y2 = lane_lines[0][0]
right_x1, right_y1, right_x2, right_y2 = lane_lines[1][0]
slope_l=math.atan((left_x1-left_x2) / (left_y1-left_y2))
slope_r=math.atan((right_x1-right_x2) / (right_y1-
right_y2))
slope_ldeg = int(slope_l * 180.0 / math.pi)
steering_angle_left = slope_ldeg
slope_rdeg = int(slope_r * 180.0 / math.pi)
steering_angle_right = slope_rdeg

15
if left_x2>right_x2: #horizontal line if
abs(steering_angle_left) <=
abs(steering_angle_right):
x_offset = left_x2 - left_x1
y_offset = int(height / 2)
elif abs(steering_angle_left) > abs(steering_angle_right):
x_offset = right_x2 - right_x1
y_offset = int(height / 2)
else: #normal left line mid = int(width /
2) x_offset = (left_x2 + right_x2) / 2
- mid y_offset = int(height / 2)
elif len(lane_lines) == 1: x1, _,
x2, _ = lane_lines[0][0]
x_offset = x2 - x1 y_offset
= int(height / 2)
elif len(lane_lines) == 0:
x_offset = 0 y_offset
= int(height / 2)
#angle_to_mid_radian = math.atan(x_offset /
y_offset) alfa = 0.6
angle_to_mid_radian = alfa*self.angle +(1-
alfa)*math.atan(x_offset
/ y_offset) angle_to_mid_deg = int(angle_to_mid_radian * 180.0 /
math.pi) steering_angle = angle_to_mid_deg +90 self.angle =
angle_to_mid_radian return steering_angle
Hàm getsteeringangle( ) chịu trách nhiệm điều khiển xe đúng theo giá trị độ cong.
Trong trường hợp chung nhất mà góc lái không phải là 90 ° , nếu lớn hơn đại lượng
này thì ô tô sẽ lái sang phải, ngược lại thì sang trái, là 90 ° tham chiếu để đi thẳng

16
Hình Biến thiên góc lái theo giá trị độ cong.
Chức năng được chia thành 3 phần chính:
Lane = 2 : hai trường hợp có thể xảy ra. Trong trường hợp đường bên trái trên
thực tế là một đường giao nhau, mã sẽ bỏ qua đường dốc nhất: điều này xảy ra khi
hai đường trái và phải giao nhau, có nghĩa là khi điểm ngoài cùng bên phải của
đường bên trái là lớn hơn điểm ngoài cùng bên trái của đường bên phải. Lý do
tương tự được thực hiện khi đường bên phải là giao lộ. Mặt khác, các điểm của
dòng được tính như bình thường:
• xoffset kiểm tra mức trung bình khác với giữa màn hình là bao nhiêu.

• yoffset luôn luôn là height/2 . Để làm rõ hơn những điểm này, Hình 4.3 hiển

thị chúng trên mặt phẳng.

Hình Biểu diễn độ lệch x và độ lệch y để tính góc lái.

Lane = 1 : trong trường hợp làn đường được phát hiện chỉ có một, xe sẽ đi theo
làn đường đó.
Lane = 0 : xe không thực hiện bất kỳ việc giữ làn đường nào, do đó góc lái là
90 °.
Sau đó, dòng trung tâm được hiển thị bằng hàm displayheadingline( ) . Chức
năng này rất giống với chức năng được sử dụng để hiển thị các đường bên.
def display_heading_line(self, frame, steering_angle, line_color=(0, 255,
0), line_width=5): heading_image = np.zeros_like(frame) height,
width, _ = frame.shape steering_angle_radian = steering_angle /
180.0 * math.pi

17
x1 = int(width / 2)
y1 = height
x2 = int(x1 - height / 2 / math.tan(steering_angle_radian)) y2
= int(height / 1.75)
cv2.line(heading_image, (x1, y1), (x2, y2), line_color, line_width)
heading_image = cv2.addWeighted(frame, 0.8, heading_image, 1, 1)
return heading_image
Cần lưu ý rằng các tham số quan trọng của chức năng này là hình ảnh
trong đó đường được hiển thị, màu sắc, độ rộng của đường và 4 điểm xác
định đường.
3.2.5 Các thuật toán xử lý hình ảnh
a. Thuật toán phát hiện làn đường chính
Việc phát hiện các đoạn thẳng từ khung có cạnh có thể được thực hiện
bằng phương pháp Biến đổi Hough [8]: với phép biến đổi này, có thể vẽ các
đường thẳng đi qua các điểm cạnh, sử dụng ánh xạ từ không gian Đề các
sang không gian tham số. Như bạn đọc đã biết, một đường trong hình ảnh
có thể được biểu thị bằng hai biến, tùy thuộc vào hệ tọa độ đã chọn, ví dụ:
trong hệ tọa độ Polar, một phương trình đường có thể được viết là:
y = ( cosθ/sinθ ) x + ( r/sinθ )
Nói chung, đối với mỗi điểm ( x 0 , y 0 ), một họ đường thẳng đi qua điểm đó có
thể được xác định là
r θ = x 0 ∗ cosθ + y 0 ∗ sinθ
Họ các đường thẳng đi qua một điểm cho trước là một hình sin; trong mặt phẳng
θ - r chỉ xét các điểm sao cho r > 0 và 0 < θ < 2 π . Thao tác tương tự có thể được
thực hiện cho tất cả các điểm trong ảnh: nếu các đường cong của hai điểm khác
nhau cắt nhau trong mặt phẳng θ - r, thì cả hai đều thuộc cùng một đường thẳng.
Càng nhiều đường cong giao nhau, càng có nhiều điểm được chứa trong đường
được biểu thị bởi giao điểm đó, do đó, nói chung, một ngưỡng cho số lượng giao
điểm tối thiểu cần thiết để phát hiện một đường được xác định.
Ưu điểm của việc sử dụng Hough Transform là các pixel tạo thành một đường
không cần phải liền kề với các pixel khác; do đó, nó là một công cụ hữu ích để phát

18
hiện các đường có các khoảng ngắt ngắn bên trong chúng do nhiễu hoặc do các vật
thể che khuất một phần.
OpenCv cung cấp hai chức năng, HoughLines và HoughLinesP . Cái trước sử
dụng Biến đổi Hough tiêu chuẩn và cái sau sử dụng phiên bản xác suất giống nhau,
phân tích một tập hợp con các điểm hình ảnh và ước tính xác suất mà tất cả các
điểm này thuộc cùng một đường. Vì phiên bản thứ hai là phiên bản được tối ưu hóa
nên nó được triển khai trong mã theo cách trả về biểu diễn của mỗi đường dưới
dạng một điểm và một góc mà không có thông tin về các điểm cuối.
Các đối số của HoughLinesP là:
• cropped edges: đầu ra của bộ dò cạnh (hình ảnh nhị phân).

• rho : độ phân giải của tham số r tính bằng pixel (1 làm mặc định).

• theta : độ phân giải của tham số θ tính bằng radian (1 độ).

• minthreshold : số lượng giao lộ tối thiểu để phát hiện đường.

• lines: mảng trống.

• minLineLength : số điểm tối thiểu có thể tạo thành một dòng.

• maxLineGap : khoảng cách tối đa giữa hai điểm được xem xét trên cùng một

dòng.
Hai giá trị cuối cùng đã được tìm thấy sau nhiều lần thử nghiệm.
b. Hiệu chỉnh phối cảnh
Phối cảnh phụ thuộc vào độ dài tiêu cự của ống kính và vị trí của máy ảnh. Camera
hành trình khi đã được lắp lên ô tô thì góc nhìn được cố định nên có thể cân nhắc để
hiệu chỉnh hình ảnh. Với mục đích này, có một số hàm OpenCv cơ bản: get
Perspective Transform và warp Perspective . Cái trước tính toán phép biến đổi phối
cảnh lấy đầu vào là 2 mảng được tạo bởi 4 điểm, một là nguồn có phối cảnh ban đầu
và điểm còn lại là đích có phối cảnh mong muốn. Cái sau được sử dụng để thu được
chế độ xem toàn cảnh của con chim từ hiệu chỉnh phối cảnh đã được tính toán trước
đó. Nhờ chế độ xem này, bây giờ các đường được xem là song song (dọc).
def compute_perspective(width, height, pt1, pt2, pt3, pt4):
perspective_trapezoid = [(pt1[0], pt1[1]), (pt2[0], pt2[1]), (pt3[0],
pt3[1]), (pt4[0], pt4[1])]

19
src = np.float32([pt1, pt2, pt3, pt4]) #
widest side on the trapezoid x1 =
pt1[0] x2 = pt4[0]
# height of the trapezoid
y1 = pt1[1] y2 = pt2[1]
h = y1 - y2
# The destination is a rectangle with the height of the trapezoid and the
width of the widest side
dst = np.float32([[x1, h], [x1, 0], [x2, 0], [x2, h]]) perspective_dest =
[(x1, y1), (x1, y2), (x2, y2), (x2, y1)]
perspective_correction = cv2.getPerspectiveTransform(src, dst)
perspective_correction_inv = cv2.getPerspectiveTransform(dst,
src) warp_size = (width, h) orig_size = (width, height)
def warp(img, filename):
img_persp = img.copy()
cv2.line(img_persp, perspective_dest[0], perspective_dest[1], (255,
255, 255), 3) cv2.line(img_persp, perspective_dest[1],
perspective_dest[2], (255,
255, 255), 3) cv2.line(img_persp, perspective_dest[2],
perspective_dest[3], (255,
255, 255), 3) cv2.line(img_persp, perspective_dest[3],
perspective_dest[0], (255,
255, 255), 3)
cv2.line(img_persp, perspective_trapezoid[0],
perspective_trapezoid[1],
(0, 192, 0), 3)
cv2.line(img_persp, perspective_trapezoid[1],
perspective_trapezoid[2],
(0, 192, 0), 3)
cv2.line(img_persp, perspective_trapezoid[2],
perspective_trapezoid[3],
(0, 192, 0), 3)

20
cv2.line(img_persp, perspective_trapezoid[3],
perspective_trapezoid[0],
(0, 192, 0), 3) save_dir(img_persp,
"persp_", filename)
return save_dir(cv2.warpPerspective(img, perspective_correction, warp_size,
flags=cv2.INTER_LANCZOS4), "warp_", filename)
Cần lưu ý rằng, ngoài hình ảnh gốc, hiệu chỉnh phối cảnh và kích thước của sợi
dọc, warpPerspective lấy làm đầu vào cũng là loại nội suy mà trong trường hợp này là
INTERLANCZOS4.
c. Thuật toán phát hiện giao lộ
Do tính chất phức tạp và năng động của các kịch bản giao lộ, chiến lược lái xe tự
động tại các giao lộ là một bài toán khó và là điểm nóng trong nghiên cứu hệ thống
giao thông thông minh trong những năm gần đây [11]. Việc điều hướng qua các giao
lộ này đã được xác định trong MovCarProcess.py và nó bao gồm rẽ trái, phải hoặc đi
thẳng khi điều động theo giao lộ hiện tại. Cụ thể hơn, đối với Cổng chất lượng giữa kỳ,
nhóm đã triển khai logic của mô hình máy trạng thái, mô hình này chia các trạng thái
của phương tiện thành một số danh mục hạn chế. Rõ ràng là phương pháp cổ điển này
chỉ phù hợp với các tình huống đơn giản hơn là những tình huống năng động phức tạp,
nơi các quy tắc được xác định một cách giả tạo không thể thích ứng với mọi tình
huống.
Đối với LD, mục tiêu của Phát hiện giao lộ trong lĩnh vực Xử lý hình ảnh liên quan
đến việc tìm đường ngang trước giao lộ trên đường. Bước này rất quan trọng đối với
hoạt động chính xác của ổ đĩa tự động cho dự án này, vì chỉ có việc phát hiện chính
xác giao lộ mới có thể đảm bảo hành vi và ra quyết định chính xác của ô tô trên đường.
Do logic của việc phân chia đường nằm ngang cũng giống như phân chia các đường
làn đường (với sự thay đổi duy nhất về độ dốc), nhóm đã triển khai mã Hough
Transform gần như giống nhau cho LD với một số điểm khác biệt quan trọng: đặc biệt,
trong các giai đoạn thử nghiệm, việc bổ sung vạch ngang được phát hiện thường khiến
phần LF nhầm lẫn, vì ô tô đang phát hiện vạch ngang như thể đó là một trong 2 vạch
và cố gắng đi theo nó một cách sai lầm. Việc sửa lỗi này được tính đến trong hàm
averageslopeintercept bên trong MainLaneDetectionProcess , tương tự như những gì
được thực hiện trong hàm getsteeringangle : hàm trước thực hiện hiệu chỉnh để tính

21
toán độ dốc chính xác của các đường để hiển thị các đường được phát hiện, hàm sau
làm tương tự nhưng để tính góc lái thực sự. Nhìn chung , đây là một kiểu kiểm tra kỹ
xem vạch được phát hiện thực sự là vạch làn đường hay giao lộ và hành động tương
ứng. Chức năng cũ được đánh dấu trong đoạn mã dưới đây:
def average_slope_intercept(self, frame, line_segments):
....
previous = 0 #previously found line
subsequent = 0 #next line
for line_segment in line_segments:
for x1, y1, x2, y2 in line_segment:
if x1 == x2:
continue
fit = np.polyfit((x1, x2), (y1, y2), 1)
slope = (y2 - y1) / (x2 - x1) intercept =
y1 - (slope * x1)
subsequent = previous
previous = slope #When the
two lines are perpendicular
if subsequent*previous<-90:
if abs(previous)<abs(subsequent):
slope=previous
else:
slope=subsequent
.... return lane_lines
Việc kiểm soát trên dốc dựa trên độ vuông góc giữa đường phân làn (thường gần
như thẳng đứng) và đường nằm ngang: nếu tích giữa 2 đường lớn hơn (về giá trị tuyệt
đối) lớn hơn 90 ° , hai trường hợp có thể xảy ra.
Độ dốc của đường trước nhỏ hơn độ dốc của đường tiếp theo, nghĩa là đường tiếp
theo trên thực tế là một đường nằm ngang và do đó độ dốc được giữ nguyên như độ
dốc của đường được phát hiện trước đó.

22
Độ dốc của đường trước lớn hơn hoặc bằng độ dốc của đường tiếp theo và do đó độ
dốc tương ứng với đường tiếp theo, nghĩa là đường được phát hiện thực sự là một
đường làn.
d. Thuật toán nhận diện biển báo giao thông
Phát hiện biển báo giao thông (TSD) và Phân loại (TSC) là một trong những nhiệm
vụ khó khăn nhất của xe tự hành: đối với LD, nó dựa trên việc sử dụng camera của xe
để chụp ảnh đường theo thời gian thực, sau đó phát hiện và xác định biển báo giao
thông gặp trên đường, do đó cung cấp thông tin chính xác cho hệ thống lái xe.
Tuy nhiên, điều kiện đường trong môi trường thực tế rất phức tạp. Ngày nay, có rất
nhiều phương pháp thị giác máy tính để phát hiện các biển báo giao thông nhưng vẫn
cần tiếp tục nghiên cứu và cải tiến .
Trong bối cảnh nhận dạng biển báo giao thông, có hai nhiệm vụ cần hoàn thành:
tìm vị trí và kích thước của biển báo giao thông trong hình ảnh tự nhiên (TSD) và phân
loại biển báo giao thông được phát hiện thành các lớp con cụ thể của chúng (TSC).
Các biển báo giao thông được thiết kế theo cách thu hút sự chú ý của người lái xe,
nhưng đối với thuật toán máy tính, có nhiều khó khăn do thay đổi ánh sáng, suy giảm
màu sắc, mờ chuyển động, che khuất một phần, v.v. Những vấn đề này dễ dàng được
giải quyết hơn bằng các kỹ thuật học sâu [12] bởi vì, không giống như các phương
pháp học máy truyền thống, chúng cung cấp các mạng thần kinh có thể được đào tạo tự
động và trích xuất các đặc điểm hình ảnh làm tăng đáng kể độ chính xác của việc phát
hiện. Hạn chế chính của các phương pháp như vậy là tốn nhiều công sức tính toán,
trong hầu hết các trường hợp không phù hợp với các gói phần cứng giá rẻ như
Raspberry Pi.
Trong công việc này, để hoàn thiện, hai kỹ thuật chính đã được triển khai và cuối
cùng là so sánh:
• Máy vectơ hỗ trợ tuyến tính (SVM) được đào tạo trước với bộ mô tả tính năng

Biểu đồ độ dốc định hướng (HOG).


• Mô hình học sâu sử dụng Tensorflow .

23
Cả hai phương pháp đều dựa trên các đặc điểm chung của thuật toán học máy

Hình Lưu đồ phát hiện biển báo giao thông.


e. Thuật toán phát hiện đèn giao thông
Đèn tín hiệu giao thông là một trong những hướng dẫn thông tin quan trọng nhất
của tín hiệu giao thông: việc xác định trước chính xác đèn tín hiệu giao thông có lợi
cho việc lập kế hoạch trước đường đi của các phương tiện được nối mạng thông minh.
Vì vậy, việc nghiên cứu công nghệ nhận dạng đèn tín hiệu giao thông có ý nghĩa quan
trọng và triển vọng ứng dụng tốt.
Các phương pháp phát hiện đèn tín hiệu giao thông hiện có chủ yếu bao gồm các
phương pháp phát hiện dựa trên đặc điểm màu sắc và đặc điểm hình dạng. Để nhận
dạng đèn giao thông, các chức năng phải là:
• Thu thập hình ảnh và tiền xử lý các hình ảnh được thu thập.

• Nhà điều hành Canny để phát hiện cạnh.

• Phương pháp trích điểm pixel để nhận dạng màu đèn giao thông.

Các thuật toán khác được tối ưu hóa hơn lại bao gồm các giai đoạn đào tạo và phân
loại điển hình của mạng nơ-ron.
Tuy nhiên, nhóm đã quyết định thử triển khai một thuật toán có khả năng phát hiện
cả các màu semaphore để gửi tác phẩm đã hoàn thành trong Trạng thái dự án cuối
cùng trước cuộc thi tại chỗ.
Semaphore được sử dụng được hiển thị trong hình 4.11.

24
Hình Semaphore được sử dụng so với Đèn giao thông thực (phải).
Semaphore này không thể hiện độ tương phản cao đối với tất cả các màu: trong
điều kiện ánh sáng mạnh, màu sáng lên không dễ phân biệt và điều này thể hiện khó
khăn chính đối với thuật toán phát hiện. Tất cả các ví dụ tìm thấy trên web đều có thể
áp dụng cho đèn giao thông thực tế, trong đó phần lớn trong số chúng có độ tương
phản cao giữa 3 màu, vì người lái xe phải bị bắt ngay lập tức bởi màu BẬT và do đó
hành động: sự nhầm lẫn có thể gây ra thiệt hại lớn cho người lái xe và tất cả các
phương tiện khác tham gia giao lộ.
Thuật toán được đề xuất trong chương này có mục đích chính là thu thập kiến thức và
làm quen với thao tác với hình ảnh trong ngữ cảnh mà màu sắc của chính nó, chứ
không phải các đường viền của hình ảnh nhị phân/màu xám, quan trọng hơn là hiển thị
một giải pháp có thể áp dụng ngay lập tức cho thực tế. vấn đề lái xe tự trị. Tuy nhiên,
nó là cơ sở vững chắc để phát triển một thuật toán hoạt động để phát hiện màu sắc của
đèn giao thông thực trong đó màu được bật lên rất dễ thấy
- Phát hiện màu
Rõ ràng mục tiêu của thuật toán là tìm cách phát hiện 3 màu: đỏ, vàng và xanh
lục . Điều này có thể được thực hiện bằng cách sử dụng Ngưỡng màu , ý tưởng của
nó là giới hạn hình ảnh ở nơi có các màu xác định. Bất cứ nơi nào trong hình ảnh
không tương ứng với một trong những màu này được đặt thành 0 và hiển thị dưới
dạng màu đen. Để tách biệt hiệu quả các màu quan tâm, có một số cân nhắc cần đề
cập: không gian màu, ngưỡng ngưỡng và các biến thể đối với chiếu sáng. Thông
thường, hình ảnh được thể hiện trong không gian màu RGB trộn lẫn thông tin về
màu sắc và cường độ trên khắp các kênh của nó và điều này làm cho định dạng
RGB nhạy cảm với những thay đổi về ánh sáng. Đây là lý do tại sao nên chuyển đổi

25
hình ảnh sang không gian màu HSV hoặc HSL . Như đã đề cập trước đó, HSV là
viết tắt của:
• HUE: được mô hình hóa dưới dạng kích thước góc mã hóa thông tin màu.

• SATURATION: mã hóa cường độ của màu.

• GIÁ TRỊ (độ sáng): biểu thị mức độ mà màu tương ứng đó được trộn với màu

đen.
Không gian màu HSV sử dụng Angle để đo màu: 0 ° tượng trưng cho màu đỏ, tính
ngược chiều kim đồng hồ. Độ bão hòa đề cập đến độ tinh khiết của màu sắc và giá trị
của kênh này được xác định theo tỷ lệ phần trăm trong phạm vi [0 ,1 ]: một biểu diễn
tốt hơn được đưa ra

Hình Mô hình không gian màu HSV


3.3 phần code lập trình

26
3.3.1 Phần code chương trình nhận lane đường

27
28
29
30
Kết quả trên máy trên máy:

31
3.4 Thiết kế mô hình mô hình tự hành trên phần mềm slidword

Các lệnh dùng để thiết kê mô hình trên:

1. Extruded Boss/Base
2. Revolve Boss/ Bass
3. Swept Boss/Base
4. Lofted Boss/Base
5. Lệnh Extruded cut

32
6. Lệnh Revolved cut
7. Lệnh Lofted cut
8. Lệnh đối xứng 3d Mirror
9. Lệnh bo góc Fillet
10. Lệnh Shell

Chương 4: KẾT LUẬN

4.1.Kết luận

Trong báo cáo này, chúng tôi đã khám phá và phân tích sâu hơn về công nghệ và
ứng dụng của xe tự hành. Qua việc điều tra các thành phần chính của hệ thống xe tự
hành, chúng tôi đã nhận thấy sự phát triển đáng kể trong lĩnh vực này và tiềm năng
ứng dụng rộng lớn trong tương lai.

Chúng tôi đã thảo luận về các cảm biến như lidar, radar và camera, cũng như vai trò
của hệ thống điều khiển và phần mềm trong việc đảm bảo hoạt động an toàn và hiệu
quả của xe tự hành. Bằng cách tập trung vào học máy và trí tuệ nhân tạo, chúng tôi đã
thấy những tiến bộ đáng kể trong khả năng tự học và tự điều chỉnh của hệ thống. Mặc
dù đã có những tiến bộ đáng kể, nhưng vẫn còn nhiều thách thức cần phải vượt qua.
An toàn giao thông, tin cậy của người dùng và pháp luật vẫn là những vấn đề cần được
quan tâm. Đồng thời, việc tích hợp hệ thống xe tự hành vào giao thông công cộng và
các lĩnh vực khác cũng đặt ra nhiều thách thức mới.

Tuy nhiên, với sự tiến bộ không ngừng trong công nghệ và nghiên cứu, chúng tôi tin
rằng xe tự hành sẽ tiếp tục phát triển và trở thành một phần quan trọng trong cuộc sống
hàng ngày của chúng ta. Việc nghiên cứu và phát triển trong lĩnh vực này sẽ tiếp tục
mang lại nhiều cơ hội và tiềm năng mới.

4.2. Hướng phát triển tiếp theo

Trong tương lai, chúng tôi đề xuất tiếp tục nghiên cứu và phát triển trong các lĩnh
vực sau:

Nghiên cứu thêm về an toàn giao thông và tích hợp xe tự hành vào môi trường đô
thị. Tối ưu hóa hệ thống cảm biến và thuật toán điều khiển để cải thiện hiệu suất và độ
tin cậy. Điều chỉnh và phát triển pháp luật và quy định để hỗ trợ triển khai rộng rãi của
xe tự hành. Qua đó, chúng tôi hy vọng rằng công nghệ xe tự hành sẽ tiếp tục phát triển
và mang lại nhiều lợi ích cho xã hội và cuộc sống cá nhân của mọi người.

33
TÀI LIỆU THAM KHẢO
[1] J. Cusack, “How driverless cars will change our world,” Available at
https://www.bbc.com/future/article/20211126-how-driverless-cars-will-change-our-
world (11/2021).
[2] S. Coicheci and I. Filip, “Self-driving vehicles: current status of development and
technical challenges to overcome,” in 2020 IEEE 14th International Symposium on
Applied Computational Intelligence and Informatics (SACI), 2020, pp. 000255–
000260.
[3] S. Kim, “These are the 10 best family cars with self-driving features in 2022,”
Available at https://www.hotcars.com/ best-family-cars-with-self-driving-features/
(01/2022).
[4] Synopsys, “What is adas?”

Availableathttps://www.synopsys.com/automotive/what-is-adas.html.
[5] A. K. Jain, “Working model of self-driving car using convolutional neural network,
raspberry pi and arduino,” in 2018 Second International Conference on Electronics,
Communication and Aerospace Technology (ICECA), 2018, pp. 1630–1635.
[6] L. Venturi and K. Korda, Hands-on: Vision and Behaviour for Self-Driving Cars,
1st ed. Packt Publishing, 2020.

34

You might also like