+2

Kiểm thử Hệ thống định vị trong nhà - Indoor mapping

Kiểm thử ứng dụng Indoor mapping - hệ thống định vị trong nhà (Indoor positioning system)

I. GIỚI THIỆU

Indoor mapping thuộc lĩnh vực của hệ thống định vị trong nhà IPS (Indoor positioning system) và hệ thống thông tin địa điểm trong nhà (Indoor location-based services). Đây là một lĩnh vực con của công nghệ định vị và thông tin địa lý (geographic information systems - GIS).

Công nghệ định vị trong nhà tập trung vào việc xác định vị trí và điều hướng trong một môi trường trong nhà, nơi các công nghệ định vị ngoài trời như GPS không thể hoạt động hiệu quả. Nó sử dụng các phương pháp và công nghệ khác nhau như Wi-Fi, Bluetooth, RFID, cảm biến ánh sáng, cảm biến siêu âm, v.v., để xác định vị trí của người dùng trong không gian trong nhà. 😃

II. CÁC CÔNG NGHỆ ĐỊNH VỊ

Có nhiều công nghệ định vị khác nhau được sử dụng trong indoor mapping, mỗi công nghệ có ưu điểm và hạn chế riêng. Dưới đây là một số công nghệ phổ biến được sử dụng trong indoor mapping:

1. Wi-Fi:

Công nghệ định vị Wi-Fi sử dụng tín hiệu Wi-Fi từ các điểm truy cập Wi-Fi trong tòa nhà để xác định vị trí của người dùng. Điểm mạnh của công nghệ này là khả năng hoạt động trên phạm vi rộng và sẵn có trong hầu hết các tòa nhà. Tuy nhiên, độ chính xác có thể bị ảnh hưởng bởi nhiễu tín hiệu và sự che khuất từ cấu trúc tòa nhà hoặc do sự cạnh tranh kênh khi có nhiều người dùng cùng kết nối tới wifi.

1. Bluetooth Low Energy (BLE):

BLE là một công nghệ định vị thấp tiêu thụ năng lượng được sử dụng trong indoor mapping. Nó sử dụng tín hiệu Bluetooth từ các thiết bị phát Bluetooth như iBeacons để xác định vị trí. BLE có độ chính xác cao hơn so với Wi-Fi và tiêu thụ năng lượng thấp, nhưng yêu cầu cài đặt các thiết bị phát BLE trong toàn bộ khu vực cần định vị.

1. Ultra-Wideband (UWB):

UWB là một công nghệ định vị sử dụng sóng vô tuyến với băng thông rộng để xác định vị trí. Nó cung cấp độ chính xác cao và khả năng phân biệt tốt trong môi trường nhiễu. Tuy nhiên, yêu cầu cài đặt hệ thống phức tạp và đắt đỏ hơn so với các công nghệ khác.

1. RFID (Radio Frequency Identification):

RFID sử dụng các thẻ RFID chứa chip và ăng-ten để xác định vị trí trong indoor mapping. Công nghệ này có thể cung cấp độ chính xác tương đối tốt và có thể được sử dụng để theo dõi các vật thể di động trong tòa nhà. Tuy nhiên, yêu cầu cài đặt hạ tầng RFID và giới hạn trong việc định vị người dùng di động.

1. Sensor Fusion:

Sensor Fusion kết hợp sử dụng nhiều cảm biến như cảm biến gia tốc, la bàn và con quay hồi chuyển để xác định vị trí trong indoor mapping. Công nghệ này có thể cung cấp độ chính xác tương đối và là một phương pháp phụ trợ khi sử dụng các công nghệ khác.

III. Ý TƯỞNG THIẾT KẾ

Để thiết kế một chương trình đơn giản với việc sử dụng Wi-Fi cho indoor mapping, bạn có thể thực hiện các bước sau:

1. Thu thập dữ liệu:

