+ All Categories
Home > Documents > Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in...

Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in...

Date post: 05-Jun-2018
Category:
Upload: vuthuy
View: 215 times
Download: 0 times
Share this document with a friend
17
Using Sensors and Location Data for Cutting-edge User Experiences in Mobile Applications Overview Modern mobile devices like tablets are equipped with various sensors (accelerometer, gyroscope, magnetometer, GPS, etc.). To fully explore the use of the fused motion and location data, this article provides information on the best practices and importance of integrating/filtering/tuning the sensor data in end-user applications. The ultimate goal is to empower application developers to create cutting-edge user experiences in their applications. This article discusses: • Overview of sensors, data provided by Windows* Runtime APIs, usage scenarios, and challenges on using the sensor data in applications • Illustrative examples on how to integrate, filter, and tune sensor data in user applications for an immersive, seamless end-user experience • Optimizing the location user-experience by tuning location parameters and filtering location data noise Contents Overview ....................................................................................................................................................... 1 Contents ........................................................................................................................................................ 1 Sensor Overview ........................................................................................................................................... 2 Motion Sensors in Windows* 8 Runtime.................................................................................................. 3 Location Sensors in Windows* 8 Runtime................................................................................................ 4 Motion Sensors ............................................................................................................................................. 5 Accelerometer........................................................................................................................................... 5
Transcript
Page 1: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Using Sensors and Location Data for

Cutting-edge User Experiences in Mobile

Applications

Overview

Modern mobile devices like tablets are equipped with various sensors (accelerometer, gyroscope,

magnetometer, GPS, etc.). To fully explore the use of the fused motion and location data, this article

provides information on the best practices and importance of integrating/filtering/tuning the sensor

data in end-user applications. The ultimate goal is to empower application developers to create

cutting-edge user experiences in their applications.

This article discusses:

• Overview of sensors, data provided by Windows* Runtime APIs, usage scenarios, and challenges on

using the sensor data in applications

• Illustrative examples on how to integrate, filter, and tune sensor data in user applications for an

immersive, seamless end-user experience

• Optimizing the location user-experience by tuning location parameters and filtering location data

noise

Contents

Overview ....................................................................................................................................................... 1

Contents ........................................................................................................................................................ 1

Sensor Overview ........................................................................................................................................... 2

Motion Sensors in Windows* 8 Runtime.................................................................................................. 3

Location Sensors in Windows* 8 Runtime ................................................................................................ 4

Motion Sensors ............................................................................................................................................. 5

Accelerometer........................................................................................................................................... 5

Page 2: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Gyrometer ............................................................................................................................................... 10

Sensor Fusion .......................................................................................................................................... 11

Location Sensors ......................................................................................................................................... 12

Filtering Location Data ............................................................................................................................ 14

Conclusion ................................................................................................................................................... 15

About the Author ........................................................................................................................................ 15

Sensor Overview

The types and form factors of devices available with sensors is continuing to expand. Various phone

designs, a range of tablet sizes, UltraBook™ devices, convertible tablets, etc. are just a few examples

of the many form factors available with sensors. These unique devices open up interesting

opportunities for developers to create sensor-based applications.

In addition to new form factors, the types and capabilities of the sensors available to consumers and

application developers are ever increasing. Most mobile devices today are equipped with

accelerometers, gyrometers, magnetometers, GPS, Wi-Fi*, touch displays, Bluetooth*, NFC, and more.

Page 3: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Sensors that were once available only internally to the device such as thermometers are now

making their way to device APIs. The additional sensors available to application developers create

new opportunities for developers to create compelling applications.

Motion Sensors in Windows 8 Runtime

New for Windows 8 UI application development is a powerful set of APIs for using sensors. The APIs

include a set of common interfaces for most of the sensor components and provide both event and

polling-based mechanisms for retrieving data.

The following image shows an overview of the different components involved in using the Windows

8 Runtime for motion sensor application development.

Inputs to the Windows 8 Runtime displayed are the raw sources of motion sensor data. The Ambient

Light Sensor is shown for completeness since it uses the same common API for data retrieval.

Outputs of the Runtime expose several components available to you as an application developer.

Page 4: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

These include components that use multiple sensors to provide sensor reading data such as the

Compass, Inclinometer, and Orientation Sensor.

