EasyAR Motion Tracking¶
Motion Tracking implements metric-scale six degree-of-freedom device tracking for Android devices. Developers can build AR experiences for education, shopping, creativity and gaming. Motion Tracking itself does not support loading maps, for which you can use it with EasyAR SparseSpatialMap. Motion Tracking itself does not support object occlusion and physcial collision, for which you can use it with EasyAR DenseSpatialMap.
World and camera coordinate systems used in Motion Tracking follow right-handed convention: the y-axis points upward, the z-axis points toward the viewer and the x-axis points toward the viewer's right.
How Motion Tracking Works¶
Motion Tracking creates the correspondence between virtual and real spaces by using the technique called Visual-Inertial Simultaneous Localization and Mapping (VISLAM). Motion Tracking recognizes salient features in the camera image, tracks differences of the positions of those features across continuous frames and fuses that information with IMU data. Combining the multi-sensor information, Motion Tracking tracks the motion of the device in the real world. The output is real-time high-precision six degree-of-freedom pose of the device.
Visual-Inertial Simultaneous Localization and Mapping system is able to recover the metric scale, which means the unit of position is meters.
The VISLAM system greatly reduces the long distance drift compared to motion tracking system using only vision. The underlying sensor fusion algorithm also makes the system robust to low texture enviorment, strong illumination change and rapid device motion.
Motion Tracking can be initialized by traversing the scene 1-2 times. The origin of the world coordinate systemis defined as the position of device when initialization succeeds.
After tracking is lost caused by long time poor tracking quality due to fast motion or little visual information, Motion Tracking can quickly and accurately recovers its pose once the camera sees previous mapped region.
Hit test against the point cloud or horizontal plane is supported.
When you want to place a virtual object, you need to define an anchor to ensure that Motion Tracking tracks the object's position over time. Often times you create an anchor by hitTestAgainstPointCloud. This means that if you place a virtual object on your desk, if Motion Tracking later adjusts the pose of the points associated with the desk, the virtual object will still appear to stay on top of the table. hitTestAgainstPointCloud will automatically create an Anchor, which can ensure that virtual objects are anchored in a specific area. When there are too many anchors and the memory limit is exceeded, the old anchors will be automatically released. You can also call hitTestAgainstPointCloud after calling hitTestAgainstHorizontalPlane to create an anchor for horizontal plane.
EasyAR Sense automatically determines whether the device supports motion tracking and can be started automatically. No third party app is further needed.
Motion Tracking is designed to work on a wide variety of qualified Android phones running Android 7.0 and later. For the full list of all supported devices, refert to Motion Tracking Supported Devices .