Thu thập dữ liệu về môi trường trong nhà bằng cách ghi lại tín hiệu Wi-Fi thu được từ các điểm truy cập Wi-Fi trong tòa nhà. Bạn cần xác định vị trí của các điểm truy cập Wi-Fi và ghi lại tín hiệu RSSI (Received Signal Strength Indicator) tại mỗi vị trí.

Giá trị RSSI là một giá trị đo tín hiệu không dây và đại diện cho mức độ mạnh yếu của tín hiệu đó. RSSI được đo bằng đơn vị dBm (decibel-milliwatt) và có thể âm hoặc dương.

Trong ngữ cảnh của mạng Wi-Fi, giá trị RSSI cho biết mức độ mạnh yếu của tín hiệu từ một điểm truy cập (Access Point) hoặc một thiết bị không dây khác. Thông thường, giá trị RSSI càng cao, tín hiệu càng mạnh và giá trị RSSI càng thấp, tín hiệu càng yếu.

Giá trị RSSI cụ thể để xác định mức tín hiệu mạnh hay yếu phụ thuộc vào các yếu tố như thiết bị đo, phần cứng, công nghệ không dây, khoảng cách và môi trường.

Một cách chung, giá trị RSSI trung bình có thể nằm trong khoảng từ -30 dBm đến -90 dBm trong hệ thống Wi-Fi.

Dưới đây là một phân loại thông thường cho khoảng giá trị RSSI trong mạng Wi-Fi:

RSSI > -50 dBm: Tín hiệu rất mạnh. 

-50 dBm ≥ RSSI > -60 dBm: Tín hiệu mạnh. 

-60 dBm ≥ RSSI > -70 dBm: Tín hiệu trung bình. 

-70 dBm ≥ RSSI > -80 dBm: Tín hiệu yếu. 

RSSI ≤ -80 dBm: Tín hiệu rất yếu.

Dưới đây là một demo đơn giản dùng python:

import numpy as np

# Các điểm truy cập Wi-Fi và vị trí của chúng
access_points = {
    "AP1": {"position": np.array([0, 0]), "rssi": -50},
    "AP2": {"position": np.array([5, 0]), "rssi": -60},
    "AP3": {"position": np.array([0, 5]), "rssi": -70}
}

# Hàm tính toán vị trí dựa trên trilateration
def trilateration(ap1, ap2, ap3):
    d1 = 10 ** ((ap1["rssi"] - ap1["reference"]) / -20)
    d2 = 10 ** ((ap2["rssi"] - ap2["reference"]) / -20)
    d3 = 10 ** ((ap3["rssi"] - ap3["reference"]) / -20)
    
    x1, y1 = ap1["position"]
    x2, y2 = ap2["position"]
    x3, y3 = ap3["position"]
    
    A = 2 * (x2 - x1)
    B = 2 * (y2 - y1)
    C = d1**2 - d2**2 - x1**2 + x2**2 - y1**2 + y2**2
    
    D = 2 * (x3 - x2)
    E = 2 * (y3 - y2)
    F = d2**2 - d3**2 - x2**2 + x3**2 - y2**2 + y3**2
    
    x = (C*E - F*B) / (E*A - B*D)
    y = (C*D - A*F) / (B*D - A*E)
    
    return np.array([x, y])

Trong ví dụ trên, chúng ta có một từ điển access_points đại diện cho các điểm truy cập Wi-Fi và thông tin vị trí của chúng cùng với giá trị RSSI được đo từ một vị trí cụ thể. Hàm trilateration sử dụng giá trị RSSI từ ba điểm truy cập để tính toán vị trí ước tính bằng phương pháp trilateration.

Để tạo một ứng dụng indoor mapping hoàn chỉnh, bạn sẽ cần thu thập dữ liệu RSSI từ nhiều điểm trong không gian và xây dựng một bộ dữ liệu tham chiếu để từ đó dự đoán vị trí dựa trên các giá trị RSSI. Các phương pháp như fingerprinting hoặc machine learning có thể được sử dụng để tạo mô hình và dự đoán vị trí dựa trên các dữ liệu RSSI thu thập được.


