
IS-1500 User Guide
Thales Visionix, Inc.
MNL- 0024 (D)
Page 29 of 59
S
OFTWARE
4.1
Software Flow Chart
The Introduction section provided a brief overview of the software architecture. Refer to the flowchart provided in Figure 2 as needed.
4.2
sfHub
The sfHub software is a console executable that is responsible for calculating tracking data from the images and IMU records provided
by the InertiaCam. When run, it establishes a connection to the InertiaCam and begins streaming in the optical data from the camera
and inertial data from the IMU. This data is run through the VINS and PRA threads described in the Understanding Tracking section to
calculate tracking data. The tracking data is then output by sfHub and passed through sfAccess to sfStudio or the end user application.
The communication between sfHub and sfAccess is established over UDP and TCP. In some server-like set-ups, one computer (a host,
or server) can be used to run sfHub while another (the client) runs sfStudio or the end user application. This serves to take the
computational load of calculating tracking data off of the master computer. It is also useful in scenarios that require tracking to take
place in one location and analysis to be performed elsewhere. For more information on sfHub and sfAccess to allow for this kind of
set-up, refer to the Changing TCP and UDP Settings in sfAccess.ini and sfHub.ini subsection of the Advanced Settings and Configuration
Files section. Be sure to read through the Introduction and Editing Configuration Files sections for warnings and instructions before
attempting to change the configurations. It should also be noted that image transfer will not be possible in this type of configuration,
as this is only available when sfHub is run locally.
In order for sfStudio or the end user application to receive tracking data, sfHub needs to be running in the background to generate the
data. When using sfStudio, sfHub is automatically launched by the Connect button, as will be discussed in the sfStudio section.
However, end user applications will need to either launch sfHub themselves or else sfHub will need to be launched by the user
manually prior to running the application.
4.3
Interfacing with Tracking Data
For the majority of users, the InterSense library provides the most simple and effective approach to integrating tracking data from the
IS-1500 into the end user application. The library is distributed as iSense.dll for Windows and as libisense.so for Linux. The InterSense
library is functional with most InterSense tracking devices, including the 3-DOF InertiaCubes and 6-DOF IS-900. It is largely backwards
compatible with legacy versions, requiring minimal to no software changes to successfully switch between tracking hardware.
However, a number of changes have been made to the InterSense library for use with the IS-1500. A list of these changes can be found
in the InterSense Developer Guide (MNL-0015), along with further information on use of the InterSense library.
The InterSense library is specifically created for ease of use and compatibility with the other InterSense trackers. While this is beneficial
for the majority of users, it also limits the degree of IS-1500-specific functionality the InterSense library can reasonably incorporate.
Some advanced users may find the InterSense library restrictive and unable to provide the low level data required by their applications.
The sfAccess library provides more expansive functionality for the IS-1500, but is only recommended for use in applications that
specifically require its low-level access. Further information on the sfAccess can be found in the IS-1500 Advanced Developer Guide
(MNL-0025).
The third method of interfacing with tracking data is intended for users working with Unity applications. A Unity plug-in is provided
with the software package for simple integration. The Unity plug-in uses the InterSense library as a foundation and shares the same
level of functionality.