1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Ứng dụng nền tảng android automotive trong thiết kế ứng dụng camera cho đồng hồ số của xe hai bánh

62 0 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 đề Ứng dụng nền tảng Android Automotive trong thiết kế ứng dụng camera cho đồng hồ số của xe hai bánh
Tác giả Trịnh Trọng Hiếu
Người hướng dẫn Đoàn Duy, Khoa Kỹ thuật Máy tính, trường đại học Công Nghệ Thông Tin
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2023
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 62
Dung lượng 18,7 MB

Nội dung

Ban đầu nhóm tiếp cận với thư viện QCamera của Qt để phát triển ứng dụng camera, tuy nhiên thư viện này không hỗ trợ cho các thiết bị external camera nên nhóm đã chuyển sang hướng giải q

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

TRINH TRONG HIEU

KHOA LUAN TOT NGHIEP

UNG DUNG NEN TANG ANDROID AUTOMOTIVE

TRONG THIET KE UNG DUNG CAMERA CHO DONG

HO SO CUA XE HAI BANH

APPLYING ANDROID AUTOMOTIVE TO DESIGN CAMERA

APPLICATION FOR 2 WHEELERS CLUSTER

KY SƯ KY THUAT MAY TÍNH

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

TRINH TRONG HIEU

KHOA LUAN TOT NGHIEP

UNG DUNG NEN TANG ANDROID AUTOMOTIVE

TRONG THIET KE UNG DUNG CAMERA CHO DONG

HO SO CUA XE HAI BANH

APPLYING ANDROID AUTOMOTIVE TO DESIGN CAMERA

APPLICATION FOR 2 WHEELERS CLUSTER

KY SƯ KY THUAT MAY TÍNH

Trang 3

THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 75/QD-DHCNTT

ngày 15/02/2023 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LOI CAM ON

Dé hoàn thành được khóa luận tốt nghiệp này, chúng em xin chân thành gửi lời

cảm ơn đến quý thầy cô Trường Đại học Công nghệ Thông tin — Dai học quốc giaThành phố Hồ Chí Minh nói chung và quý thầy cô khoa Kỹ thuật Máy tính nóiriêng đã truyền đạt lại những kiến thức và những kinh nghiệm quý trong suốt những

năm học vừa qua.

Xin được gửi lời cảm ơn chân thành đến thầy Đoàn Duy, Khoa Kỹ thuật máytính, trường đại học Công Nghệ Thông Tin trong suốt thời gian vừa qua đã tận tìnhhướng dẫn chúng em trong suốt quá trình thực hiện đề tài khóa luận

Em xin chân thành cảm ơn anh Bùi Lê Thuận, anh Tống Anh Quân và tập thể

MS/EMC3XC của Công ty TNHH Bosch Global Software Technologies đã tận tình

hỗ trợ, góp ý chỉnh sửa trong thời gian thực hiện đề tài

Cũng xin được cảm ơn bạn Phan Phước Đạt đã tích cực cố gắng hỗ trợ dé hiện

thực khóa luận này.

Với thời gian nghiên cứu hạn chế, sự hiểu biết có hạn, khóa luận không thể

tránh khỏi những thiếu sót Em rat mong nhận được sự đóng góp của thay, cô, cácanh, cùng với những người quan tâm đề nội dung khóa luận được hoàn thiện hơn

Em xin chân thành cảm ơn!

Sinh viên

Trịnh Trọng Hiếu

Trang 5

1.22 Muc tiêu chỉ tiết.

1.3 Đối tượng và phạm vi nghiên cứu c+c+++2222vvvvrrrrrrrrrrrrrercee 513.1 _ Đối tượng nghiên cứu

1.3.2 Phạm vi nghiên cứu - - -+5+552SS+c2t+tsrexexerrkerereree 5

Chương2 | TONG QUAN CƠ SỞ LÝ THUYÉT VA PHAN CỨNG SỬ DỤNG

l6

2.1 Android Automotive OS + ¿+ St k2 HH Hư 16

2.1.1 — Giới thiệu về Android Automotive OS

2.1.2 Kiến trúc của Android Automotive OS: -cc + 17

2.1.3 Ưu điểm của Android Automotive

P PM 5 24

Trang 6

2.5.1 Tổng quan về android debug bridge -: -c:+cc5scc+ 25

2.5.2 adb trên Raspberry pi

2.6 Raspberry pI Sáng HH HH HH ngàn 27

2.6.1 Giới thiệu về Raspberry pi

2.6.2 Phan cứng 5222ccccEEEErtrrrrrrrrrrrrrrrrreerrre 28Chương3 THIẾT KÉ HỆ THÓNG

3.1 Tổng quan công VIỆC ¿-¿- 5552 St‡tsreterererrrrrrrrrrrrrrrrrrrrr.e DO

3.2 Xây dựng môi trường Android Automotive OS cho Raspberry pi

