2. Tổng quan về vấn đề nghiên cứu
2.1. Phân tích và xử lý tín hiệu cảm biến
2.1.1. Cảm biến
2.1.1.1. Tổng quan về cảm biến trong điện thoại thông minh
Hiện nay, các loại điện thoại thông minh trên thị trường đều được trang bị thiết bị cảm biến gia tốc, đặc biệt là dòng điện thoại cảm ứng. Mục đích của cảm biến gia tốc trong điện thoại di động là nhằm giúp điện thoại có thể tương tác được với môi trường xung quanh, cụ thể là khi người dùng xoay ngang màn hình điện thoại hoặc máy tính bảng thiết bị có thể tự nhận biết được và có thể xoay ngang màn hình cảm ứng.
Nhiều điện thoại di động có tích hợp bộ cảm biến, mỗi loại cảm biến có chức năng riêng của nó. Hiện nay, có nhiều ứng dụng giành cho điện thoại di động được xây dựng nhằm tận dụng lợi thế của các cảm biến này vì chúng có khả năng cung cấp dữ liệu thô với độ chính xác cao. Các ứng dụng thực tế như: hệ thống theo dõi chuyển động thiết bị ba chiều của đối tượng, các thiết bị định vị hoặc ứng dụng theo dõi những thay đổi trong môi trường xung quanh.
Trên nền hệ điều hành Android hỗ trợ ba loại cảm biến [28]
Đầu tiên là cảm biến chuyển động: chúng bao gồm cảm biến trọng lực, cảm biến gia tốc, cảm biến con quay hồi chuyển và cảm biến vector quay, các lực lượng tăng tốc một biện pháp và lực lượng quay theo 3 trục.
Loại thứ hai là các cảm biến đo vị trí của một thiết bị vật lý: chúng bao gồm từ kế và cảm biến định hướng.
Cuối cùng là cảm biến môi trường (áp kế, quang kế và nhiệt kế) đo các thông số khác nhau về môi trường như áp lực xung quanh và nhiệt độ không khí, độ ẩm và ánh sáng.
Các bộ cảm biến không chỉ khác nhau giữa các thiết bị Android, mà còn khác nhau giữa các phiên bản Android. Bảng 2.1 tóm tắt một số cảm biến có sẵn trên cơ
Bảng 2. 1. Cảm biến sẵn có bởi nền tảng Android [29] Cảm biến Android 6.0.1 Android 5.1.1 Android 4.0 Android 2.3 Android 1.5
Gia tốc Yes Yes Yes Yes Yes
Nhiệt độ môi
trường xung quanh Yes Yes Yes n/a n/a
Trọng lực Yes Yes Yes Yes n/a
Máy con quay Yes Yes Yes Yes n/a
Ánh sáng Yes Yes Yes Yes Yes
Gia tốc tuyến tính Yes Yes Yes Yes n/a
Từ trường Yes Yes Yes Yes Yes
Định hướng Yes Yes Yes Yes Yes
Áp lực Yes Yes Yes Yes n/a
Gần Yes Yes Yes Yes Yes
Độ ẩm tương đối Yes Yes Yes n/a n/a
Vector quay Yes Yes Yes Yes n/a
Trên nền tảng cảm biến Android cho phép chúng ta truy nhập được nhiều loại cảm biến. Trong đó một số là dựa trên phần cứng và một số dựa trên phần mềm. Cảm biến dựa trên phần cứng là thành phần vật lý được tích hợp trong điện thoại hoặc máy tính bảng. Cảm biến dựa trên phần mềm không phải là thiết bị vật lý, do đó họ bắt chước các cảm biến dựa trên phần cứng. Cảm biến dựa trên phần mềm có dữ liệu thu được từ một hoặc nhiều hơn các cảm biến dựa trên phần cứng và cảm biến ảo.
2.1.1.2. Cảm biến gia tốc
Gia tốc là một đại lượng vật lý quan trọng dùng để mô tả chuyển động. Gia tốc của một vật tại một thời điểm bất kỳ là mức độ thay đổi vận tốc của nó tại thời điểm đó [1].
Các cảm biến gia tốc hiện nay đều có chi phí sản xuất rẻ, vì vậy hầu hết các thiết bị di động thông minh đều được trang bị cảm biến gia tốc. Tùy vào mục đích sử dụng khác nhau của cảm biến gia tốc trên các thiết bị, nhưng mục đích chung của cảm biến gia tốc là giúp thiết bị có thể nhận dạng sự thay đổi của chiều và góc quay của thiết bị.
Cảm biến gia tốc [29] đo gia tốc trong 3 chiều của không gian trên ba trục của hệ tọa độ oxyz, trong đó bao gồm cường độ lực hấp dẫn. Hình 2.2. Minh họa mô hình gia tốc trong điện thoại di động.
Để lấy giá trị của cảm biến gia tốc mặc định, chúng ta tiến hành thực hiện đoạn code sau:
privateSensorManager mSensorManager;
privateSensor mSensor;
...
mSensorManager =(SensorManager)
getSystemService(Context.SENSOR_SERVICE);
mSensor =
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);
Cảm biến gia tốc xác định gia tốc được áp dụng cho một thiết bị (Ad) bằng cách tự đo lường các lực được áp dụng cho các cảm biến (Fs) với mass là khối lượng của thiết bị được tính bằng công thức sau:
Ad = - ∑Fs / mass (2.1)
Tuy nhiên, lực hấp dẫn luôn luôn ảnh hưởng tới việc đo lường gia tốc được tính theo công thức sau đây:
Ad = -g - ∑F / mass (2.2)
Vì vậy, khi thiết bị đang đứng yên (và không tăng tốc), gia tốc nhận giá trị của g = 9,81 m/s2. Tương tự như vậy, khi thiết bị này rơi tự do và đang tăng tốc hướng tới mặt đất với gia tốc là 9,81 m/s2, cảm biến gia tốc sẽ đọc một giá trị của g = 0 m/s2. Vì vậy, để đo lường gia tốc thực sự của thiết bị, cần loại bỏ sự ảnh hưởng của trọng lực khỏi dữ liệu gia tốc. Điều này có thể đạt được bằng cách áp dụng một bộ lọc thông cao.
Mặt khác, như chúng ta đã biết môi trường trong nhà là một môi trường phức tạp, bao gồm nhiều đồ đạc, vật dụng, thiết bị,… trong đó có một số thiết bị có tác động lên cảm biến gia tốc, dẫn đến tín hiệu gia tốc thu được chưa chính xác, còn tồn tại các thành phần tín nhiễu. Chính vì vậy, cần tiến hành lọc để loại bỏ các tín hiệu nhiễu này, nhằm đưa ra giá trị gia tốc chính xác nhất phục vụ cho quá trình định vị ở những bước tiếp theo.
Nhìn chung, cảm biến gia tốc là một cảm biến rất hữu ích trong việc theo dõi chuyển động thiết bị. Hầu hết các thiết bị cầm tay và máy tính bảng hỗ trợ Android đều có một cảm biến gia tốc và tiết kiệm năng lượng 10 lần so với cảm biến chuyển động khác. Một hạn chế là bạn có thể cần triển khai bộ lọc thông thấp và bộ lọc thông cao để loại bỏ lực hấp dẫn và giảm nhiễu.