Thông qua bộ công cụ này chúng tôi đã xây dựng một ứng dụng đơn giản cho phép người dùng chọn một hình ảnh làm marker và hiển thị những đồ vật 3D khi camera nhận diện được marker đó.. Có
Trang 1e ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lê Vũ Huy
XÂY DỰNG CHƯƠNG TRÌNH
THỰC TẠI ẢO TRÊN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2016
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Lê Vũ Huy
XÂY DỰNG CHƯƠNG TRÌNH
THỰC TẠI ẢO TRÊN ANDROID
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn : ThS Vũ Quang Dũng
HÀ NỘI – 2016
Trang 3VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Le Vu Huy
CREATE AUGMENTED REALITY APPLICATION
BASED ON MOBILE DEVICES
BACHELOR THESIS Major: Information Technology
Supervisor: M.S Vu Quang Dung
HA NOI – 2016
Trang 4LỜI CẢM ƠN
Lời đầu tiên, tôi xin gửi lời cảm ơn chân thành sâu sắc đến ThS.Vũ Quang Dũng
đã tận tình hướng dẫn, giúp đỡ tôi trong quá trình thực hiện khóa luận này
Tôi cũng xin gửi lời cảm ơn tới các anh chị, các bạn trong Toshiba Lab đã giúp
đỡ, tạo điều kiện nghiên cứu tốt nhất cho tôi Cám ơn anh Nguyễn Bảo Ngọc, anh Trần
Hữu Trung, bạn Bùi Xuân Hiền, Vũ Thị Ngọc đã luôn hỗ trợ, giúp tôi có thể hoàn thành
đề tài một cách tốt nhất
Lời cuối cùng, chúng tôi xin gửi lời cảm ơn tới gia đình, người thân và bạn bè -
những người luôn ở bên tôi những lúc khó khăn nhất, luôn động viên tôi, khuyến khích
tôi trong cuộc sống cũng như học tập, công việc
Tôi xin chân thành cảm ơn !
Sinh viên
Lê Vũ Huy
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan các kết quả trình bày trong khóa luận này do tôi thực hiện dưới
sự hướng dẫn của ThS.Vũ Quang Dũng
Tất cả các tham khảo từ những nghiên cứu liên quan đều được nêu nguồn gốc một cách rõ ràng từ danh mục tài liệu tham khảo trong khóa luận Khóa luận không sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về mặt tài liệu tham khảo
Các thống kê, các kết quả trình bày trong khóa luận này đều được lấy từ thực nghiệm khi chạy chương trình
Sinh viên
Lê Vũ Huy
Trang 6TÓM TẮT
Tóm tắt:
Ngày nay, công nghệ tăng cường thực tại ảo (Augmented Reality) đang dần trở nên gần gũi với con người hơn và ứng dụng trong hầu hết các lĩnh vực từ mua sắm cho đến tương tác ảo Được phát triển từ công nghệ VR (Virtual Reality), Augmented Reality xây dựng một khung nhìn và bổ sung những vật thể đồ họa 2D hay 3D vào môi trường thật qua các lớp thông tin hỗ trợ và được hiển thị trên các thiết bị điện tử như smartphone, tablet Nhờ vậy, AR sẽ mang đến cho chúng ta trải nghiệm ảo ngay trước mắt thông qua các hình ảnh và khung nhìn ảo được tạo
ra nhờ các thiết bị thông minh
Trong khóa luận này, chúng tôi sẽ đi vào tìm hiểu nguyên lý của công nghệ tăng cường thực tại ảo, và cách thức hoạt động của ARToolkit Thông qua bộ công cụ này chúng tôi đã xây dựng một ứng dụng đơn giản cho phép người dùng chọn một hình ảnh làm marker và hiển thị những đồ vật 3D khi camera nhận diện được marker đó Qua quá trình thiết kế và cài đặt, chúng tôi đã hiểu hơn về quá trình xây dựng một ứng dụng AR và cách áp dụng nó vào các bài toán thực tế
Trải qua quá trình xây dựng và thực nghiệm, hệ thống đáp ứng được cơ bản các yêu cầu bài toán đặt ra Hiệu suất của ứng dụng xây dựng bằng ARToolkit ở mức cao và độ trễ thấp Tuy nhiên để trở thành một nền tảng được ứng dụng rộng rãi thì cần phải nâng cấp và cải tiến nhiều về hiệu suất, chức năng và các tài liệu liên quan
Từ khóa : Thực tại ảo, Thực tại ảo tăng cường, ARToolkit, Marker
Trang 7ABSTRACT
Abstract:
Nowaday, the Augmented Reality (AR) technology has gradually become familiar with people and been applied in many of real-life fields Developed from the Virtual Reality technology, AR implements the views and supplements 2D or 3D graphics in the real environment through layers of supported information These graphics will be displayed on electronic devices such as smartphones, tablets and so on Therefore, AR will bring us virtual experiences before eyes through virtual images and views created thanks to smart devices
In this thesis, we will go into a deep analysis of principles of the virtual reality enhancing technology and the way of ARToolkit works By this toolkit, we created a simple application which allows users to choose a image as marker and display 3D objects if the camera can identify that marker Thanks to the design and installment, we understand more about the process of building an AR application and how to apply it into real problems
We have built a testing application system in order to meet the basic requirements that problems posed The application is based on ARToolkit and it has high efficiency and low latency Also, we need to improve the efficiency, functions and related documents for this toolkit to be widely applied
Từ khóa : Virtual reality, Augmented reality, ARToolkit, Marker
Trang 8MỤC LỤC
TÓM TẮT iii
ABSTRACT iv
MỤC LỤC v
DANH MỤC HÌNH VẼ vii
DANH MỤC BẢNG BIỂU ix
DANH MỤC TỪ VIẾT TẮT x
Mở đầu 1
Chương 1: Cơ sở lý thuyết và công nghệ 3
1.1 Thực tại ảo và công nghệ tăng cường thực tại ảo 3
1.1.1 Khái niệm 3
1.1.2 Các phương pháp thực hiện AR 6
1.2 ARToolkit 7
1.3 Xử lý đồ họa 7
1.4 Mô hình MVP 8
Chương 2: Phân tích yêu cầu 11
2.1 Đặc tả yêu cầu 11
2.1.1 Yêu cầu chức năng 11
2.1.2 Yêu cầu phi chức năng 13
Chương 3: Thiết kế và xây dựng hệ thống 14
3.1 Kiến trúc hệ thống 14
3.1.1 Kiến trúc client 16
3.1.2 Kiến trúc server 17
3.2 Thiết kế ca sử dụng 18
3.3 Biểu đồ tuần tự 24
Trang 93.4 Cấu trúc cơ sở dữ liệu 28
Chương 4: Kết quả thực nghiệm 31
4.1 Môi trường thực nghiệm 31
4.2 Dữ liệu thực nghiệm 31
4.3 Kết quả thực nghiệm 33
4.3.1 Tạo marker 33
4.3.2 Giao diện quản lý marker 35
4.3.3 Camera nhận diện 37
Chương 5: Kết luận và định hướng phát triển 40
TÀI LIỆU THAM KHẢO 43
Trang 10DANH MỤC HÌNH VẼ
Hình 1.1 Trải nghiệm kính thực tế ảo trong lĩnh vực giải trí 3
Hình 1.2 Tính năng nhận diện khuôn mặt của Google Glass 4
Hình 1.3 Người dùng trải nghiệm kính thực tế ảo Hololens 5
Hình 2.1 Ví dụ về Square marker 12
Hình 2.2 Ví dụ về pattern marker 12
Hình 3.1 Kiến trúc toàn bộ hệ thống 14
Hình 3.2 Mô hình MVP với chức năng Edit marker 16
Hình 3.3 Biểu đồ ca sử dụng 18
Hình 3.4 Ca sử dụng Sign up 24
Hình 3.5 Ca sử dụng Login 25
Hình 3.6 Ca sử dụng Get all marker 25
Hình 3.7 Ca sử dụng Create marker 26
Hình 3.8 Ca sử dụng Edit marker 26
Hình 3.9 Ca sử dụng Delete marker 27
Hình 3.10 Ca sử dụng Download marker 28
Hình 3.11 Ca sử dụng Scan marker 28
Hình 3.12 Cấu trúc các bảng cơ sở dữ liệu 29
Hình 4.1 Hình ảnh thử nghiệm 1 (1600x870) 31
Hình 4.2 Hình ảnh thử nghiệm 3 (1852x1389) 32
Hình 4.3 Hình ảnh thử nghiệm 2 (592x760) 32
Hình 4.4 Màn hình tạo mới một marker 33
Hình 4.5 Qúa trình sinh dữ liệu nhận diện phía server 34
Hình 4.6 Menu chính của ứng dụng 35
Hình 4.7 Danh sách các marker trên server 35
Hình 4.8 Màn hình xem chi tiết marker 36
Hình 4.9 Danh sách các marker ở local 36
Trang 11Hình 4.10 Một vật thể 3D khác được vẽ bởi OpenSceneGraph 37 Hình 4.11 Camera nhận diện ra marker và vẽ lên vật thể 3D 37 Hình 4.12 Thử nghiệm với các hình ảnh khác 38
Trang 12DANH MỤC BẢNG BIỂU
Bảng 3.1 Giải tích các thành phần trong kiến trúc hệ thống 15
Bảng 3.2 Đặc tả ca sử dung Sign up 19
Bảng 3.3 Đặc tả ca sử dụng Login 19
Bảng 3.4 Đặc tả ca sử dụng View all marker 20
Bảng 3.5 Đặc tả ca sử dụng Create new marker 20
Bảng 3.6 Đặc tả ca sử dụng Edit marker 21
Bảng 3.7 Đặc tả ca sử dụng Delete marker 22
Bảng 3.8 Đặc tả ca sử dụng download marker 22
Bảng 3.9 Đặc tả ca sử dụng Scan marker 23
Bảng 3.11 Giải thích ý nghĩa của bảng User 29
Bảng 3.12 Giải thích ý nghĩa của bảng Marker 29
Bảng 3.13 Giải thích ý nghĩa của bảng Model 30
Trang 13DANH MỤC TỪ VIẾT TẮT
một hệ quản trị cơ sở dữ liệu
họa 3D dựa trên OpenGL
LGPL Lesser General Public License Giấy phép phần mềm công
cộng
Trang 14Mở đầu
Kể từ khi công nghệ thực tại ảo ra đời đến nay, nó đã đóng góp một phần không nhỏ cho các ứng dụng phục vụ cuộc sống, và dần dần đã trở thành một phần không thể thiếu trong nhiều lĩnh vực y tế, khoa học, giải trí, quân sự… đáp ứng các nhu cầu thương mại, nghiên cứu, giáo dục Công nghệ thực tại ảo đang trở thành xu thế của công nghệ tương lai, định hướng chiến lược của các công ty công nghệ
Hiện nay trên thế giới đã có nhiều ứng dụng của AR phục vụ cuộc sống Chẳng hạn như chiếc điện thoại Amazon Fire với tính năng Firefly tự động nhận diện và tìm thông tin đồ vật Và mới đây nhất là chiếc kính Hololens của Microsoft với khả năng đưa con người vào thế giới kết hợp giữa thật và ảo, hơn nữa còn cho phép người dùng tương tác với môi trường ảo Có thể kể ra vô vàn các ứng dụng của công nghệ này, các ứng dụng trình diễn sản phẩm mua sắm trực tuyến, các thiết bị vật dụng trong gia đình, các mô hình, chi tiết máy, các ứng dụng trò chơi thực tại ảo, trình diễn sản phẩm…
Nắm bắt được tiềm năng to lớn của công nghệ AR, nhiều công ty công nghệ lớn
đã bắt đầu tự xây dựng các sản phẩm AR cho riêng mình, nổi bật như tập đoàn PTC với
bộ công cụ lập trình Vuforia được dùng để xây dựng ứng dụng cho Hololens Năm 2014, Facebook đã hoàn tất thương vụ mua lại Oculus Rift với giá hơn 2 tỷ đô để phát triển những thiết bị VR cho riêng mình Samsung cũng đang có những dự định của riêng mình với kính áp tròng có công nghệ AR, hay chiếc kính thực tế ảo GEAR VR đang gây chú
ý trong giới công nghệ trong thời gian vừa qua
Nhóm sinh viên chúng tôi gồm 2 thành viên là tôi Lê Vũ Huy và bạn Bùi Xuân Hiền đã cùng nhau xây dựng chương trình này Qua tìm hiểu và đánh giá về các bộ công
cụ lập trình AR, chúng tôi đã lựa chọn ARToolkit SDK để tìm hiểu về nguyên lý của
AR và xây dựng một ứng dụng AR đơn giản Ứng dụng này cho phép người dùng chụp một hình ảnh hoặc chọn một hình ảnh có sẵn làm marker Với mỗi marker, ứng dụng sẽ đọc dữ liệu ảnh và xử lý để sinh ra một bộ dữ liệu nhận diện Sau khi đã có dữ liệu nhận diện, người dùng có thể sử dụng chính ứng dụng đó mở camera và nhận diện marker đó
và vẽ lên trên màn hình những hình khối 3D tại vị trí marker đó Nhờ quá trình tracking liên tục của ARToolkit, dù camera di chuyển nhưng hình vẽ 3D vẫn được vẽ đúng tại vị
Trang 15trí của marker, do đó tạo nên cảm giác như là đồ vật ở thế giới thật đã được thay bằng các đối tượng ảo
Ứng dụng này có chức năng đơn giản nhưng đã được xây dựng một cách khá hoàn thiện, từ quá trình xử lý dữ liệu trên server, liên kết dữ liệu giữa server và client,
và cả quá trình nhận diện marker ở client Từ đó cho thấy những điểm mạnh mà bộ công
cụ ARToolkit mang lại cho các lập trình viên và các nhà phát triển
Xác định yêu cầu trong chương trình thực nghiệm
Bài toán có thể được tóm tắt đơn giản như sau:
Yêu cầu 1: Tạo ra các dấu hiệu nhận biết marker
Đầu vào: 1 hình ảnh định dạng jpg (marker)
Đầu ra: bộ 3 file dữ liệu nhận diện marker
Yêu cầu 2: Nhận diện và hiển thị dữ liệu liên quan
Đầu vào: Hình ảnh stream thu từ camera và dữ liệu nhận diện marker
Đầu ra: Hình vẽ 3D vẽ lên marker
Như vậy trong khóa luận này, chúng tôi đưa phương pháp xây dựng một ứng dụng chạy trên nền tảng Android đáp ứng được vấn đề đã nêu ở trên
Nhóm chúng tôi gồm 2 sinh viên là tôi Lê Vũ Huy và bạn Bùi Xuân Hiền đã cùng nhau phát triển ứng dụng này Tôi tập trung vào phát triển tính năng, giao diện ứng dụng trên client Android và việc render đồ họa 3D Bạn Bùi Xuân Hiền tập trung vào việc phát triển server và cung cấp các API để giao tiếp giữa client và server
Cấu trúc khóa luận
Các phần còn lại của khóa luận này có cấu trúc như sau:
Chương 2: Cơ sở lý thuyết và công nghệ - trình bày các thuật toán, so sánh, công
nghệ được sử dụng
Chương 3: Phân tích và xây dựng chương trình - chương này sẽ có các thiết kế
của hệ thống thực nghiệm như các kiến trúc, cơ sở dữ liệu, biểu đồ thiết kế
Chương 4: Kết quả thực nghiệm – kết quả demo bao gồm đánh giá và so sánh Chương 5: Kết luận và tương lai phát triển - tóm lược kết quả mà khóa luận đạt
được, những điểm hạn chế, đặc biệt là đưa ra định hướng phát triển nhằm đưa hệ thống trở thành một nền tảng được ứng dụng rộng rãi
Trang 16Chương 1: Cơ sở lý thuyết và công nghệ
Để có thể giải quyết các yêu cầu đặt ra, chúng tôi sử du ̣ng những cơ sở lý thuyết
và công nghệ sau đây
1.1 Thực tại ảo và công nghệ tăng cường thực tại ảo
1.1.1 Khái niệm
VR (Virtual Reality) là công nghệ cho phép con người quan sát những vật ở thế
giới thật trong thế giới ảo thông qua thiết bị điện tử nào đó, ví dụ: kính thực tại ảo, Google Cardboard, Oculus Rift,… VR thay thế hoàn toàn thế giới thực tế bằng thế giới
ảo bằng các thành phần công nghệ như hình ảnh, âm thanh, video Người dùng có thể
sử dụng công nghệ này để xem phim, chơi game, và khi đó, các cảnh trong phim, game
đó sẽ diễn ra trực tiếp trước mắt bạn y hệt như bạn là một nhân vật trong đó Ngoài ra người dùng còn có thể tương tác với thế giới ảo bằng cách quay đầu, giọng nói, hoặc chuyển động tay, chân thông qua các thiết bị hỗ trợ1
1 http://www.baomoi.com/kinh-thuc-te-ao-vr-se-cuu-vot-nganh-game-pc/c/18503126.epi
Hình 1.1 Trải nghiệm kính thực tế ảo trong lĩnh vực giải trí
Trang 17AR (viết tắt của Augmented Reality) được phát triển lên từ VR nhưng khác một
điều là AR bổ sung các thông tin, chi tiết cho thế giới thực, còn VR thay thế hoàn toàn thế giới thực bằng các thành phần trong thế giới ảo Các thông tin bổ sung ở đây có thể dưới dạng hình ảnh, âm thanh, video… Ngoài ra người dùng còn có thể tương tác với các vật thể ảo qua màn hình cảm ứng của điện thoại Hiện nay có một số công ty nổi bật trong lĩnh vực này như: PTC Inc, Metaio, Microsoft, Wikitude, DAQRI,…
Một hệ thống AR gồm có 3 thành phần chính: thế giới thực, các thiết bị phần cứng nhận diện và các phần mềm hỗ trợ Chìa khóa của một ứng dụng AR là làm thế nào để tích hợp được được những nội dung bổ sung vào thế giới thực nhanh và chính xác nhất Để làm được điều này, các thiết bị phần cứng cần tính toán được vị trí của tọa
độ thế giới thực từ camera, tọa độ này là tương đối so với thiết bị và thay đổi liên tục khi camera di chuyển Khi đã tính toán được các vector định hướng, thiết bị sẽ vẽ thêm các thành phần tăng cường, xây dựng nên một môi trường kết hợp giữa thực tế và ảo
Một số ứng dụng AR trên thực tế
Google Glass của Google được giới thiệu lần đầu ra công chúng vào tháng 4 năm
2013 Với khá nhiều tính năng như có thể đóng vai trò là một chiếc điện thoại, chụp ảnh, camera nhận diện khuôn mặt, Google Glass đã trở thành 1 thiết bị đột phá trong thế giới thiết bị đeo được Tuy nhiên do giá thành quá đắt đỏ, bị đánh giá là không hữu dụng và
Hình 1.2 Tính năng nhận diện khuôn mặt của Google Glass
Trang 18một số vướng mắc trong chính sách sử dụng, Google Glass đạt doanh số rất thảm hại và Google đã dừng bán chiếc kính này vào tháng 1 năm 2015 Cho tới thời điểm này, chưa
có thông tin gì thêm về thế hệ tiếp theo của Google Glass, tuy nhiên chúng tôi có thể iết chắc chắn rằng, đây sẽ là một hướng đi tiềm năng trong tương lai gần và chắc chắn Google sẽ không bỏ qua nó Dưới đây là một hình ảnh về ứng dụng của Google Glass, nguồn2
Gây được tiếng vang lớn trong thời điểm ra mắt, chiếc kính thực tế ảo Hololens của Microsoft đã khiến cả thế giới phải trầm trồ vì những gì nó làm được Khác với tất
cả các thiết bị trước đó, Hololens là một chiếc kính có màn hình trong suốt, giúp người dùng có thể nhìn xuyên qua nó và thấy các nội dung ảo được hiện lên trên những gì đang diễn ra ngoài đời thực Cụ thể hơn, thiết bị có một loạt các cảm biến để nhận dạng cử chỉ của 5 đầu ngón tay và sử dụng thông tin này cùng với lớp kính màu để tạo ra những hình ảnh mà người dùng có thể quan sát và tương tác từ nhiều góc độ khác nhau Thêm vào đó, camera cũng đóng vai trò trong việc xác định vật thể trong phòng và sau đó vi
xử lý sẽ đảm nhận vai trò để “ghi đè” hình ảnh “ảo” lên thế giới “thực” và hiển thị kết quả lên màn hình của kính Với một tương lai sáng lạng, Hololens đang chiếm được
2 http://theapplegoogle.com/tag/google-glass/
Hình 1.3 Người dùng trải nghiệm kính thực tế ảo Hololens
Trang 19niềm hi vọng của người dùng và các nhà phát triển, tuy nhiên Microsoft hiện chưa hé lộ thông tin gì về ngày ra mắt chính thức, giá phiên bản thương mại Có lẽ người dùng sẽ còn phải đợi một thời gian khá lâu nữa mới được tận tay dùng thử sản phẩm này
1.1.2 Các phương pháp thực hiện AR
Các ứng dụng sử dụng công nghệ tăng cường thực tại ảo hiện nay thường sử dụng
3 phương pháp chính sau để nhận biết vật thể:
a) Dựa trên vị trí
Hiển thị các thông tin bổ sung liên quan đến thông tin vị trí có thể lấy được từ GPS Hoặc có thể kết hợp thêm các thông tin vị trí, cảm biến từ trường theo hướng và cảm biến gia tốc do độ nghiêng để xác định một vị trí để trình bày thông tin về vật đó Phương pháp này phục thuộc vào độ chính xác của GPS và các cảm biến liên quan
b) Marker tracking (nhận diện bằng dấu hiệu)
Với phương pháp này, phần mềm cần được học trước dữ liệu nhận diện tương ứng với một dấu hiệu (marker) nào đó, và được định nghĩa sẵn các nội dung tăng cường gắn với nó
Các dấu hiệu nhận biết thường có khuôn mẫu nhất định được sinh ra theo một quy tắc nào đó và thường bị giới hạn
c) Markerless tracking (nhận diện không cần dấu hiệu)
Phương pháp markerless tracking không yêu cầu một dấu hiệu nhận diện nào cả, thiết bị sẽ sử dụng camera và các cảm biến để phát hiện môi trường xung quanh, từ đó
vẽ các vật thể 3D vào môi trường đó Trải nghiệm AR này sẽ mở ra một khả năng vô tận cho các ứng dụng thương mại và giải trí Nếu kết hợp với Google Glass, người dùng
sẽ có những trải nghiệm vô cùng ấn tượng
Chương trình trong khóa luận này chúng tôi làm theo phương pháp Marker Tracking
Trang 201.2 ARToolkit
ARToolkit là một bộ công cụ lập trình Augmented Reality mã nguồn mở cung cấp thư viện theo dõi (tracking) hình ảnh và bổ sung lớp đồ họa ảo vào thể giới thực ARToolkit là một thư viện AR rất phổ biến với 739,110 lượt tải tính đến thời điểm viết khóa luận này.3
ARToolkit được phát triển đầu tiên bởi Giáo sư Hirokazu Kato ở Viện Khoa Học
và Công nghệ Nara (Nhật) năm 1999 và được phát hành bởi HIT Lab thuộc trường Đại Học Washington (Mỹ) Năm 2001, công ty thương mại ARToolworks được thành lập
và phát hành phiên bản ARToolkit v1.0 dưới dạng mã nguồn mở trên trang web của HITLab Kể từ đó, các viện nghiên cứu bắt đầu sử dụng ARToolkit như là cơ sở của việc nghiên cứu và giảng dạy về công nghệ tăng cường thực tại ảo Năm 2008, ARToolkit được phát triển trên các ngôn ngữ Java, C# bởi nyatla Trải qua hơn 15 năm phát triển, ARToolkit SDK được phát triển toàn diện, không chỉ số ngôn ngữ nó hỗ trợ
mà còn cải thiện cả về hiệu năng và giao diện Năm 2015 ARToolworks được mua lại bởi DAQRI, một công ty nghiên cứu về giao tiếp người – máy và sản xuất các thiết bị đeo thông minh Bộ công cụ ARToolkit trước kia chỉ được phát hành dưới giấy phép trả phí, nay đã được phát hành miễn phí dưới giấy phép LGPL v3.0 [2]
Trang 21viên có thể tạo ra ảnh 3 chiều cả tĩnh và động với chất lượng cao Theo nguyên lý, ARToolkit sẽ tính toán tọa độ theo một hình thức phù hợp để có thể sử dụng trực tiếp với OpenGL, ngoài ra nó còn hỗ trợ việc render video chạy nền bằng OpenGL
OpenSceneGraph
OpenSceneGraph (OSG) là một framework mã nguồn mở cung cấp các mô hình,
sơ đồ, đối tượng 3D với chất lượng cao, cho phép người dùng tùy biến các mô hình và
đồ họa đó một cách hiệu quả, linh hoạt, dễ dàng thay đổi ARToolkit đã được tích hợp thêm thư viện libARosg, phục vụ việc thực hiện các tác vụ cơ bản liên quan đến render các đối tượng 3D từ file OSG
OpenVRML
VRML là một chuẩn tập tin định nghĩa vị trí đỉnh, cạnh cho một đa giác 3D và
có thể định nghĩa màu, ánh sáng, độ trong suốt cho các mặt của đa giác đó OpenVRML
là một engine mã nguồn mở chuyên render đồ họa cho các tập tin định dạng VRML và X3D, nó đã được tích hợp vào ARToolkit kể từ phiên bản 4.3 (ra mắt ngày 31/10/2007) trong thư viện libARvrml Tuy nhiên do hiệu năng không cao, ARToolkit đã ngừng hỗ trợ cập nhật thư viện libARvrml từ phiên bản 4.5 Mặc dù vậy, thư viện libARvrml vẫn được tích hợp trong các phiên bản tiếp theo của ARToolkit
DirectX
ARToolkit không trực tiếp hỗ trợ DirectX, tuy nhiên việc theo dõi (tracking) của ARToolkit là một tiến trình render độc lập, do đó DirectX vẫn có thể được sử dụng, miễn là lập trình viên có thể cài đặt tiến trình xử lý đồ họa riêng
Trong bài toán này, chúng tôi sử dụng thư viện OpenSceneGraph để render và hiển thị vật thể 3D Với hiệu năng tốt, hỗ trợ hiệu ứng chuyển động, cùng với kho đồ họa có sẵn, OpenSceneGraph đã được dùng làm thư viện xử lý đồ họa chính của ARToolkit
1.4 Mô hình MVP
MVP (Model – View – Presenter) là một mô hình kiến trúc hướng giao diện người dùng, được thiết kế để tạo thuận lợi cho việc kiểm thử đơn vị (unit testing) và
Trang 22tăng tính tách biệt giữa tầng dữ liệu và tầng hiển thị dữ liệu trong mô hình MVC Mô hình MVP cho phép tách tầng trình diễn (Presenter) ra khỏi tầng dữ liệu (Model), vì vậy tương tác với giao diện được tách biệt với cách nó được biểu diễn trên màn hình (View), hay nói cách khác, tất cả logic khi người dùng tương tác được tách ra và đưa vào tầng trình diễn Thiết kế lý tưởng nhất là với cùng một logic được áp dụng cho nhiều View khác nhau và hoán đổi được cho nhau
Điểm khác biệt giữa mô hình MVP với mô hình MVC là vị trí cũng như chức năng của tầng Presenter so với tầng Controller Trong mô hình MVP, tầng View là tầng duy nhất tiếp nhận tương tác người dùng, thay vì cả 2 tầng View và tầng Controller như trong mô hình MVC Logic xử lý tương tác cũng như logic xử lý dữ liệu hiển thị được tách ra trong tầng Presenter thay vì được gộp chung với tiếp nhận tương tác trong Controller
Trong Android, có một vấn đề phát sinh từ thực tế là các cơ chế xử lý tương tác trong Android được kết hợp chặt chẽ giữa giao diện người dùng và xử lý, truy cập dữ liệu Việc kết hợp này có thể giúp giảm thiểu lượng code trong ứng dụng cũng như gộp các xử lý, logic trong ứng dụng vào cùng một nơi Nhưng đối với một ứng dụng liên tục phát triển, hay một ứng dụng lớn, việc này khiến cho lượng code trên mỗi logic trở nên rất lớn, các logic xen lần, chồng chéo lên nhau, rất khó cho việc đọc hiểu, bảo trì cũng như mở rộng
Việc phân lớp ứng dụng có thể giảm đi hiệu năng do ứng dụng cần thêm nhiều tài nguyên, nhưng sẽ tăng nhiều lần khả năng nâng cấp và bảo trí phần mềm, không những thế còn mở rộng khả năng cho phép kiểm thử từng phần của ứng dụng trở nên dễ
Trang 23dàng hơn Chính vì thế việc cân nhắc giữa hiệu năng và tính dễ dàng mở rộng, bảo trì là hết sức quan trọng
Nhận thấy điểm mạnh của mô hình MVP, chúng tôi đã lựa chọn nó để phát triển ứng dụng này Đây cũng đang là một trong những mô hình phổ biến của các công ty lớn trong phát triển ứng dụng Android
Trang 24Chương 2: Phân tích yêu cầu
Sinh dữ liệu nhận diện từ một hình ảnh
Quản lý marker: thêm marker mới, sửa marker đã có, xóa một marker, xem danh sách toàn bộ các marker trên server và các marker có sẵn ở local
Nhận diện marker
Trong hệ thống này, admin có tất cả các chức năng của user, ngoài ra admin còn có thể quản lý các user hiện có (thêm, sửa, xóa user)
2.1.1 Yêu cầu chức năng
Bài toán 1: Sinh dữ liệu nhận diện từ một hình ảnh
Để tạo marker mới, người dùng sẽ chụp một hình ảnh hoặc chọn ảnh từ thư viện
và gửi lên server Server xử lý và sinh ra một bộ dữ liệu nhận diện cho mỗi marker
Trong các ứng dụng AR thường có rất nhiều loại marker, nhưng chúng ta có thể chia chúng ra làm 3 loại chính:
Trang 252D Barcode marker: Marker này là 1 hình vuông có viền đen bao
quanh bên ngoài, ở trong là 1 ma trận n*n các ô đen và trắng (n thường dao động từ 4 đến 16) Ưu điểm của 2D barcode marker là đơn giản, nhận diện nhanh, tuy nhiên marker lại bị giới hạn về số lượng Nếu tăng n lên thì khả năng nhận diện sẽ khó hơn và tốn nhiều thời gian hơn
Square marker: Loại marker này là 1 dạng biến thể của marker ma trận,
vẫn có một viền đen bao quanh ở ngoài, tuy nhiên ở bên trong sẽ là 1 hình đen trắng tùy ý Khi camera nhận diện, hình bên trong viền đen sẽ được nhận diện thành 1 ma trận n*n với số n do ứng dụng quy định (tùy thuộc vào từng bài toán cụ thể)
Image marker: Loại marker này là 1 hướng đi mới đang được nhà phát
triển quan tâm, khắc phục được những giới hạn của square marker Thay vì
bị giới hạn bởi 1 hình vuông viền đen, image marker cho phép người dùng
Hình 2.1 Ví dụ về 2D barcode marker
Hình 2.2 Ví dụ về square marker
Trang 26dùng 1 hình ảnh màu để làm dấu hiệu nhận biết Bù lại marker này sẽ có dữ liệu nhận biết lớn hơn và thời gian sinh ra dữ liệu nhận biết lâu hơn
Trong khóa luận này, chúng tôi sẽ đi vào nghiên cứu và cài đặt AR sử dụng
Image marker vì ưu điểm có thể sử dụng bất kỳ hình ảnh nào để làm marker
Bài toán 2: Quản lý marker
Sau khi người dùng đăng nhập, ứng dụng sẽ chuyển về màn hình hiển thị danh sách marker Với mỗi marker, người dùng có thể lựa chọn để xem chi tiết, sửa thông tin marker, xóa marker, thay đổi model gắn với marker đó
Bên cạnh danh sách các marker đang có trên server, người dùng có thể xem được danh sách những marker hiện có trong thiết bị Khi user download một marker từ server,
bộ dữ liệu nhận diện sẽ được tải về và lưu vào bộ nhớ thiết bị
SQLite là hệ quản trị cơ sở dữ liệu có ưu điểm là dung lượng nhẹ, do đó nó được
sử dụng phổ biến cho hầu hết các ứng dụng mobile (bao gồm Android và iOS)
Bài toán 3: Nhận diện marker
Khi ngườ i dùng mở camera trong ứng dụng, ARToolkit sẽ nhận đầu vào là video stream của camera và tracking liên tục Nếu phát hiện marker, ứng dụng sẽ tính toán vị trí của marker, các vector định hướng của marker, từ đó vẽ lên các đối tượng 3D đã được gán từ trước
2.1.2 Yêu cầu phi chức năng
Tính dễ dùng: giao diện thân thiện, các icon to, dễ hiểu
Độ tin cậy: Hệ thống hoạt động đúng theo các chức năng yêu cầu
Tính sẵn sàng: Hệ thống hoạt động ổn định, các thao tác thực hiện chính xác
Yêu cầu về hiệu năng sử dụng: Hiển thị thông tin tốt, tránh giật lác, đơ máy Thời gian
phản hồi của hệ thống nhanh
Trang 27Chương 3: Thiết kế và xây dựng hệ thống
3.1 Kiến trúc hệ thống
Hình 3.1 Kiến trúc toàn bộ hệ thống
Trang 28Bảng 3.1 Giải tích các thành phần trong kiến trúc hệ thống
lưu trữ và quản lý marker, user
các API RESTful để giao tiếp giữa server và client
FFI Foreign Function Interface: 1 bộ công cụ trên Ruby on Rails,
cho phép server gọi đến các thư viện sử dụng ngôn ngữ C/C++
hình ảnh đầu vào và sinh ra bộ dữ liệu nhận diện của marker
Google Cloud
Message
Một thư viện của Google giúp server đẩy (push) các notification về thiết bị Android
Model sẽ đảm nhiệm chức năng liên kết với database và xử lý
tracking, matching, graphics rendering,…
lưu trữ các marker