3.2.1 Setup môi trường build Android Automotive -. -+ -+ 30

3.2.2 Lấy source code của Android : -c:z5ccvsc+ccvsecrsrrvscee 31

3.2.4 Build Android linux kernel - -¿-¿- «5< sx‡cverevexekrrkree 34

3.2.5 Nạp Android Automotive OS đã build lên SD card - 35

3.3 Thiết kế giao diện -¿ 22222cccccrEccrtrerrrrerrrrrrrrrrrsrrrrrrecrceerr., 7

3.4 Nguyên lý hoạt động 55c 20 3.4.1 Main thread c- Sàn 40 3.4.2 Camera capture thread «cty 41

3.4.3 8 Second video recorder thread - + +5 c+c+x+xesrersrsreesee 42

3.5 Hiện thực các chức năng ¿-¿ ¿+ 11t ưư 44

3.5.1 Lấy dữ liệu từ camera -c-+cc+xztrerrkterrrrrkrrrrrrrrvee 443.5.2 Hiển thị dữ liệu của camera lên màn hình - -¿ + -s=-s+s+ 47

3.5.3 Record Video HH nh 47 3.5.3.1 Encode videO - ch HH1 4

Trang 7

3.5.4 CameraHiandler - 5c Stteteterrkekererrek 53

Chuong4 | KET QUA ĐẠT ĐƯỢC

4.1 Kết quả ứng dụng hiện thực được trên thực tế

4.2 Thông số đo lường hoạt động

4.2.1 _ Thông số hệ thống -22:¿++2222Vvvvvrrrrrrrrrrrrrrrrrrrrer 5

4.2.2 Do đạc cho chức năng của camera

Chương 5 KÉT LUẬN VÀ ĐÁNH GIIÁ ©2222+2222+2zzevzveerrrrrscee 605.1 Kết quả đạt được

5.1.1 Thuận lợi -c- + re 60

5.1.2 Khó khăn HH, 60

5.1.3 Các hạn chế iO 8 " 605.2 Hướng phát triỀn 2-2222+++2222EEEE tri 61

Trang 8

DANH MỤC HÌNH

Hình 1.1 Đồng hồ số truyền thống 22222¿£222222vv2+rrrtEEEEEErvrrrrrrrrrrrrer 13Hình 1.2 Đồng hồ điện tử -2¿-©2222++22EE++E22E11122221111222111 222112 221 14

Hình 2.1 Android Automotive trên polestar 2 5: 552525 s£sc+tzx+eererx 16

Hình 2.2 Kiến trúc của Android Automotive Hình 2.3OS -+ 17Hình 2.4 Kiến trúc các lớp trừu tượng của Android Automotive - - 19

Hình 2.5 Logo của QT - ¿+ - + S112 219121111211 111012110111 01112 H1 0101 rên 20 IạIi)ì0116:1áu1000).50ï.09 0 21

Hình 2.7 Qt trên Android Automotive oo cccccceesceseseesesseseeeeseeeeseeseeecseeesaeeeeteeseeeens 22

Hình 2.8 Một ứng dụng được thiết kế sử dụng QML sccscssssesssssssessessseescessseeecessees 22Hình 2.9 Minh họa về thiết bị UVC -.cccccccrrkrrtrrrrrrrrrrrrrriiirriio 23

Hình 2.10 Sơ đồ hoạt động của adb - + cv ng it 26

Hình 2.11 Kết nối Raspberry pi với router cho adb ¿ +22sszz+2csscez 26

Hình 2.12 Raspberry 4 model E ¿- - - ¿5+ 5+ ++£E+++E#EEEk+EEkeEeErkrkekekrkrkrkeree 27

Hình 3.1 Install các packages cần thiết trên Ubuntu cho build AAOS 30

Hình 3.2 Install repo Wa: A GHÀ,.TEE coi

Hình 3.3 Tao thư mục dé build AAOS cccccsssscsssssssesssssssecssssesscssssecsesssuescessseeseessies 31

Hình 3.4 Config git c5 SE ST HH H1 11H HT H1 tt 31

Hình 3.5 Repo itt eee eeeescseseescsescsseesescsessesssesesessesesssesssseseeseeesseeeeee Od

Hình 3.6 Lay file local manifest dé cấu hình cho việc build AAOS 32

Hình 3.7 Quá trình repo Syn ¿E121 St SE 1211 HH HH1 1 ve 32

Hình 3.8 thêm HW reset cho Bluetooth HCI -+-5-5+5<5++<++<+-c+-+ 33

Hình 3.9 Disable low power mode cho Bluetooth -‹-5 +-+s<-<+<+5.3⁄3 Hình 3.10 Enable audio & camera hal 64bit build ¿-¿-+ + << <+++++s£<£+xsee 34 Hình 3.11 Build Android Linux Kernel -. - 5-5555 cc+S+‡xce+ecrxerzxrrxee 34

