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 3THONG 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 4LOI 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 51.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 62.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 73.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 8DANH 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 9Hì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 10DANH 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 11User Interface
Trang 12TÓ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 13Chươ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 14Hì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 16Chươ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 18Về 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 19e 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 21Qt 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 22Cá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 23QML (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 24cao 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 25Hai 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 26Hì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 27Kế 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 28hỗ 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 29Bả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 30Chươ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 313.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.