Windows.devices.sensors is the namespace you will find the APIs to retrieve sensor event data.

The following snippet is C# code showing an example of how to retrieve the accelerometer present

in the system and setup a method AccelerometerReadingChanged that will be called whenever

the accelerometer data is updated by the system.

Accelerometer acc = Windows.Devices.Sensors.Accelerometer.GetDefault(); if (acc != null) {

acc.ReadingChanged +=new typedEventHandler<Accelerometer, AccelerometerReadingChangedEventArgs>(AccelerometerReadingChanged);

}

The interval at which the event will be called is configurable. The property

minimumReportInterval will tell you what the highest possible frequency is for this sensor. This

value changes from device to device and is also influenced by the driver.

Location Sensors in Windows 8 Runtime

The location sensor APIs have a similar event-based interface and provide a common framework for

retrieving location data that could come from a variety of location data sources.

The diagram below illustrates how Windows 8 Runtime uses a variety of sources of location data,

multiplexes the geolocation data from all available location sensors, and returns the “best” location

data.

The Windows 8 Runtime namespace windows.devices.geolocation is used to access the

geolocation information. Creation of a location object is done with the following code:

Page 5: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Geolocator geo = new Geolocator();

To poll and detect the device’s current location use Geolocator.GetGeopositionAsync().

if (geo != null) { IGeoposition pos = await geo.GetGeopositionAsync();

}

This could be a lengthy operation and is denoted as being asynchronous. The use of the await

keyword makes this easy to handle in your UI code. By using await, the calling thread is not blocked

while this call is made and once GetPositionAsync returns, code execution continues after the async

function. To respond to location updates, hook an event callback geo_PositionChanged as below:

if (geo != null) { geo.PositionChanged += new TypedEventHandler<Geolocator,

PositionChangedEventArgs>(geo_PositionChanged); }

Additionally, tunable options for controlling how often you are notified about events include desired

accuracy, report time interval, and movement threshold.

Motion Sensors

Accelerometer-, compass-, and gyroscope-based apps are some of the most popular and have a

variety of applications including:

Augmented Reality

Games

Orientation

Pedometer

Navigation

Remotely-controlled Devices

Biofeedback

The Windows 8 runtime provides robust APIs and sensor fusion to incorporate in your applications,

but sometimes, applications need to build on top of this for the best user experience. The following

sections go into detail about how some of the common motion sensors work, what can be done to

improve the data of the sensor, and what are some of the limitations you might run into.

Accelerometer

The accelerometer sensor measures how fast the velocity of the device is changing over time. This

could be measuring the device shaking, moving from point A to B, or rotating. The following image

Page 6: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

displays some characteristics of the accelerometer as the device is rotated by an angle

counterclockwise.

Using gravity to our advantage, we can quickly determine the angle of rotation by looking at the

angle between the X,Y accelerometer values and the –Y axis. The alternative way to determine the

rotation would be to isolate gravity and measure just the changes in the accelerometer values that

occurred during the rotation. You would then integrate the values to give you velocity and once

again to give you distance travelled.

One major issue with both of these methods is that the data source of the accelerometer is rather

noisy. The following graph looks at the raw sensor readings as the device is rotated 90 degrees.

Starting at the left of the graph, the device is in a landscape position with the -Y axis pointing

straight down. Here you see the effect of gravity with a -1 value. After the rotation is complete, the

–X axis is pointing straight down and gravity is now reporting -1 g’s, while the Y axis no longer has

Page 7: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

any gravity component. The other notable characteristic of the graph is the amount of noise or jitter

in the lines. Using this raw data directly in your application may not produce ideal results. One

straightforward algorithm to deal with the jitter is a smoothing function that looks like this:

( )

= .15

Corresponding C# code might look like the following:

CalcRollingValue(double val, double prevVal) { return val * .15 + .85f * prevVal; }

This rolling average function removes high frequency noise by only allowing 15% of the current

value to be used at any new data point. The downside is that a large change in the accelerometer

values that you cared about would not be fully realized for several samples. As a result, the smaller

the alpha value the larger the lag introduced. Here is the same graph of a rotation with the

smoothing filter applied:

Immediately visible is that the noise visible in the original graph is much more subtle in the filtered

graph.

