The OpenShoe Matlab Implementation
v1

This is the documentation for the OpenShoe Matlab Implemenation. The OpenShoe Matlab Implementation is a Matlab script (library) for processing inertial measurement unit (IMU) data using a Kalma filter based zerovelocity aided inertial navigation system algorithm. The main (skeleton) file that should be called to run the algorithm is main.m. All settings for the algorithm are done in the file settings.m. The processing of the data is done by the functions zero_velocity_detector and ZUPTaidedINS, located in the files zero_velocity_detector.m and ZUPTaidedINS.m, respectively. The result from running the algorithm is plotted by calling the script view_data.m.
The zerovelocity aided inertial navigation system algorithm is implemented using a complimentary feedback filtering structure. That is, the inertial navigation system works as the backbone of the system and a Kalman filter is used to estimate (track) the perturbations (errors) in the inertial navigation system. When a zerovelocity observation is done, the Kalman filter estimates the current perturbations (errors) in the navigation state estimate of the inertial navigation system; the estimated perturbations are feedback into the inertial navigation system to correct its internal states. The user can choose between four different state space models to be used in the Kalman filter. The default model is a nine state model, having the position, velocity, and attitude perturbations as states. The user can then choose between adding sensor biases errors and/or scale factors errors as additional states to the default model.
To determine when a zerovelocity update should be applied in the Kalman filter, a zerovelocity detection algorithm is used. The zerovelocity detection algorithm monitors the signal measured by the inertial measurement unit, and based upon the prior information about the signal at different motion dynamics it chooses between the hypotheses that the navigation system is stationary or is moving. The user can choose between four different zerovelocity detection algorithms, the SHOE (GLRT.m) detector, the acceleration moving variance (MV.m) detector, the acceleration magnitude (MAG.m) detector, and the angular rate energy (ARE.m) detector. Details about these detectors can be found in the papers
All settings for the algorithm and the inertial measurement data file that should be used are controlled from the function settings.m. The default settings are such that the algorithm produces a good output when processing, the with the program, provided inertial measurement unit data and with the default state space model. For other data sets or when using the higher order state space models the settings may have to be tuned in order for the algorithm to produce a good result. Information on how to tune the system can be found in the paper
The inertial measurement unit data that comes with the OpenShoe Matlab Implementation code has been recorded using a MicroStrain 3DXGX2 inertial measurement unit, with a dynamic range of +18g and 1200 deg/s, and a sample rate of 250 Hz. The inertial measurement unit was mounted in the sole of the right side shoe of the user, and the user was walking in a closed loop trajectory where he returned to his starting position within +1 cm. The gate speed for the different data sets are 5 km/h and 7 km/h.