Sensor Platforms' FreeMotion Library is designed to improve the use of sensor suites like those found on smartphones using algorithms and heuristics to deliver improved results on position, attitude and movement. It can also provide virtual peripherals like a virtual gyroscope using sensor fusion.
A virtual peripheral provides information based on other sensors. It may be a front end to a real peripheral that may be offline or idle. For example, a MEMS gyroscope is power hungry device using 5 to 10 mA. It also typically has a 50 to 100ms wakeup time. Other sensors like a MEMS accelerometer use less power and wake up faster but provide less accurate results. Still, many applications do not need the same level of accuracy all the time such as when a device is idle.
A FreeMotion virtual peripheral would always provide sensor information its response time and accuracy would vary depending upon the source of the information. This is transparent to the application. It can significantly reduce power consumption (Fig. 1).
Another way FreeMotion can provide more information is to indicate a device's context with respect to a user. For example, it could provide information about when a device is in motion (Fig. 2). This could be used by applications such as the phone application to take a message if the user is running.
The FreeMotion library can handle a range of industry standard sensors. It can also integrate with applications or operating environments such as Android. Standard APIs exist for many environments but they are often limited.
The FreeMotion library uses less than 10 MIPS when handling the sensors directly. This can also improve sensor performance. For example, its magnetic compass operates at 20Hz with 3-5 degrees accuracy with magnetic sensors even with magnetic distortion and anomalies nearby. It can recognize environments such as buildings where there are steel beams that are often magnetized. Even closing the lid on flip phone can cause a distortion of 10-15 degrees.
FreeMotion is written in fixed point C code for efficiency. The support can be implemented within a standalone application. It can also provide a sensor node or operate in a distributed environment where a micro may be managing the sensors along with an application processor (Fig. 3). Any configuration provides the application with the same API.
Sensor fusion via FreeMotion can provide improved power utilization while providing best-in-class results. It also delivers improved accuracy and better noise processing that standalone sensors.