Để lấy dữ liệu RSSI từ các điểm truy cập (access points), bạn có thể sử dụng các thư viện và công cụ hỗ trợ trong ngôn ngữ lập trình mà bạn đang sử dụng. Dưới đây là một ví dụ sử dụng Python và thư viện Scapy để lấy dữ liệu RSSI:

from scapy.all import *

def sniff_rssi(pkt):
    if pkt.haslayer(Dot11):
        if pkt.type == 0 and pkt.subtype == 8:  # Management frame, Beacon frame
            rssi = -(256 - pkt.dBm_AntSignal)  # Convert to RSSI value
            print("RSSI:", rssi)

# Bắt đầu lắng nghe gói tin Wi-Fi
sniff(iface="wlan0", prn=sniff_rssi)

Trong ví dụ trên, chúng ta sử dụng thư viện Scapy để lắng nghe gói tin Wi-Fi trên một giao diện cụ thể (ở đây là "wlan0").
Khi một gói tin Wi-Fi được nhận, chúng ta kiểm tra xem nó có phải là gói tin quản lý (Management frame) và Beacon frame không. Sau đó, chúng ta tính toán giá trị RSSI từ thông số dBm_AntSignal trong gói tin và hiển thị nó.


Ngoài ra, để xác định vị trí trong không gian sử dụng dữ liệu RSSI từ mạng Wi-Fi, một phương pháp phổ biến là sử dụng kỹ thuật fingerprinting. Phương pháp này dựa trên việc so sánh thông tin RSSI thu thập được từ người dùng với các dấu vân tay (fingerprints) đã được xác định trước trong bản đồ mạng Wi-Fi.
  • Dưới đây là các bước cơ bản để xác định vị trí sử dụng fingerprinting:

  • Thu thập dữ liệu RSSI: Di chuyển trong không gian và thu thập dữ liệu RSSI từ các điểm truy cập xung quanh. Bạn cần lưu trữ dữ liệu RSSI cùng với vị trí tương ứng.

  • Xây dựng bản đồ vân tay: Dựa trên dữ liệu RSSI và vị trí đã thu thập, xây dựng bản đồ vân tay (fingerprint map) cho không gian mạng Wi-Fi của bạn. Mỗi vị trí trong không gian sẽ có một dấu vân tay tương ứng, được biểu diễn bằng các giá trị RSSI từ các điểm truy cập.

  • Xác định vị trí: Khi muốn xác định vị trí của người dùng, thu thập dữ liệu RSSI từ các điểm truy cập xung quanh người dùng. Tiếp theo, so sánh dữ liệu RSSI thu thập được với các dấu vân tay trong bản đồ. Kỹ thuật so khớp (matching) được sử dụng để tìm kiếm dấu vân tay tương tự nhất trong bản đồ. Vị trí tương ứng với dấu vân tay tương tự nhất được xem là vị trí ước lượng của người dùng.

2. Xây dựng bản đồ:

Sử dụng dữ liệu thu thập được, xây dựng bản đồ của tòa nhà hoặc khu vực trong nhà. Bạn có thể sử dụng các thuật toán như k-means clustering hoặc fingerprinting để phân loại các vùng dựa trên tín hiệu Wi-Fi và xây dựng bản đồ ứng với mỗi vùng.

3. Giao diện người dùng:

Thiết kế giao diện người dùng cho chương trình indoor mapping. Giao diện người dùng có thể hiển thị bản đồ và cho phép người dùng tìm kiếm vị trí, đặt điểm đánh dấu và hiển thị đường dẫn giữa các điểm trong tòa nhà.

4. Xác định vị trí:

