Bên cạnh đó, các bài toán về giao thông cũng đang nhận được rất nhiều sự quan tâm trong cộng đồng công nghệ kỹ thuật, trong đó phải kể đến đề tài xe tự lái.Xe tự hành hay còn gọi là xe t
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘITRƯỜNG ĐẠI HỌC CÔNG NGHỆ
XÂY DỰNG HỆ THỐNG XÁC ĐỊNH LÀN ĐƯỜNG VÀ NHẬN DIỆN BIỂN BÁO GIAO THÔNG CHO XE TỰ
HÀNH TRÊN HỆ ĐIỀU HÀNH ROS
Sinh viên thực hiện: Trịnh Thị Cúc - 20020637
Lê Văn Thông - 20020724Giảng viên bộ môn: PSG.TS.Hoàng Văn Xiêm
KS.Nguyễn Cảnh Thanh
HÀ NỘI - 2023
Trang 2Lời Cảm Ơn
Nhóm xin gửi lời cảm ơn đến thầy Hoàng Văn Xiêm và thầy Nguyễn Cảnh Thanh đãtrực tiếp hướng dẫn, góp ý và chia sẻ kinh nghiệm quý báu để nhóm hoàn thành tốt mônhọc và đề tài này
Nhóm cũng xin chân thành cảm ơn Khoa Điện tử - Viễn thông, Trường Đại học Côngnghệ - Đại học Quốc gia Hà Nội đã tạo điều kiện thuận lợi để nhóm hoàn thành nhiệm vụhọc tập và nghiên cứu của mình
Hà Nội, ngày 01 tháng 06 năm 2023
Trang 3Mục lục
Chương 1 Giới thiệu đề tài 5
1.1.Giới thiệu chung 5
1.2.Mục tiêu và nhiệm vụ 6
Chương 2 Cơ sở lý thuyết 7
2.1.Định nghĩa về xe tự hành 7
2.2.Tổng quan về hệ điều hành ROS 9
2.3.Xử lý ảnh với thư viện OpenCV 11
Chương 3 Triển khai đề tài 12
3.1.Thực hiện ý tưởng 12
3.2.Mô tả hệ thống 12
3.3.Xây dựng môi trường mô phỏng Gazebo 13
3.3.1 Bản đồ hệ thống
3.3.2 Mô hình xe tự hành
3.3.3 Blob Detection sử dụng OpenCV
3.4.Xây dựng thuật toán phát hiện làn đường 16
3.5.Xây dựng thuật toán điều khiển xe 17
Chương 4 Kết quả và đánh giá 22
4.1.Kết quả 22
4.2.Ưu điểm 22
4.3.Hạn chế 23
4.4.Phương hướng phát triển 23
4.5.Kết luận 23
3
Trang 4LờI Mở ĐầU
Hiện nay, với sự phát triển mạnh mẽ của khoa học công nghệ kỹ thuật, rất nhiều nhữngsản phẩm công nghệ chất lượng cao ra đời Cùng với xu hướng đó, robot tự động đang trởnên ngày một phổ biến nhờ khả năng hoạt động chính xác ở các trường hợp nguy hiểm,khắc nghiệt đối với con người Một trong những chức năng cơ bản của robot là khả nănghoạt động theo chức năng yêu cầu mà không cần tới sự can thiệp của con người Bên cạnh
đó, các bài toán về giao thông cũng đang nhận được rất nhiều sự quan tâm trong cộngđồng công nghệ kỹ thuật, trong đó phải kể đến đề tài xe tự lái
Xe tự hành (hay còn gọi là xe tự lái, xe tự động) là loại xe ô tô có khả năng thực hiệncác chức năng lái xe mà không cần sự can thiệp hoặc điều khiển từ con người Điều nàyđược thực hiện thông qua sự kết hợp của các công nghệ và hệ thống thông minh như cảmbiến, máy tính, trí tuệ nhân tạo và hệ thống điều khiển tự động Các xe tự hành có khảnăng phân tích và hiểu được môi trường xung quanh thông qua cảm biến như camera,radar, lidar và hệ thống GPS Dựa trên thông tin thu thập được từ các cảm biến, máy tínhtrên xe tự hành sẽ xử lý và đưa ra quyết định để điều khiển chính xác các chức năng của
xe như lái, ga, phanh và tránh va chạm Mục tiêu của xe tự hành là tăng cường sự an toàn,giảm tai nạn giao thông và cải thiện hiệu suất và tiện ích của việc di chuyển Các công tycông nghệ hàng đầu và các hãng ô tô lớn đang đầu tư nghiên cứu và phát triển công nghệ
xe tự hành để đưa chúng ra thị trường trong tương lai
Trang 5Chương 1
Giới thiệu đề tài
1.1 Giới thiệu chung
Đề tài này liên quan đến việc phát triển hệ thống xe tự hành có khả năng nhận biết vàtuân thủ các biển báo giao thông, cùng với khả năng phát hiện và theo dõi đường để duytrì đúng làn đường khi di chuyển Mô phỏng trên Gazebo là một phần quan trọng của quátrình này, cho phép kiểm tra và đánh giá hiệu suất của hệ thống trước khi triển khai thựctế
Để xây dựng hệ thống xe tự hành bám đường dựa trên biển báo, cần có sự kết hợp củacác công nghệ như máy ảnh, xử lý hình ảnh, trí tuệ nhân tạo và các thuật toán phân loại
Hệ thống sẽ sử dụng các máy ảnh hoặc cảm biến khác để nhận dạng và phân loại biển báogiao thông, từ đó nhận diện các chỉ dẫn và giới hạn tốc độ trên đường
Mô phỏng trên Gazebo là quá trình tái tạo một môi trường ảo để kiểm tra và đánh giáhiệu suất của hệ thống xe tự hành Gazebo là một phần mềm mô phỏng phổ biến tronglĩnh vực robot và tự động hóa, cho phép mô phỏng các môi trường đa dạng và tương tácvới các phần tử khác nhau như xe, cảm biến, và địa hình.Việc mô phỏng trên Gazebo giúpxác minh tính đúng đắn của hệ thống, kiểm tra khả năng phát hiện và nhận diện biển báo,đảm bảo hệ thống có thể duy trì đúng làn đường và xử lý các tình huống giao thông phứctạp Nó cũng cho phép thử nghiệm và tinh chỉnh các thuật toán và cài đặt trước khi triểnkhai trên thực tế
Tóm lại, nhóm em đề tài nhằm phát triển và kiểm tra hệ thống xe tự hành có khả năngnhận biết biển báo và phát hiện đường trong một môi trường ảo Điều này đóng vai tròquan trọng trong quá trình phát triển và đánh giá hiệu suất của hệ thống trước khi triểnkhai trong môi trường thực tế
5
Trang 61.2 Mục tiêu và nhiệm vụ
Mục tiêu của nhóm khi thực hiện đề tài này là muốn phát huy được các tiềm năng củarobot trong thời đại hiện nay Đồng thời tạo ra sản phẩm đang là xu hướng công nghệ hiệnnay
Ngoài ra, trong quá trình nghiên cứu và thực hiện đề tài này, nhóm đã có khoảng thờigian quý báu để có cái nhìn tổng quan về những kiến thức đã học và phát huy sự sáng tạocủa mình trong chuyên ngành Kỹ thuật Robot và hơn thế nữa là khả năng giải quyết đượccác vấn đề đã đặt ra ban đầu
Nhiệm vụ nhóm đặt ra trong đề tài:
•Sử dụng phần mềm giả lậpGazebo và ROS để xây dựng môi trường mô phỏng vàgiao tiếp với robot
•Phát hiện làn đường cho xe tự hành
•Phát hiện biển báo
•Điều khiển xe di chuyển tự động theo đúng các biển báo và làn đường phát hiện được
Trang 7Xe tự hành có khả năng phân tích và hiểu được môi trường xung quanh thông qua cảmbiến như camera, radar, lidar và hệ thống GPS Dựa trên thông tin thu thập được từ cáccảm biến, máy tính trên xe tự hành sẽ xử lý và đưa ra quyết định để điều khiển chính xáccác chức năng của xe như lái, ga, phanh và tránh va chạm.
Mục tiêu của xe tự hành là tăng cường sự an toàn, giảm tai nạn giao thông và cải thiệnhiệu suất và tiện ích của việc di chuyển Xe tự hành có thể cung cấp lợi ích như khả năng
tự động hóa trong lưu thông giao thông, giảm áp lực lái xe cho con người và tăng khả năngtương tác và kết nối với hệ thống giao thông thông minh
Cấp độ 1 : Tự động hóa phần chức năng - Đây là loại xe có một số chức năng tự độnghóa nhất định, như hỗ trợ lái tự động trong một số tình huống như hỗ trợ đỗ xe tự động,
hỗ trợ hướng dẫn trong làn đường, và hệ thống cảnh báo va chạm Tuy nhiên, người lái
7
Trang 8vẫn phải tiếp tục giám sát và can thiệp khi cần thiết.
Cấp độ 2 : Tự động hóa tương đối - Ở cấp độ này, hệ thống tự động hóa có khả năngđiều khiển lái xe, ga, phanh và thực hiện một số chức năng lái xe cơ bản trong một số điềukiện đường cụ thể Tuy nhiên, người lái vẫn cần sẵn sàng can thiệp và giám sát hoạt độngcủa hệ thống
Cấp độ 3 : Tự động hóa điều kiện nhất định - Ở cấp độ này, hệ thống tự động hóa cókhả năng điều khiển toàn bộ quá trình lái xe trong một số điều kiện đường cụ thể Ngườilái không cần theo dõi hoạt động liên tục, nhưng vẫn phải sẵn sàng can thiệp khi hệ thốngyêu cầu
Cấp độ 4 : Tự động hóa cao - Ở cấp độ này, hệ thống tự động hóa có khả năng điềukhiển toàn bộ quá trình lái xe mà không cần sự can thiệp của người lái trong các điều kiệnđường nhất định Tuy nhiên, khả năng hoạt động của hệ thống có thể bị giới hạn trongmột số tình huống đặc biệt
Cấp độ 5 : Tự động hóa đầy đủ - Đây là cấp độ cao nhất của xe tự hành, trong đó hệthống có khả năng hoàn toàn tự động hóa tất cả các khía cạnh của việc lái xe trong mọiđiều kiện đường Người lái không cần can thiệp và có thể hoạt động trong chế độ toàn tựđộng
Hình 2.1: Phân loại xe tự hành
Trang 9Cấu tạo chung của xe tự hành
•Cảm biến: Xe tự hành được trang bị các loại cảm biến để thu thập thông tin về môitrường xung quanh Các cảm biến phổ biến bao gồm camera, radar, lidar và hệ thốngGPS Cảm biến giúp xe nhận biết và phân tích các yếu tố như đối tượng xung quanh,biển báo giao thông, dấu vết đường và điều kiện môi trường
•Hệ thống xử lý thông tin: Thông tin thu thập từ các cảm biến được gửi đến hệ thống
xử lý thông tin Đây là nơi xử lý dữ liệu và áp dụng các thuật toán để nhận diện,phân loại và hiểu thông tin về môi trường Hệ thống xử lý thông tin thường sử dụngtrí tuệ nhân tạo và các thuật toán học máy để giúp xe tự hành ra quyết định và hànhđộng
•Hệ thống điều khiển: Hệ thống điều khiển là trung tâm của xe tự hành, có nhiệm vụđiều khiển các chức năng lái xe như lái, ga, phanh và hệ thống treo Hệ thống nàydựa trên thông tin từ hệ thống xử lý thông tin và đưa ra quyết định để điều khiểncác bộ phận cơ khí của xe
•Hệ thống liên lạc và kết nối: Xe tự hành cần có khả năng liên lạc và kết nối để truyềntải thông tin giữa các xe tự hành khác, hệ thống giao thông thông minh và nguồn
dữ liệu ngoại vi khác Điều này giúp xe tự hành có thể nhận thông tin cập nhật vềđường đi, giao thông và các tình huống đặc biệt
•Hệ thống cơ khí và truyền động: Xe tự hành có các thành phần cơ khí và truyền độngtương tự như xe ô tô truyền thống Điều này bao gồm động cơ, hộp số, hệ thống lái,
hệ thống phanh và hệ thống treo Tuy nhiên, có thể có các cải tiến và điều chỉnh đặcbiệt để tương thích với hệ thống điều khiển tự động và khả năng tự lái của xe
•Hệ thống điều khiển và giao diện người dùng: Để tương tác với người dùng, xe tựhành cần có một giao diện người dùng thông minh Điều này có thể là màn hình cảmứng, hệ thống giọng nói hoặc các giao diện khác cho phép người dùng nhập thông tin
và tương tác với các chức năng của xe
2.2 Tổng quan về hệ điều hành ROS
ROS (Robot Operating System) là một framework (khung công việc) phần mềm mãnguồn mở được phát triển để xây dựng và quản lý các ứng dụng robot ROS cung cấp mộtloạt các công cụ, thư viện và giao thức để hỗ trợ việc phát triển phần mềm cho robot
9
Trang 10ROS giúp đơn giản và tiết kiệm thời gian việc lập trình các hành vi phức tạp của robot.ROS như là một mạng lưới điểm (node) được kết nối bởi nhiều node mà mỗi node có nhiệm
vụ riêng tương ứng với các thành phần cấu tạo nên robot Mỗi node riêng có thể được tùychỉnh phát triển và lập trình theo ý tưởng của người phát triển mà không cần quan tâmđến việc phải thống nhất sử dụng cùng một ngôn ngữ lập trình, điều đó có nghĩa là nodenày bạn phát triển trên ngôn ngữ C++ nhưng node khác bạn có thể phát triển trên ngônngữ Python
ROS bao gồm các cấu thành bởi các thành phần như sau
Nodes: đơn vị cơ bản để giao tiếp với các thành phần của Robot Ví dụ như một conrobot thường có các node như: Laser Scanner, Camera Các node có thể giao tiếp và tươngtác với nhau qua Master
Master : có vai trò kết nối các node với nhau, vì vậy, master luôn được khởi động đầutiên bằng câu lệnh roscore, sau đó ta có thể gọi bất cứ node nào trong hệ thống Khi gọixong, các node có thể kết nối và tương tác với nhau
Parameter Server : là một cấu trúc nhiều tham số có thể truy cập trong lúc chạy ROS.Các node sử dụng cấu trúc này nhằm lưu trữ và truy xuất các thông số trong thời gianchạy Do nó không có hiệu suất cao nên thường dùng với kiểu dữ liệu tĩnh, chẳng hạn nhưcác thông số cấu hình, thời gian hệ thống
Message: là một cấu trúc dữ liệu được các node dùng để trao đổi với nhau tương tựnhư kiểu double, int trong các ngôn ngữ lập trình Các node tương tác với nhau bằng cáchsend và receive ROS message
Topics: là phương pháp giao tiếp trao đổi dữ liệu giữa hai node, nó bao gồm nhiều cấpbậc thông tin mà chúng có thể giao tiếp thông qua ROS message Hai phương thức trongtopic bao gồm publish và subscribe
Services: là một giao tiếp trao đổi dữ liệu/ thông tin giữa hai node thông qua phươngthức request và response Thường được áp dụng trong trường hợp việc thực hiện một lệnhcần nhiều thời gian xử lý nên dữ liệu tính toán được lưu ở server và sẽ dùng khi cần xử lý.Bags: là một định dạng tệp trong ROS dùng để lưu trữ dữ liệu message với phần mởrộng là bag có vai trò quan trọng và có thể được xử lý, phân tích bởi các công cụ mô phỏngtrong ROS như Rviz
Trang 112.3 Xử lý ảnh với thư viện OpenCV
OpenCV là tên viết tắt của Open Source Computer Vision Library – có thể được hiểu
là một thư viện mã nguồn mở cho máy tính Cụ thể hơn OpenCV là kho lưu trữ các mãnguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gianthực
OpenCV cho phép cải thiện tốc độ của CPU và GPU khi thực hiện các hoạt động realtime Nó còn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thị giácmáy tính hay các learning machine khác
OpenCV được sử dụng cho đa dạng nhiều mục đích và ứng dụng khác nhau bao gồm:
Trang 12Trong môi trường mô phỏng, ta sẽ liên tục truyền hình ảnh thu được từ camera của
xe và hệ thống ROS, đồng thời nhận lại và thực thi các lệnh điều khiển bao gồm góc lái
và tốc độ Hình3.1 mô tả kiến trúc hệ thống chung: 1 mạng lane detector (phát hiện lànđường) và một mạng sign detector (phát hiện biển báo) từ hình ảnh mô phỏng Trình điềukhiển sẽ dựa vào kết quả nhận được từ việc xử lý hai nhiệm vụ trên và đưa ra quyết địnhđiều khiển cho xe
Trang 143.3.3 Blob Detection sử dụng OpenCV
Blob: là một nhóm pixel được kết nối trong một hình ảnh có chung một số thuộc tính(ví dụ như thang độ xám) Hình3.5 thể hiện các kết nối là các đốm màu và mục tiêu củaviệc phát hiện đốm màu là xác định và đánh dấu các vùng này
Cách hoạt động của Blob Detection
Thuật toán được điều khiển bởi các tham số và có các bước dưới đây:
•Thresholding: chuyển đổi ảnh ban đầu thành ảnh nhị phân theo ngưỡng từ old Các ngưỡng này được tăng dần theo thresholdStep cho đến khi maxThresh-old
minThresh-•Grouping: trong mỗi ảnh nhị phân, các pixel trắng được kết nối thành các nhómvới nhau
Trang 15Hình 3.3: Các loại biển báo
Hình 3.4: Các bước nhận diện biển báo
•Merging: tâm của các đốm màu nhị phân trong ảnh nhị phân được tính toán và cácđốm màu gầnminDistBetweenBlobs sẽ được hợp nhất với nhau
•Tinh chỉnh tham số: với các trường hợp cụ thể, các tham số như Circularity,Convexity, Inertia Ration có thể được tinh chỉnh để lọc loại màu mà ta cần
Để thực hiện Blob Detection, sau khi đã kiểm tra và tinh chỉnh các thông số, hình
??dưới đây là đoạn code cho phần vừa trình bày ở trên, giá trị trả về được dùng làm đầuvào cho phần tiếp theo
Kiểm tra hình ảnh thông qua model đã huấn luyện
Sử dụng model đã huấn luyện cùng với phân vùng ảnh đã được xác định ở bước trên,
ta tiến hành đối chiếu để có thể xác định được loại biển báo nào bằng cách quy về các giátrị được quy định trước Kết quả thu được như hình3.7 và3.8
15
Trang 16Hình 3.5: Phát hiện các đốm màu
3.4 Xây dựng thuật toán phát hiện làn đường
Hệ thống phát hiện làn đường gồm 2 phần: phận biệt làn đường (lane detection) và lập
kế hoạch di chuyển, lái xe (steering)
Phân biệt làn đường: sử dụng thuật toán Hough Transform - phương pháp dùng đểtrích xuất đặc trưng các hình dạng đơn giản như hình tròn, đường thẳng trong một hìnhảnh Trong thư viện OpenCV, phát hiện line bằng Hough Transform thực hiện bằng hàmHoughLines và HoughLinesP (Probabilistic Hough Transform)
Đầu tiên ta nhận ảnh từ camera:
Tiếp theo, chuyển ảnh từ không gian màu BGR sang GRAY Tạo một mặt nạ trắngbằng lệnh inRange trong khoảng từ 200-255 và sử dụng thuật toán Canny để phát hiệncác vạch phân làn
Từ ảnh trên, ta thấy nhiều vùng màu trắng KHÔNG phải vạch phân làn, quan sát thấy
nó nằm ở nửa trên của hình nên ta sẽ cắt bỏ nửa trên vì khi điều khiển xa thì ta quan tâmđến nửa dưới gần xe hơn
Trong hình ảnh hai làn đường thu được ở trên, đối với con người thì chúng ta có thểnhìn thấy bốn đường biểu thị cho hai làn đường Tuy nhiên đối với máy tính, chúng chỉ
là một loạt pixel màu trắng trên nền đen Do đó, sử dụngHough Transform để tạo cácđường thẳng từ hàng loạt pixel
Từ các đoạn thẳng có được từ bước trên, đoạn code dưới đây sẽ chuyển chúng thành