One other way to use the smoothing algorithm is to assist in isolating the gravity component of

acceleration values. To do this, subtract the rolling value from the instantaneous value and you are

left with only the change in value from the average. The following code and graph illustrate what

this looks like with the same rotation of 90 degrees:

float accelX = currentAccel.x - rollingValueX; float accelY = currentAccel.y - rollingValueY;

Page 8: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

A further improvement on the rolling filter is to use more advanced algorithms such as a Kalman

filter. The filter has a couple of interesting properties that allow it to provide better results. First,

the algorithm is able to use more than one source of data allowing it to use both inputs as sources

of measurement data and provide more accurate results. Second, the algorithm has a two-phase

approach that allows it to adapt based on the measurement noise and then update and correct the

prediction for the next measurement. The following diagram illustrates the approach:

The following graph shows the accelerometer output of a game that requires a quick response in

order to play well. The time span of all the motion data is only about 800 ms and varies quite a bit in

that short time. You can see in this case, the Kalman filter does a pretty good job of capturing the

large changes in accelerometer data but still creates smooth data values.

Page 9: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Knowing the limitations of the accelerometer data available to the application is important. The

following example of one of the limitations comes from an attempt to build an application that

detects directional tap on the device using the accelerometer. In the hardware accelerometer the

pulse caused by tapping the side of the device might look something like this to the sensor:

A large pulse followed by the signal quickly dampening, using this level of detail an algorithm could

be created to figure out that the device was tapped and what direction it came from. However, the

fidelity of the data at the application level is not this good and the following images illustrate what

happens as the sampling rate is increased and the samples don’t align with the pulse as expected:

Page 10: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

With even higher sample rates, writing an algorithm to detect the pulse is going to be difficult:

Gyrometer

The gyrometer measures rotational velocity in radians or degrees per second. To use the sensor to

measure rotation of the device, the time between readings must be stored and multiplied by the

velocity in order to calculate distance travelled.

double angle = -reading.AngularVelocityZ * secDelta;

The angle could then be used directly in your application.

The major drawback of the gyrometer is that it knows nothing about orientation of the device so

over time any error in the gyrometer values shows up as drift in your application.

Page 11: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Sensor Fusion

Sensor fusion offers the best solution by using multiple sources of data to report the orientation

more accurately. Accelerometer and gyrometer data are both used as inputs to the fused

orientation output. Depending on your application, the orientation can be consumed as pitch, yaw,

roll angles via the inclinometer or more advanced representations in the form of quaternions or a

rotation matrix.

In Windows 8 some of the aggregation and processing of sensor data is done in hardware, which

provides for greater accuracy and less power consumption. Using the inclinometer’s yaw reading,

the application can measure the same rotation of the device.

Page 12: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

float angle = reading.YawDegrees;

The angle of rotation around the z-axis is given as yaw in degrees.

Location Sensors

Most modern tablets, mobile phones, and PCs have location sensor capabilities. These devices

normally use multiple positioning methods to provide different granularities of location data. The

sources of position data vary in terms of accuracy, startup time, and power signature and include

the following:

GPS

A-GPS

Cell tower triangulation

Wi-Fi triangulation

IP Address

Applications that make use of location sensors range from games to navigation and some examples

are shown below:

Search for Points of Interest (POIs)

Geotagging ‒ adding location information to files such photos

Games ‒ Geocaching

Outdoors and fitness

Pedestrian or vehicle navigation

A few common sources of location data inaccuracy include IP resolution over corporate intranets,

Wi-Fi AP moves, and cell tower ID movement. The following image shows what happens when you

are indoors using only IP resolution and network traffic is being routed through corporate

headquarters:

Page 13: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Although the device was physically located in Arizona, the location data indicates positions in

Arizona and California.

Additional sources of location issues arise from GPS data error caused by situations such as being

indoors, atmospheric delays, and building or tree interference. The following image shows a route

being walked through the front lawn when the actual path never strayed from the sidewalk.

The following sections look at possible methods to increase the accuracy of the data used in

location-aware applications.

Page 14: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Filtering Location Data

geocoordinate.accuracy is used to retrieve the accuracy of the location in meters—the larger

the value, the less accurate the data. A simple filtering mechanism is to throw out values that are