Khi người dùng yêu cầu xác định vị trí của mình trong tòa nhà, chương trình sử dụng tín hiệu Wi-Fi hiện tại của người dùng và so sánh nó với các dữ liệu được ghi lại trong bản đồ. Dựa trên sự tương đồng của tín hiệu, chương trình xác định vị trí ước tính của người dùng trong tòa nhà.

5. Định vị liên tục:

Cập nhật liên tục vị trí của người dùng trong tòa nhà khi tín hiệu Wi-Fi thay đổi. Chương trình sẽ theo dõi tín hiệu Wi-Fi hiện tại và cập nhật vị trí ước tính của người dùng trên bản đồ.

6. Tìm kiếm và định vị đích:

Cung cấp tính năng tìm kiếm và định vị đích trong tòa nhà. Người dùng có thể nhập một địa điểm mong muốn và chương trình sẽ tìm kiếm và hiển thị đường dẫn từ vị trí hiện tại đến đích trên bản đồ.

7. Kiểm tra và điều chỉnh:

Kiểm tra và điều chỉnh chương trình để đảm bảo tính chính xác và hiệu suất tốt. Bạn có thể thực hiện thử nghiệm và sửa lỗi để cải thiện độ chính xác của việc định vị và hiển thị bản đồ.


3. CÁCH KIỂM THỬ TỔNG QUÁT


Ngoài việc kiểm thử Kiểm thử hệ thống, Kiểm thử đơn vị...khi thiết kế chương trình. Chúng ta sẽ đi sâu hơn vào việc kiểm thử như một End User.

Để kiểm thử chương trình hệ thống định vị trong nhà, bạn có thể áp dụng các phương pháp và kỹ thuật kiểm thử phổ biến như sau:

0. Kiểm thử giao diện người dùng (User interface testing):

Kiểm thử các giao diện người dùng, bao gồm ứng dụng di động, trang web hoặc các giao diện khác. Đảm bảo tính tương thích, độ phản hồi, và trải nghiệm người dùng tốt.

1. Kiểm thử hiệu năng (Performance testing):

Đánh giá hiệu năng của hệ thống định vị trong nhà bằng cách đo và phân tích thời gian đáp ứng, tải trọng, tài nguyên tiêu thụ, và các yếu tố hiệu suất khác. Kiểm tra xem hệ thống có đáp ứng được yêu cầu về thời gian thực và tải lớn hay không.

  • Thời gian đáp ứng: Đo lường thời gian mà hệ thống định vị trong nhà cần để xử lý yêu cầu từ người dùng, bao gồm việc xác định vị trí và hiển thị kết quả lên giao diện người dùng. Thời gian đáp ứng nhanh và chính xác là mục tiêu để đảm bảo trải nghiệm người dùng tốt.

  • Tải trọng: Kiểm tra khả năng của hệ thống xử lý đồng thời nhiều yêu cầu từ người dùng. Tải trọng có thể được tạo ra bằng cách mô phỏng số lượng người dùng truy cập vào hệ thống cùng một lúc hoặc sử dụng công cụ kiểm thử để gửi đồng thời nhiều yêu cầu đến hệ thống.

  • Tải công việc: Đo lường hiệu suất của hệ thống trong các tình huống công việc cụ thể. Ví dụ, kiểm tra khả năng của hệ thống xử lý đồng thời nhiều yêu cầu định vị từ nhiều người dùng, xử lý dữ liệu địa điểm phức tạp hoặc tính toán đường đi phức tạp trong một khu vực trong nhà lớn.

  • Tài nguyên tiêu thụ: Đánh giá việc sử dụng tài nguyên của hệ thống như bộ nhớ, CPU và băng thông mạng trong quá trình thực hiện các tác vụ định vị và tính toán. Điều này giúp xác định xem hệ thống có thể hoạt động ổn định và hiệu quả trong các điều kiện tải công việc khác nhau hay không.

  • Độ trễ mạng (Network latency): Kiểm tra khả năng của hệ thống hoạt động trong môi trường mạng có độ trễ cao. Điều này đặc biệt quan trọng khi hệ thống định vị trong nhà phải liên kết với các dịch vụ và cơ sở dữ liệu trên mạng.

  • Độ chính xác định vị: Đo lường độ chính xác của hệ thống trong việc xác định vị trí trong nhà. Điều này có thể được thực hiện bằng cách so sánh vị trí được định vị với vị trí thực tế đã biết trước và đánh giá sai số của hệ thống.

