Summary: We provide an SDK with limited functionality and support. It is sufficient for simple configuration and streaming, but not for full application development or advanced functionality like converting logged recordings or synchronizing with external systems using our Sync Box.
Often, researchers or clinicians need to integrate data from APDM's movement sensors into their own data collection workflow. In most cases, this data collection can all happen within our end user software applications (e.g., Motion Studio, Mobility Lab, Moveo Explorer, ...). For example, these software packages can take advantage of our external Sync Box which enables accurate synchronization of recording events between many types of systems (e.g., video motion capture, gait mats, etc.).
In some cases, however, it is desirable to record directly within a different programming environment. For example, a researcher may be experimenting with real-time feedback or novel visualizations of streaming movement data. For these special cases, it may be desirable to communicate directly with our hardware and process the low-latency movement data using custom built software.
To facilitate this use case, APDM makes available a subset of its internal SDK to our end users. This functionality enables researchers to configure our hardware, stream wireless movement data into another application of their own design, and to optionally save this data in our HDF format. We do not, however, support use of advanced functionality of the SDK, such as firmware updates, external synchronization (with our Sync Box), and conversion of logged data files.
Here are some additional notes about our SDK:
- The latest release of the SDK can be found at: http://share.apdm.com/libraries/release/
- The posted release is always what is used in our latest software releases. Firmware versions are compatible.
- The download is password protected. The username & password are both "SDK".
- There is auto-generated API documentation provided in the download, but not a lot of additional documentation. The API documentation currently includes lots of low level functionality that end users will never use (it is 205 pages long). We are likely to prune this significantly in the future, as we reduce the scope of what is supported through our SDK for end users.
- There is example code for performing simple configuration and streaming in C, Java, Python, and Matlab. These are set up to stream the data to our HDF format, but you can comment that out if you wish. We recommend sticking close to these examples for our hardware interaction, but you can do what you want with the streamed data (e.g., display it in realtime).
- A common use case is configuring in Motion Studio (or another one of our applications), and then streaming using a custom built application. This minimizes the custom code that has to be written.
- Of all of the language bindings provided, Matlab has the weakest support. There are some functions in our library that simply cannot be called from within Matlab. We will likely suggest using the Java interface from within Matlab in the future (you can interact directly with Java from within Matlab, and this approach overcomes a number of the issues with directly calling the libraries from within Matlab).
- To get the Matlab code running, you should copy all of the header files from the apdm_sdk/include directory into the current Matlab working directory, along with apdm_matlab.h (from the matlab directory) and the native library from the libs/[platform]/[architecture] directory.