Sử dụng những công nghệ đã nêu trên, chúng tôi tiến hành xây dựng ứng dụng bao gồm hai chức năng chính:
e Chức năng về thực tại tăng cường: gồm các chức năng cơ bản liên quan đến
đặt, kéo thả để di chuyển, xóa các đồ vật.
e Chức năng gợi ý: dùng phát hiện đối tượng để gợi ý loại đồ vật và vị trí cho
phù hợp với bố trí căn phòng hiện tại.
Chức năng về thực tại tăng cường được lập trình dựa trên framework ARCore.
ARCore được sử dụng để phát hiện mặt phẳng, theo dõi vi trí của điện thoại...
Ngoài ra, các chức năng liên quan đến việc tương tác với các mô hình đồ nội that cũng được xây dựng bằng ARCore.
Đối với chức năng phát hiện đối tượng, chúng tôi sử dụng công nghệ Tensor-
flow Lite - một phiên bản nhỏ gọn của Tensorflow được thiết kế tối ưu phù hợp
với các thiết bị di động và thiết bị nhúng. Như trong Hình |.1.1| mô hình này sẽ
nhận ảnh Camera từ ARCore cung cấp, và xuất ra các thông tin về bounding
box các vật thể phát hiện được trong khung hình đó. Các boudning box sẽ kết hợp với thông tin Point Cloud của ARCore để xây dựng Semantic map - là một
phương pháp áp dụng SLAM vào thực tại tăng cường, sẽ được nói rõ trong phần chi tiết kỹ thuật tạo Semantic map.
32
Unity được chọn là công cụ chính để xây dựng ứng dụng vì việc lập trình
và sử dụng các mô hình 3D dễ dàng hơn so với Android Studio. Google tạo ra framework ARCore dành cho Unity gọi là ARCore Unity SDK [9]. Thêm vào
đó, chúng tôi cũng da từng có kinh nghiệm xây dựng ứng dung với Unity. Ngoài
ra, Visual Studio 2019 cũng được sử dụng để tạo file thư viện liên kết động
(Dynamically Linked Library), file này chứa mã nguồn của OpenCV va Unity
dùng thuật toán chuyển đổi ảnh YUV sang RGB.
Ảnh : Bounding box
ARCore SSDMobilenet Semantic map
| Point cloud |
Hinh 3.1.1. Quá trinh dua ra got Ú
Vi là một ứng dung ve AR nên giao diện được thiết kế theo phong cách đơn
giản. Hình [3.1.2] minh họa giao diện của ứng dung bao gồm một số nút cho các
thao tác cần thiết và một bảng chọn đồ nội thất có thể đóng mở, để dành phần
lớn giao diện cho màn hình Camera. Các chức năng cần thiết đó là:
e Tương tác với đồ vật ảo: Bấm vào nút hình cái ghế ở góc dưới bên trái màn
hình, một giao diện danh sách các đồ nội thất sẽ hiện lên. Chọn loại nội
thất (bàn, ghế, tủ,...) sau đó chọn hình thể hiện món đồ muốn đặt trong căn
phòng. Mô hình 3D của đồ nội thất đã chọn sẽ được tạo trước mặt người
dùng, người dùng có thể di duyén và xoay đồ nội thất sao cho phù hợp với
căn phòng.
e Xóa đồ vật: Bấm chọn vào món đồ nội thất ảo muốn xóa trong căn phòng,
chọn nút có biểu tượng thùng rác ở dưới màn hình để xóa đồ nội thất ra
khỏi căn phòng.
33
e Tự động đặt đồ vật: Bấm vào nút có hình bóng đèn ở góc dưới bên phải
màn hình, để tự động đặt những món đồ dựa vào thông tin của Semantic
map và ARCore. Đây là tính năng thông minh của ứng dụng giúp cho người
dùng thuận tiện hơn trong việc chọn loại đồ vật và vị trí của các món đồ nội thất.
Vì ứng dụng về AR vẫn chưa quá phổ biến nên đa số người dùng sẽ còn khá
mơ hồ về cách sử dụng. Do đó, để hỗ trợ người dùng trong việc sử dụng giữa
màn hình ứng dụng sẽ có một bảng hướng dẫn sử dụng. Một số thông báo như:
mặt phẳng có quá ít hoa văn, môi trường sử dụng không đủ ánh sáng, di chuyển điện thoại quá nhanh,... tất cả sẽ được báo để người dùng biết và điều chỉnh cho phù hợp. Ngoài ra, nút có biểu tượng dấu chấm hỏi nằm ở góc trên bên phải
màn hình cũng cung cấp cho người dùng những thông tin chỉ tiết về phần hướng dẫn sử dụng.
Hình 3.1.2. Giao điện của ứng dụng theo hai hướng doc (trái) va ngang (phải)
34