not useful, use the geocoordinate.accuracy value to filter out the location sensor data that exceeds

the accuracy threshold.

if (position.coordinate.accuracy > X) { mark the location data invalid;

}

In situations where the device is moving, we can identify some GPS data errors using the following

algorithm that looks at the distances between neighboring points. The following pseudo-code

demonstrates the details:

if (distance (Pk, Pk+1) > Th1 meters && Distance (Pk, Pk+2) < Th2 meters) {

mark Pk+1 invalid;

}

Th1 = Speed1*TimeDelta1*C Th2=Speed1*TimeDelta2*C

C is a tuning constant based on the characteristics of your application. While the device is moving,

points are collected and the distances between two successive points are compared. If the distance

travelled by the first point is larger than some threshold but the distance travelled by next point is

within the threshold, the first point can be ignored.

An algorithm that is best in cases where your application is used in a stationary position is to look at

the centroid computed by a series of points. With a computed centroid, outliers can easily be culled

by comparing against a radius from the centroid.

Page 15: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Conclusion

We have shown a variety of possible filters to use in creating a sensor-driven mobile application.

These filters may be what you need to add another level of refinement to your application and

create a better user experience. Knowing the limitations and accuracy of the sensors you are using

will help in understanding what performance you can expect in your application.

As more devices are available with sensors tightly integrated, developers will always be ready to

create new features and come up with exciting possibilities for applications built around sensors.

Access to lower level, more accurate sensor data is ever increasing and will allow developers to

create even more exciting applications.

Additional information about the topics covered in this article:

– Ultrabook™ and Tablet Windows 8* Sensors Development Guide -http://software.intel.com/en-

us/articles/ultrabook-and-tablet-windows-8-sensors-development-guide/

– Using Accelerometer in Windows* Style App and a Case Study of Tap Detection -

http://software.intel.com/en-us/articles/using-accelerometer-in-windows-8-metro-style-app-

and-a-case-study-of-tap-detection/

– MSDN - http://msdn.microsoft.com/en-us/library/windows/apps/

– J. Kerr, F. Raab, E. Ramirez, “Best Practices in Data Reduction and Analysis of GPS Data” -

http://216.92.169.205/files/DataReduction_GPS_Workshop.pdf

– Greg Welch and Gary Bishop, “An Introduction to the Kalman Filter” -

http://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf

Acknowledgements

Special thanks to Miao Wei and Sushu Zhang for contributing content to this article.

About the Author

Page 16: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Nathan Totura is an application engineer in Intel's Software and Services Group.

Currently working on the Intel® Atom™-enabling team he helps connect software

developers with Intel technology and resources. Primarily these technologies

include tablets and handsets on the Android*, Windows 8 and Tizen* platforms.

Notices

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS

OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS

DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL

ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO

SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A

PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER

INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR

ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL

INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not

rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel

reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities

arising from future changes to them. The information here is subject to change without notice. Do not finalize a

design with this information.

The products described in this document may contain design defects or errors known as errata which may cause

the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your

product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature,

may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm

Software and workloads used in performance tests may have been optimized for performance only on Intel

microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer

systems, components, software, operations, and functions. Any change to any of those factors may cause the

results to vary. You should consult other information and performance tests to assist you in fully evaluating your

contemplated purchases, including the performance of that product when combined with other products.

Any software source code reprinted in this document is furnished under a software license and may only be used

or copied in accordance with the terms of that license.

Page 17: Using Sensors and Location Data for Cutting-edge User ... · Cutting-edge User Experiences in Mobile Applications ... Inclinometer, and Orientation ... the Kalman filter does a pretty

Intel, Ultrabook, and the Intel logo are trademarks of Intel Corporation in the US and/or other countries.

Copyright © 2012 Intel Corporation. All rights reserved.

*Other names and brands may be claimed as the property of others.

Optimization Notice

This sample source code is released under the Intel Sample Source Code License Agreement

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for

optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3,

and SSE3 instruction sets and other optimizations. Intel does not guarantee the availability,

functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel.

Microprocessor-dependent optimizations in this product are intended for use with Intel

microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel

microprocessors. Please refer to the applicable product User and Reference Guides for more

information regarding the specific instruction sets covered by this notice.

Notice revision #20110804


Recommended