2. Kiểm thử chức năng (Functional testing):

Kiểm thử các chức năng cơ bản của hệ thống, bao gồm định vị vị trí, tìm kiếm địa điểm, hướng dẫn điều hướng, vv. Đảm bảo rằng các chức năng hoạt động đúng theo yêu cầu của người dùng.

3. Kiểm thử sự tương tác (Usability testing):

Đánh giá khả năng sử dụng và trải nghiệm người dùng của hệ thống định vị trong nhà. Tiến hành các thử nghiệm với người dùng thực để đánh giá tính trực quan, dễ sử dụng và sự hài lòng của họ.

4. Kiểm thử tương thích (Compatibility testing):

Loại kiểm thử này tập trung vào việc kiểm tra tính tương thích của hệ thống định vị trong nhà trên các nền tảng và thiết bị khác nhau. Điều này bao gồm kiểm tra tương thích với hệ điều hành di động, trình duyệt web và độ phân giải màn hình khác nhau.

5. Kiểm thử định vị vị trí:

Nhằm kiểm tra khả năng định vị chính xác của hệ thống trong một môi trường trong nhà. Điều này thường được thực hiện bằng cách sử dụng các thiết bị định vị như điện thoại di động hoặc thiết bị định vị chuyên dụng để kiểm tra vị trí được xác định và so sánh với vị trí thực tế.

6. Kiểm thử độ chính xác:

Loại kiểm thử này nhằm xác định độ chính xác của hệ thống định vị trong nhà bằng cách so sánh vị trí được định vị với vị trí thực tế đã biết trước. Điều này bao gồm đo lường sai số và đánh giá độ chính xác theo các tiêu chuẩn quy định.

7. Kiểm thử định vị đa điểm:

Kiểm tra khả năng định vị nhiều điểm trong một môi trường trong nhà. Cố gắng xác định vị trí chính xác của nhiều điểm trong không gian và so sánh kết quả với vị trí thực tế.

Quá trình kiểm thử định vị đa điểm thường bao gồm các bước sau:

  • Thiết lập điểm định vị: Xác định các điểm định vị mà hệ thống cần định vị. Các điểm này có thể là các vật thể, đối tượng hoặc nguồn tín hiệu được sử dụng để xác định vị trí.

  • Đặt yêu cầu kiểm thử: Định rõ các yêu cầu và tiêu chí để đánh giá hiệu suất của hệ thống định vị đa điểm. Các yêu cầu này có thể bao gồm độ chính xác định vị, thời gian xử lý, khả năng định vị đồng thời và sự ổn định của hệ thống.

  • Triển khai kiểm thử: Sử dụng các thiết bị định vị hoặc công cụ mô phỏng để định vị các điểm đã được thiết lập. Các thiết bị định vị có thể là GPS, công nghệ định vị trong nhà hoặc các công nghệ khác tùy thuộc vào yêu cầu của hệ thống.

  • Thu thập dữ liệu: Ghi lại dữ liệu định vị từ hệ thống trong quá trình kiểm thử. Dữ liệu này bao gồm thông tin vị trí được định vị, thời gian định vị và bất kỳ thông tin liên quan nào khác.

  • Đánh giá và phân tích: Phân tích dữ liệu thu thập được để đánh giá hiệu suất của hệ thống định vị đa điểm. Điều này có thể bao gồm so sánh vị trí định vị với vị trí thực tế đã biết trước, tính toán sai số định vị và đánh giá khả năng định vị đồng thời của hệ thống.

  • Xử lý vấn đề và cải tiến: Dựa trên kết quả kiểm thử, xác định và giải quyết các vấn đề và hạn chế của hệ thống định vị đa điểm. Cải thiện các thuật toán, điều chỉnh cấu hình và thực hiện các biện pháp khác để nâng cao hiệu suất và độ chính xác.

