External orientation device manager and utilities geared toward aggregating different headtracking methods.
It is recommended to build via CMake, there is an included Makefile
that can be used to run the following commands:
make configure && make build
ormake dev
and then open the configured IDE project files
cmake -Bbuild
Create project files by adding the appropriate-G Xcode
or-G "Visual Studio 16 2019"
to the end of this linecmake --build build -DENABLE_DEBUG_EMULATOR_DEVICE=ON
ENABLE_DEBUG_EMULATOR_DEVICE
compiler flag when building a non-release build type will enable an extra "emulator" device which can be useful for debug
- Compile the dependencies:
simpleble
andmetawear
: cd Builds/MacOSX/
orcd Builds/VisualStudio2019
cmake ../../Source/SimpleBLE/simpleble -B../../Source/SimpleBLE/simpleble -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15"
cmake --build ../../Source/SimpleBLE/simpleble
cmake ../../Source/Devices/MetaWear -B../../Source/Devices/MetaWear/build -DCMAKE_OSX_DEPLOYMENT_TARGET="10.15"
cmake --build ../../Source/Devices/MetaWear/build --config Release
- Open the
m1-orientationmanager.jucer
and compile as needed
Currently this helper service executable is expected in a common data directory of each local machine, and where applicable to be managed by a service agent or LaunchAgent.
cmake -Bbuild -G "Xcode" -DCMAKE_INSTALL_PREFIX="/Library/Application Support/Mach1"
cmake --build --configuration Release --install
cmake -Bbuild -G "Visual Studio 16 2019" -DCMAKE_INSTALL_PREFIX="%APP_DATA%\Mach1"
cmake --build --configuration Release --install
Design and architecture of the project is described in the Source directory, currently this project allows data transmission types to be defined via overrides of the HardwareAbstract.h while new devices using those data transmission types can be defined via the Devices directory.
- Custom Input OSC
- Supperware IMU
- MetaWear/mBientLab IMUs
- Waves Nx Tracker IMU
- M1 IMU
- WitMotion IMUs [WIP]
Please feel free to open an issue requesting a new device with device details
This repo also includes a flexible and simple UI app to show an example of interfacing with the m1-orientationmanager background service and output the calculated orientation via OSC to any IP + port for use with other software.
This can be found in the osc_client directory.
The setup for the OSC Tool can be found here
This project references and implements some design, UI and UX concepts from nvsonic-head-tracker utility and expands upon it by handling and aggregating more connection types as well as creating a server/client design to handle dual direction communication between a network of clients.