Hình 3.13 Phân vùng bộ nhớ cho SD card ¿ - 5-5252 5+2++*ts++ersxexerrrrx 35

Hình 3.14 Tạo file system cho sdx1 và sdX⁄{ -¿- 5c <5 Stsxéxkrrkekererek 35

Trang 9

Hình 3.16 sao chép system image và vendor image vào sdx2 và sdx3 36 Hình 3.17 Android Automotive OS trên Raspberry pi ‹-‹-c-«-c-« -.Ó

Hình 3.18 Giao diện màn hình chính của €ÏuS(€T - 5-5 5+5 £+xs++veezvxsee 37

Hình 3.19 Giao diện màn hình menu của €ÌuS(€T -¿- - ¿+5 sss++sss+vzes+>sx 37

Hình 3.20 Giao diện camera app của cÏUS(€T -55+5+ces«ceeseeexevexe 28Ỷ

Hình 3.21 Sơ đồ các thread của hệ thống -2¿¿©22+++22E++z++2vzxzersrrrscee 39

Hình 3.22 Finite state machine của chức năng video record -‹-‹- s 40

Hình 3.23 Sơ đồ hoạt động của camera capture thread - : :5c5s+c+ec2 41

Hình 3.25 Sơ đồ giải thuật lưu video back up 8 giây không dùng FIFO 43

Hình 3.26 Cấu trúc của lớp uvc_thread cho việc lấy dữ liệu từ camera 44

Hình 3.27 Khởi tạo libuve COTI€X( - 5c 2233313 SE +tEEEEEErkEeterrsersesrrrrerrsesrree 45

Hình 3.28 Tìm kiếm và kết nói với thiết bị uvc c-eecccceeerrrrrrreeeg 45

Hình 3.29 Setup format cho camera streaming 46

Hình 3.30 Setup stream format và bắt đầu stream 6Hình 3.31 Hiển thị video từ camera lên màn hình 7

Hình 3.32 Cai đặt codec cho việc encode video 8

Hình 3.33 Cài đặt AVCodecContext 48

Hình 3.34 Cấp phát và khởi tao cho các A VFrame -::cz+2sccze+z 49

Hình 3.35 thiết lập SwsCOntext - 222222+£2222EESS+++rtttEEEEEYvrrrrrrrrrrrrrrrcee 50

Hình 3.36 Chuyển đổi định dang frame cho việc encode -:s+ 50

Hình 3.37 Encode frame + ¿+ + E xxx SE 1T n HH ưy 51

Hình 3.38 Thao tác với dir liệu nhận được theo các state của encoder 52

Hình 3.39 Các hàm thao tác với người dùng -¿-¿- +5 ccscesxzxserrsrx 53

Hình 3.40 Cấu trúc của lớp CameraHandler scsscssssssescsssseessssssesssssseeeseesseeesessees 54

Hình 4.1 Màn hình chính của cluster trên AAOS - ¿Street 55

Hình 4.2 Màn hình menu của cluster trên AAOS - ++5c+c+cccsccseecee 56 Hình 4.3 Màn hình chính của ứng dụng camera trên AAOS - «+ 56

Hình 4.4 Màn hình của Media Player đang phát triển cho cluster trên AAOS 57

Trang 10

DANH MỤC BANG

Bang 2-1 Một số frame format thông dụng của UVC -cz+2sccec+ 24Bang 2-2 Các thông số phần cứng của Raspberry 4 model B . - 29Bảng 4-1 Thông số đo đạc hệ thống của cluster : ¿©225c++2cvsvcecrz 58Bang 4-2 Thông sé đo đạc các chức năng camera của cÏusfer - 59

Trang 11

User Interface

Trang 12

TÓM TÁT KHÓA LUẬN

Trong dé tài khóa luận nhóm tiến hành nghiên cứu đề có thé thiết kế ứng dụng

camera có các chức năng hiền thị và quay lại video lấy được từ camera trên AndroidAutomotive OS với nền tang Qt

Hướng tiếp cận ban dau là sử dụng Java va Kotlin dé phát triển ứng dụng Tuy

nhiên bên phía công ty TNHH Bosch Global Software Technology muốn tái sử

dụng lại source code của hệ thống cluster được phát triển bằng Qt nên nhóm đã

quyết định sử dung Qt dé phát trién ứng dụng

Ban đầu nhóm tiếp cận với thư viện QCamera của Qt để phát triển ứng dụng

camera, tuy nhiên thư viện này không hỗ trợ cho các thiết bị external camera nên

nhóm đã chuyển sang hướng giải quyết khác là sử dụng một thư viện thứ ba dé đọc

dữ liệu từ camera, và thư viện được sử dụng là libuvc.

Với việc sử dụng thư viện libuvc đề đọc đữ liệu từ camera, đề tài đã xây dựng ra

một số kết quả nhất định như là đã có thé tích hợp được giao điện đồng hồ số đã

được tích hợp trước đó lên Android Automotive đồng thời cũng tạo ra được một

ứng dụng cho phép tương tác được với camera trên nền tảng này

Trang 13

Chương 1 GIỚI THIỆU DE TÀI

1.1 Giới thiệu về đề tài

Đồng hỗ số của xe gắn máy là một bộ phận có vai trò hết sức quan trọng trong

các loại phương tiện giao thông nói chung và trên xe gắn máy nói riêng Cụm đồng

hỗ của xe gắn máy giúp người tham gia giao thông điều khién và theo doi phương

tiện, đảm bảo an toàn trong quá trình tham gia giao thông.

Hiện nay các dòng sản phâm đồng hồ analog truyền thống vẫn đang chiếm đa

số trên thị trường, tuy nhiên loại đồng hồ này vẫn còn nhiều nhược điểm như là

lượng thông tin hiển thị còn hạn chế Với việc phát triển không ngừng của côngnghệ trong những năm gần đây, hệ thống cụm đồng hồ hiền thị kỹ thuật số đã đượcphát triển và ứng dụng rộng rãi trong các phương tiện di chuyền, phổ biến nhất là

trên xe 6 tô Việc sử dụng đồng hồ kỹ thuật số để hiền thị thông tin hỗ trợ giám sát

và điều khiển mô tô đã được nghiên cứu và phát triển trong những năm gần đây

Đồng hồ kỹ thuật số có nhiều ưu điểm vượt trội hơn so với đồng hồ analog truyền

thống như là giúp hiển thị được nhiều thông tin hơn, giao diện bắt mắt hơn, thuậntiện tương tác và hỗ trợ kiểm soát phương tiện, cho phép ứng dụng nhiều kỹ thuật

mới giúp nâng cao độ an toàn và hiệu quả trong sử dụng phương tiện Các tính năng

của đồng hồ số là vượt trội so với đồng hồ cơ truyền thống Hình 1.1 và 1.2 minh

họa hình ảnh về hai loại đồng hồ kỹ thuật số và đồng hồ cơ truyền thống

Trang 14

Hình 1.2 Đồng hồ điện tử

Các ứng dụng camera trên xe hai bánh còn chậm phát triển do tính ứng dụng

còn chưa cao Tuy nhiên với sự phát triển chóng mặt của các ứng dụng thị giác máytính trong những năm gan đây các ứng dụng camera có thé được sử dụng như nhữngnền tảng cốt lõi để hiện thực và đưa các ứng dụng này lên các hệ thống xe moto

Nhận thấy được tiềm năng phát triển của nền tảng Android Automotive OS,

được giới thiệu gần đây và đã thu hút sự quan tâm của các hãng xe lớn như Volvo,BMW, Audi Cùng với đó là sự phát triển không ngừng nghỉ của các ứng dụng thị

giác máy tính với nền móng là các ứng dụng thu nhận dữ liệu từ camera Nhóm đã

quyết định sử dụng nền tảng Android Automotive OS để nghiên cứu và phát triểnứng dụng camera đề tích hợp cho đồng hồ kỹ thuật só

1.2 Mục tiêu của đề tài

1.2.1 Mục tiêu tổng quát

Với sự hỗ trợ của Công ty Bosch Global Software Technologies, nghiên cứu déứng dụng Android Automotive trong phát triển ứng dụng camera cho hệ thống đồng

ho kỹ thuật số của phương tiện giao thông hai bánh Sử dụng nền tang QT và phát

triển trên Raspberry Pi 4 model B

1.2.2 Mục tiêu chỉ tiết

Trang 15

- Thiết lập và build Android Automotive OS cho Raspberry Pi.

- Tái sử dụng mã nguồn đồng hồ hiền thị kỹ thuật số sử dụng nền tảng Qt đượccung cấp và hỗ trợ bởi công ty Bosch Global Software Technologies

- Tạo được một ứng dụng có các chức năng camera cơ bản được tích hợp trong

hệ thống đồng hồ số

1.3 Đối tượng và phạm vi nghiên cứu

1.3.1 Đối tượng nghiên cứu

Đối tượng nghiên cứu chính trong khóa luận là Android Automotive, hệ điều

hành mã nguồn mở cho các hệ thống In-Vehicle Infotainment (IVI) của các hệ

thống xe được phát triển bởi Google

1.3.2 Pham vi nghiên cứu

Đề tài sẽ tập trung nghiên việc phát trién một ứng dụng camera với các chức năng

cơ bản như streaming, record video và một chức năng đặc biệt cho phép lưu dữ

liệu trong một khoảng thời gian 8 giây trước một trigger không biết trước được

Trang 16

Chương 2 TONG QUAN CƠ SỞ LÝ THUYET VA PHAN CỨNG SỬ

DỤNG

2.1 Android Automotive OS

2.1.1 Giới thiệu về Android Automotive OS

Hinh 2.1 Android Automotive trén polestar 2

Android Automotive (hay còn gọi là Android Automotive OS hoặc AAOS)

là một biến thé của hệ điều hành Android của Google, được thiết kế dé chuyên dụng

để ứng dụng trong các hệ thống dashboard trong các phương tiện xe hơi Được giớithiệu vào tháng 3 năm 2017 [1], nền tảng này được phát triển bởi Google và Intel,

hợp tác cùng với các nhà sản xuất ô tô lớn như Volvo và Audi Android Automotive

OS được tạo ra nhằm mục đích cung cấp một hệ cơ sở mã nguồn mở cho các nhà

sản xuất phương tiện đề phát trién phiên bản hệ điều hành của riêng họ Bên cạnhcác tác vụ thông tin giải trí, chang hạn như nhắn tin, điều hướng và phát nhạc, hệ

Trang 17

điều hành nhằm xử lý các chức năng dành riêng cho xe như điều khiển điều hòa

không khí, hiển thị thông tin của xe

Trái ngược với Android Auto, Android Automotive là một hệ điều hành đầy đủ

chạy trên thiết bị của phương tiện, không phụ thuộc vào smartphone đề vận hành

Android Automotive là một hệ điều hành mã nguồn mở và do đó, nhà sản xuất ô tô

có thể sử dụng nó mà không cần Google Automotive Services (GAS), GAS là tập

hợp các ứng dụng và dịch vụ (Google Maps, Google Play , Trợ lý Google, v.v.) mà

OEM có thể trả phí để được cấp phép sử dụng và tích hợp vào hệ thống thông tin

giải trí trên xe của họ Volvo, Ford và GM đang sử dụng AAOS với GAS.

2.1.2 Kiến trúc của Android Automotive OS:

APPLICATION FRAMEWORK

BINDER IPC PROXIES

ANDROID SYSTEM SERVICES

Trang 18

Về tổng quan Android Open Source Project có thể được chia ra làm các thànhphan chính như sau

e Application framework và Application

e Android Automotive system service

e Hardware Abstraction Layer

e Linux kernel

Application framework Còn thường được gọi là “HMI Layer”, Application

framework layer cung cấp nhiều higher-level-services cho các ứng dụng dưới dangcác lớp Java Các nhà phát triển ứng dụng được phép sử dụng các dịch vụ này trong

các ứng dụng của họ.

Service layer Các System service nằm trong trong Service layer và được khởi động

bởi SystemServer Chúng chạy dưới dạng một System process giúp cung cấp cho

chúng các đặc quyền bồ sung mà Dịch vụ Android thông thường không có Cách

tiếp cận này tạo cơ hội cho các OEM phát triển các ứng dụng khác, có thé sử dụngdich vụ mà không cần sao chép mã nguồn Hơn nữa, các OEM có thé sử dung các

dich vụ như một lớp bồ sung dé tránh giao tiếp trực tiếp giữa các ứng dụng và

Hardware Abstraction Layer vì các lý do về bảo mật

Vehicle HAL Vehicle HAL cho phép các system service có thé truy cập đến cáccar-specific interfaces, theo một cách có thể được mở rộng và không phụ thuộc vàophương tiện Các interfaces này bao gồm

e _ Truy cập tín hiệu đến/từ ECU trên xe

e Truy cập vào các tín hiệu được tạo ra từ bộ vi điều khiển của xe tới hệ điều

hành IVI

e _ Truy cập vào các chức năng định hướng dịch vụ có sẵn trên vehicle network

Ngoài ra Android Automotive OS còn được Google mở rộng thêm với những

thanh phần sau

e Car system application

Trang 19

e Car API

e Car service

e Vehicle Hardware Abstraction Layer

AOSP Apps OEM Apps 3" Party Apps

Android System

Services

Hình 2.4 Kiến trúc các lớp trừu tượng của Android Automotive2.1.3 Ưu điểm của Android Automotive

-_ Giao diện trực quan dé sử dụng, thân thuộc với người dùng.

- Android Automotive có tính tích hợp cao với các ứng dụng trên hệ điều hành

Android truyền thống

Trang 20

- Android Automotive là một hệ điều hành mã nguồn mở, nên nó có thể cho

phép các nhà phát triển xe cấu hình, điều chỉnh tùy theo phần cứng và nhu

cầu sử dụng

- Lớp Hardware abstraction của Android Automotive cung cấp một interface

nhất quán cho Android framework bat kê lớp truyền tải vat lý

2.2 Qt:

2.2.1 Tổng quan về Qt:

Qt là một nên tang đa nền tảng thường được sử dụng như một bộ công cụ đồ

họa, mặc dù nó cũng rất hữu ích trong việc tao các ứng dụng CLI Nó chạy trên ba

hệ điều hành máy tính để bàn chính Window,linux và Mac Os, cũng như trên các

hệ điều hành di động, chẳng hạn như Symbian, Nokia Belle, Meego Harmattan,

MeeGo hoặc BBI0 và trên các thiết bị nhúng.

Qt được sử dụng dé phát triển Graphical User Interface (GUI) và các ứng

dụng đa nền tảng chạy trên tất cả các nền tảng máy tính để bàn chính và hầu hết cácnên tảng di động hoặc nhúng Hau hết các chương trình GUI được tạo bằng Qt đều

có native-looking interface, trong trường hợp đó, Qt được phân loại thành widget

toolkit Các chương trình không phải GUI cũng có thé được phát triển bằng Qt,

chẳng hạn như các công cụ dòng lệnh và các ứng dụng console Một ví dụ về

chương trình không phải GUI như vậy sử dụng Qt là web framework Cutelyst.

Trang 21

Qt hỗ trợ nhiều trình biên dịch khác nhau, bao gồm trình biên dich GCC

C++, Visual Studio Suite, PHP thông qua tiện ích mở rộng cho PHP5 Qt cũng cung

cấp Qt Quick, bao gồm declarative scripting language được gọi là QML cho phép

sử dụng JavaScript để cung cấp logic Với Qt Quick, việc phát triển ứng dụng

nhanh chóng cho thiết bị di động trở nên khả thi, trong khi logic vẫn có thé được

viết với code native để đạt được hiệu suất tốt nhất có thể

Các tính năng khác bao gồm truy cập cơ sở dữ liệu SQL, phân tích cú pháp XML,phân tích cú pháp JSON, quản lý luồng va network support

2.2.2 Các module quan trọng của Qt

Ké từ phiên bản Qt 4.0 Qt được chia ra làm nhiều module riêng biệt Kiến trúc

của Qt được chia ra làm hai loại module chính: Qt essentials và Qt add-on [2]

Trang 22

Các module add-on của Qt bổ xung thêm một số chức năng dé phát triển thiết bị.Các module này có thé chỉ khả dụng trên một số nền tang phát triển nhất định.

2.2.3 Qtcho Android Automotive OS

Qt framework có thé được tích hợp trên Android Automotive OS Qt trên

Android Automotive OS bao gồm bộ UI toolkit, các rang buộc hệ thống cho

Android, Qt IF framework va các Android Automotive bindings.

Qt Android Automotive framework cho phép tận dụng nhiều tinh năng của Qt

framework trong khi vẫn có thẻ triển khai ứng dụng native cho Android Automotive

OS bằng cách sử dụng một số tính năng được tích hợp sẵn Framework được thiết

kế và phát triển để giúp tạo nên các giao diện người dùng phong phú cho hệ thống

Trang 23

QML (Qt modeling Language) là một user interface markup language Nó là một

dang ngôn ngữ khai báo (tương tự như CSS va JSON) dé định thiết kế các ứng dụnggiao diện người dùng Nó được liên kết với QtQuick, bộ công cụ dé thiết kế giao

diện người ding ban đầu do Nokia phát triển trong Qt framework Qt Quick được

dùng trong các ứng dụng di động ma trong đó touch input, fluid animation và trải

nghiệm người dùng là rat quan trọng

2.4 Thư viện libuve

2.4.1 UVClàgì

USB Video Class (UVC) là lớp thiết bị USB mô tả các thiết bị có khả năng truyềnphát video như webcam, máy quay kỹ thuật số, bộ chuyền mã, bộ chuyên đổi video

analog sử dụng giao thức USB [3]

Chuẩn UVC được sử dụng hầu hết trên các thiết bị USB camera và các thiết

bị video, dang chú ý nhất ở các dòng sản pham webcam Hau hết các hệ điều hành

cho phép việc xem hình ảnh lấy từ camera thông qua ứng dụng chuyên dụng đang

sử dụng một custom UVC driver cho việc điều khiển camera [4]

Chuẩn UVC tập trung vào việc xác định các camera setting va các biến phổ

Trang 24

cao có thé được tái sử dụng giữa hầu hết các thiết bi Tính phổ quát này cho phép sửdụng UVC dé điều khiển và sử dụng một số lượng lớn thiết bị với độ phân giải, tốc

độ khung hình và các định dạng hình ảnh khác nhau.

UVC sẽ cần đảm bảo một số yêu cầu nhất định cần được thỏa mãn ở firmware

của các thiệt bị camera.

- Mỗi thiết bị UVC phải có một loạt các định dạng được xác định trước trong

phan firmware có thé được đọc theo tiêu chuẩn, cung cấp tat cả thông tin cần

thiết cho driver trước khi khởi tạo streaming, bao gồm kiểu dữ liệu của

output và color mode của hình ảnh nhận được (Bang 1).

- Mỗi thiết bị UVC phải hỗ trợ các lệnh tiêu chuẩn được gửi qua USB

interface đề bắt đầu và dừng streaming

- Mỗi thiết bi UVC phải gửi lai frame cho driver trong một định dang tiêu

chuẩn hóa

Bảng 2-1 Một số frame format thông dụng của UVC

Format Data type Color mode

MJPEG UInt§ RGB

RGB UInt§ RGB

Grayscale UInt8/UInt16 Mono

YUYV UInt8 RGB/Mono Uncompressed UInt8/UIntl6 RGB/Mono

2.4.2 libuve

libuvc là thư viện đa nền tảng dành cho thiết bi video USB [5], được xây dựng

trên libusb và libjpeg Nó cho phép kiểm soát chỉ tiết các thiết bị video USB, giao

tiếp với các USB Video Class (UVC) tiêu chuẩn, cho phép các nhà phát triển viết

trình điều khiển cho các thiết bị không được hỗ trợ trước đó hoặc chỉ truy cập các

Trang 25

Hai thư viện chính được libuvc sử dụng để cho phép giao tiếp với các thiết bị

UVC là libusb , một thư viện mã nguồn mở được sử dụng pho biến cho các dự ánliên quan đến thiết bi USB và libjpeg , một thư viện mã nguồn mở được sử dụng dénén/giải nén jpeg Libusb được sử dụng đề quan lý kết nối USB với camera và dégửi các lệnh giao thức UVC tiêu chuẩn đề điều khiển camera Khi libuvc lần đầu

tiên kết nối với một thiết bị, nó sẽ sử dụng libusb đề có được device handle đề điều

khiển camera, ngăn cho nó không bị sử dụng bởi bất kỳ chương trình nào khác Saukhi đã giành được quyền điều khiển camera, libuvc sẽ thiết lập các chế độ thu thập

dữ liệu được hỗ trợ, như được định nghĩa trong tiêu chuẩn UVC Đây là những chế

độ được đảm bảo có thể lấy được frame từ camera khi được chọn Tiếp theo, sau khi

người dùng chọn một acquisition mode va chon “Acquire”, libuvc sẽ tạo một image

stream từ camera Nó sử dụng device handle được tạo bởi libusb gắn nó với một

callback function được kích hoạt mỗi khi nhận được một frame từ thiết bị Trong

callback function người dùng có thể thực hiện bat kỳ quá trình xử lý nào mà họ cần

trước khi frame được giải phóng và khung hình tiếp theo được lấy từ camera [4]

2.5 Android debug bridge

2.5.1 Tổng quan về android debug bridge

Android Debug Bridge (adb) là một công cụ command line linh hoạt cho phép

giao tiếp với một thiết bị Android Lệnh adb tạo điều kiện cho developer tương tác

với thiết bị qua nhiều hành động khác nhau, chẳng hạn như cài đặt và gỡ lỗi ứng

dụng adb cũng cung cấp quyền truy cập vào Unix shell qua đó có thể sử dụng đề

chạy nhiều lệnh khác nhau trên thiết bị Đây là một chương trình dạng client-server

bao gồm ba thành phần [6]:

¢ Client dé gửi lệnh Client được chạy trên máy tinh dé phát triển ứng dụng

e¢ Một adb daemon (adbd), chạy các lệnh trên thiết bị Daemon chạy dưới dạng

background process trên mỗi thiết bị

© Một server, quản lý giao tiếp giữa client và daemon Server chạy dưới dạng

Trang 26

Hình 2.10 Sơ đồ hoạt động của adb

2.5.2 adb trên Raspberry pi

Dé có thé thiết lập kết nói adb trên Raspberry pi trước tiên ta cần kết nối giữa PC

va Raspberry pi thông qua một router như hình dưới [7].

Hình 2.11 Kết nối Raspberry pi với router cho adb

Sau đó ta cần tim dia chi IP của Raspberry pi Ta cần truy cập vào Router

setting page, vao trinh duyét web nhap vao dia chi IP cua router vi du 192.168.0.1.

Sau đó vào phan parental control dé xem các thiết bị kết nối với router Địa chi IP

cua Raspberry pi sé là dia chi cua unknown.

Trang 27

Kế tiếp trong terminal ta nhập adb connect <địa chỉ IP của Raspberry pi> đềthiết lập kết nối với adb Ta có thể dùng adb devices dé kiểm tra các thiết bị adb đã

được kết nối

2.6 Raspberry pi

2.6.1 Giới thiệu về Raspberry pi

Raspberry Pi là máy tính với chi phí thấp kích cỡ nhỏ va chạy HDH Linux, với

mục tiêu chính của chương trình là giảng dạy máy tính cho trẻ em Raspberry Pi

được phát triển bởi Raspberry Pi Foundation — là tổ chức phi lợi nhuận với tiêu chí

xây dựng hệ thống mà nhiều người có thể sử dụng được trong những công việc tùy

khác nhau Đặc tính của Raspberry Pi xây dựng xoay quanh bộ xử lí SoC

Broadcom BCM2835 bao gồm CPU, GPU, bộ xử lí âm thanh, video, và các tinh

năng khác.

Raspberry Pi không thay thế hoàn toàn hệ thống để bàn hoặc máy xách tay Nó

không thể chạy Windows trên đó vì BCM2835 dựa trên cấu trúc ARM nên không

Trang 28

hỗ trợ mã x86/x64, nhưng vẫn có thé chạy bằng Linux với các tiện ích như lướt

web, môi trường Desktop và các nhiệm vụ khác Tuy nhiên Raspberry Pi là một

thiết bị đa năng với nhiều phần cứng có giá thành rẻ nhưng rất hoàn hảo cho những

hệ thống điện , thiết lập hệ thống tính toán rẻ tiền cho những bài học trải nghiệm lập

trình.

2.6.2 Phần cứng

Các tính năng chính của sản phẩm này bao gồm:

Bộ vi xử lý lõi tứ 64-bit hiệu suất cao

Hỗ trợ hiền thị kép ở độ phân giải lên đến 4K thông qua một cặp cổng HDMI, giải mã video phan cứng lên đến 4Kp60, RAM lên đến 8GB, kép

micro-Mạng LAN không dây băng tần 2.4/5.0 GHz, Bluetooth 5.0, GigabitEthernet, USB 3.0 và khả năng PoE (thông qua tiện ích bổ sung PoE HAT

Trang 29

Bảng 2-2 Các thông số phần cứng của Raspberry 4 model BThông số Raspberry pi 4 Model B

Chip (SoC)Broadcom BCM2711

CPU 1.5GHz, lõi tứ Cortex-A72 (ARM v8) 64bit

GPU Broadcom VideoCore VI, 500OMHz

Bộ nhớ (SDRAM) 1,2, 4 or 8 GB

USB 2.0 port 2

USB 3.0 port 2

USBC 1

Video input 15-pin MIPI camera interface (CS) connector

Luu trit SD card

Mang 10/100/1000 Mbit/s

Xuất nhập 17x GPIO plus the same specific functions, HAT, and an

additional 4x UART, 4x SPI, and 4x I2C connectors.

Nguồn 600 mA (3 W) average when idle, 1.25 A (6.25 W)

maximum under stress (monitor, keyboard, mouse and Ethernet connected), 3 A (15 W) power supply

recommended Size 85.60 mm x 56.5 mm x 17 mm

Hé diéu hanh 46g

Trang 30

Chương 3 THIẾT KE HỆ THONG

3.1 Téng quan công việc

Mục tiêu của dé tài là sử dung Qt với nền tang Android Automotive OS dé tạo

ra một ứng dụng camera trên giao diện của hệ thống đồng hồ sé được Bosch phát

triển trước đó

3.2 Xây dựng môi trường Android Automotive OS cho Raspberry pi

3.2.1 Setup môi trường build Android Automotive

Dé build được Android Automotive đầu tiên ta cần chuẩn bị môi trường build Ta

có thể build trên Ubuntu hoặc Debian 64 bit với bộ nhớ khả dụng của hệ thống là

400GB [9]

Ta cũng cần đảm bảo rằng Python phiên bản 3.8 hoặc mới hơn được cài đặt trên

hệ thống

Tiếp đến ta cài đặt các package cần thiết cho việc build Android Automotive OS

apt-get install -y gcc h64-Linux-gnu

Hình 3.1 Install các packages cần thiết trên Ubuntu cho build AAOS

Sau đó ta cũng cần install repo đề có thé lấy source code AOSP về máy

sudo apt-get update

sudo apt-get install repo

Hình 3.2 Install repo

Trang 31

3.2.2 Lấy source code của Android

Sau khi cài đặt Repo launcher, tiếp đến ta setup client đề truy cập Android source

repository.

Đầu tiên Tạo một thư mục trong để chứa các tệp làm việc:

mkdir WORKING_DIRECTORY #

cd WORKING_DIRECTORY #

Hinh 3.3 Tao thu muc dé build AAOS

- Configure Git bằng tên thật và địa chỉ email của ta Dé sử dung Gerrit, ta cần

phải có địa chỉ email được kết nối với tài khoản Google đã đăng ký Đảm

bảo rằng đây là địa chi email mà ta có thé nhận được tin message

git config global user.name Your Name # git config global user.email you@example.com #

Hinh 3.4 Config git

- Chạy repo init dé tai phiên ban Repo mới nhất với các ban sửa lỗi gần đây

nhất Ta phải chỉ định một URL cho tệp Manifest, URL này chỉ định vị tríđặt các repository khác nhau có trong mã nguồn của Android trong thư mụclàm việc Ta cũng check out sang branch android! 1-qpr2-release để có thé

build được cho Raspberry pi.

Ngày đăng: 02/10/2024, 05:36

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w