8. Kiểm thử độ ổn định:

Kiểm tra tính ổn định của hệ thống trong quá trình sử dụng liên tục. Theo dõi và đánh giá sự thay đổi vị trí trong thời gian và đảm bảo rằng hệ thống định vị không bị gián đoạn hay gây ra lỗi.

9. Kiểm thử tích hợp:

Kiểm tra tính tương thích và tích hợp của hệ thống định vị trong nhà với các thành phần và ứng dụng khác trong môi trường trong nhà, chẳng hạn như ứng dụng di động, hệ thống quản lý, hoặc hệ thống thông tin địa điểm.

Ví dụ, khi thực hiện kiểm thử tích hợp cho hệ thống định vị trong nhà trên iOS, có một số khía cạnh cần chú ý:

  • Tương thích với ứng dụng iOS: Kiểm tra tính tương thích và tích hợp của hệ thống định vị với ứng dụng iOS. Điều này bao gồm đảm bảo rằng việc giao tiếp giữa hệ thống định vị và ứng dụng iOS diễn ra một cách chính xác và liền mạch. Đồng thời, kiểm tra tính tương thích với các phiên bản iOS khác nhau và các thiết bị iOS khác nhau.

  • Tương thích với khung phát triển iOS: Kiểm tra tính tương thích và tích hợp của hệ thống định vị với các khung phát triển (framework) iOS như Core Location, MapKit hoặc Core Bluetooth. Điều này đảm bảo rằng hệ thống định vị có thể sử dụng các tính năng và chức năng của các khung phát triển này một cách chính xác và hiệu quả.

  • Tương thích với các dịch vụ và giao thức iOS: Kiểm tra tính tương thích và tích hợp của hệ thống định vị với các dịch vụ và giao thức iOS như GPS, Wi-Fi, Bluetooth, và các giao thức mạng khác. Điều này đảm bảo rằng hệ thống có thể sử dụng các dịch vụ và giao thức này để thu thập dữ liệu định vị một cách chính xác và hiệu quả trên các thiết bị iOS.

  • Xử lý quyền truy cập và cấu hình: Kiểm tra việc xử lý quyền truy cập định vị và cấu hình hệ thống trên iOS. Đảm bảo rằng hệ thống định vị tuân thủ các quy tắc và hướng dẫn của Apple về quyền riêng tư và cấu hình hệ thống định vị trên iOS.

  • Tương thích với các thành phần và ứng dụng khác trên iOS: Kiểm tra tính tương thích và tích hợp của hệ thống định vị với các thành phần và ứng dụng khác trên iOS như hệ thống thông tin địa điểm, cơ sở dữ liệu nội bộ, hoặc các ứng dụng khác trong cùng môi trường iOS. Điều này đảm bảo rằng hệ thống định vị có thể hoạt động tương thích và tích hợp với các thành phần và ứng dụng khác trong môi trường iOS.

10. Kiểm thử bảo mật:

Kiểm tra bảo mật của hệ thống định vị trong nhà để xác định và khắc phục các lỗ hổng bảo mật. Kiểm tra xem hệ thống có đáp ứng được yêu cầu về bảo mật dữ liệu và ngăn chặn các cuộc tấn công hay không.

Bài viết này mình đã đưa ra khái quát về công việc kiểm thử ứng dụng IPS. Nếu các bạn có góp ý hãy bình luận nhé.

Author: PoppinKhiem


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí