OpenShoe is an open source embedded foot-mounted inertial navigation system (INS) implementation, including both hardware and software designs. The module tracks the motion of the foot over the step by means of inertial navigation. The steps can then be summed up to get a relative position of a pedestrian, as illustrated above.
The embedded implementation and the step-wise inertial navigation modularizes the foot-mounted INS technology which facilitates the integration in realtime pedestrian positioning systems, and make it feasible to equip a larger number of users with foot-mounted INS modules for field performance tests and cooperative localization studies. The modules are wireless and can provide the tracking information to, for example, a smart-phone. Modules can be used on both feet for improved performance.
General features of the implementation:
Embedded ZUPT-aided INS
Open source
Wireless
Dead reckoning updates*
Hardware features:**
Four Invensense MPU9150 IMUs
Atmel AVR32UC3C microcontroller
Bluetooth and USB interfaces
Approx. 1.5[h] battery time
Size 23.2x31x13.5[mm]
Software features:
Embedded software written in C
General processing and communication framework
We hope that you find the implementation interesting and useful. If you have any questions, comments, suggestions, or inquiries, please contact us at openshoe@ee.kth.se.
Best regards
/The OpenShoe team
* For system integration, the statistics of the position and heading is necessary. This is achieved by providing dead reckoning updates (displacement and heading changes over individual steps) which can be used to reproduce the statistics. This way, most of the processing can be hidden from the user while still providing sufficient information for fusion with other information sources.
** Additional hardware features such as a FLASH memory and a pressure sensor are available. However, no software support for these components is yet available.
Recent posts
Gait analysis
September 27, 2016, Posted by: John-Olof
Finally a video of some of our ongoing research …
Progress in MIMU research
September 27, 2016, Posted by: John-Olof
Over the last years we have spent a significant research effort on analysis of the multiple-IMU (MIMU) systems and platforms we have built. Recently we have had result of two major efforts published:
The article contains the first estimation theoretical formulation and analysis of MIMU systems. The formulation makes it possible to analys fundamental properties of such systems and to derive efficient estimators. In the article,we:
Derive bound on the achievable performance of MIMU-systems
Suggest an efficient (achieving the bounds) maximum-likelihood estimators for such systems
Analyze the properties and performance of MIMU-systems by simulations an experimental data
Working with MIMU systems, we have come to realize that the related results are very much spread out and poorly crosscited. Therefore, we compiled a literature survey consisting of some +300 publications, categorized according to array setup, study area and application. The survey also contains a description of fundamental system properties of inertial arrays. Our hope is that the survey will provide the interested reader with an overview of the topic and inspire further research in an area where the rapid development of sensor and computational technologies provides many new opportunities.
Software updates
September 27, 2016, Posted by: John-Olof
I see there has been almost a year since last update. In other words, time for some updates! I will start with some modules software updates. I’ve recently pushed some software updates for the embedded code. The main updates are:
Support for reading out magnetometer data from the IMUs
Bugfix for the lossless communication mode. A bug prevented packages from being resent.
In addition, numerous small improvement and modifications have been made.
Recently there has been a number of software updates on source forge:
1. The communication logic has now been isolated from the hardware dependencies and the UART (Bluetooth) and the USB is now handled by the same routines. Previously the communication logic code was duplicated to handle the two interfaces.
2. The project files have now been upgraded from Atmel Studio 6.5 to Atmel Studio 7.
3. The Atmel Software Framework (ASF) has been updated from version 2.7 to version 3.18. Further, all ASF/platform dependencies have been removed from the algorithms so there is no ASF stuff longer in the algorithm project.
Updated low-level communication routines
March 9, 2015, Posted by: John-Olof
Over the last weeks I’ve updated the low-level communication routines in the embedded code. This should be the end of the clean-up and update of the communication interfaces over the last two month. Now the USB and the Bluetooth interfaces should behave identical, apart from the lower bandwidth of the Bluetooth interface. Further, both interfaces are now double buffered giving a slightly better performance. Overall these changes should not affect high level usage of the modules. What remains to be done is to actually merge the communication logics of the two different interfaces. Now there is a lot of code duplication, not more than before but just much more obvious. However, for now I’m content with the state of the code and I don’t think I will do this in the near future.
Somewhat adjusted control-scripts and calibration scripts:
Especially, in the calibration script I’ve added a pacing beep for placing the calibration body on the different sides for roughly the same time.
Edit: I’ve not updated the communication protocol documentation jet. I hope to do that before I forget about it. However, the changes are very small, essentially that the USB interface supports lossless communication just like the Bluetooth interface.
OpenShoe is an open source project for creating an embedded foot-mounted INS implementation.