Last week, I finally finished and pushed some updates/new development of the software onto SourceForge. What has been constructed is what I call an inertial frontend. The basic idea is:
In words it’s a processing block (group of routines together with some state variables) which package and performs all the processing prior to the inertial navigation, i.e. calibration compensation (and fusion of array data), test statistics calculation and thresholding for the ZUPTs, and some online bias estimation. This is processing which is tightly connected with the IMU and rather independent of the inertial navigation. The most significant attributes of the frontend is that it’s completely implemented with integers arithmetic (so that it could potentially be placed in a processing unit embedded with the IMU) and the test statistics is implemented in a recursive form (which makes the computation significantly less expensive to start with and also independent of the window size). This far it seems to be working great. We’ve used a crude version of it since april last year so I don’t expect any larger problems with it but be aware that it’s not been thoroughly tested yet. This far the code and the underlying theory is pretty much only documented in various technical notes on my computer but hopefully I will have time to gather it in a paper soon. Anyway, now you know roughly what the 400-line block of obscure code is doing.