Open source embedded foot-mounted INS
OpenShoe is an open source embedded foot-mounted INS implementation including both hardware and software design. A cross section of a shoe with a unit of the implementation integrated into the sole can be seen above. To our knowledge, this is the only implementation of its kind.
The implementation has been done with the hope that it will save time, sweat, and tears for navigation researchers as well as facilitate the use of the technology by researchers not specialized in aided INS, e.g. in fields such as biomedical engineering, behavioral science, and ubiquitous computing. The value of the embedded implementation also lies in its modularity and in its small weight, bulk, and price in comparison with the typical sensor-plus-laptop research systems. These properties alleviate the work of integrating the foot-mounted INS in larger realtime pedestrian navigation systems, and make it feasible to equip a larger number of users with footmounted INS units for field performance tests and cooperative navigation studies.
THE MODULES ARE CURRENTLY (SPRING OF 2014) UNDERGOING SIGNIFICANT UPDATES AND THE INFORMATION BELOW IS NO LONGER UP-TO-DATE. SEE RECENT POSTS BELOW FOR FURTHER INFORMATION.
General features of the implementation:
- Embedded ZUPT aided INS
- Open source and fully documented
- Reproduction cost below $800
- Designed for an Analog Devices ADIS16367 IMU but with interface compitability with all IMUs in the iSensor serie
- 820[Hz] sampling rate, 18[g] and 1200°/s dynamic range, 330[Hz] sensor bandwidth using the ADIS16367 IMU
- Atmel AVR32UC3C microcontroller with hardware floating point
- Footprint 28.5x32x40.5[mm]
- USB interface
- Source code written in C
- Easily configured to run any user implemented algorithms
- Matlab code available for communication
- Reprogrammable through the USB interface.
- Appear as a virtual com-port
- Configurable to work as an IMU, as a stand-alone ZUPT-aided INS, and as a displacement and heading change sensor.
The system is easily reproducible. On this site you can find:
- Precompiled code
- Fully documented C source code
- Production files for PCB/PCA and casing
For a more detailed presentation of the implementation, see the article Foot-mounted INS for Everybody — An Open-Source Embedded Implementation (opens in a new tab).
We hope that you find the implementation interesting and usefull. If you have any questions, comments, suggestions, or enquiries, please contact us at firstname.lastname@example.org.
/The OpenShoe team
April 1, 2014, Posted by: John-Olof
Finally, the new generation of the IMU array boards, the MIMU4444v1, arrived yesterday. These boards measure 49.3x26.6[mm] and contain 32 MPU9150 IMUs each, which are all sampled in parallel. The embedded software for the boards is achieved by compiling the code on sourceforge with the argument –DMIMU4444. The design-files for the boards are available under Massive-MIMU. This is not an April fool mockup! The multi-IMU boards are rather a major side project to the main foot-mounted INS development. The same principles are used in the MIMU22BT boards but with 4 IMUs.
Casing STL files
March 30, 2014, Posted by: John-Olof
The casing STL files can now be found under:
The casing is 1.5[mm] thick all around.
The outer dimensions of the casing are 23.2x31x13.5[mm].
The casing has a snap fit solution and does not require any screws or similar. This far, we have had the casings printed on a MakerBot 2 by myobjectify.com.
Brief technical summary
March 25, 2014, Posted by: John-Olof
Below is a brief technical summary of the new boards/modules
- 4 MPU9150 9-axis IMUs sampled in parallel
- Atmel AT32UC3C2512C 32-bit floating point microcontroller
- ST SPBT2632C2A Bluetooth module
- Battery powered with charging via USB
- 4 layer 22.5x20x5.5mm PCB (excluding protruding USB connector)
- Module size, including 150mAh battery, circa 31x24x14mm (casing not final)
In addition we have also thrown in a flash memory (up to 64Mb) and a pessure sensor.
If you have looked at the photos below you may be wondering why there are two micro-USB connectors. The one which has a slot in the casing is a proper USB used for communication (if you don’t want to use the Bluetooth or simply want more data than the Bluetooth-link can handle), charging, and reprogramming with the bootloader. The one hidden inside the casing actually contains a JTAG interface for debugging and reprogramming. Micro-USB connectors are simply convenient small footprint connectors.
Design files released
March 24, 2014, Posted by: John-Olof
Since we finally got a module working, I have now published the PCB design files under
- System reproduction
Basic embedded software for the new modules is already available on sourceforge. However, significant updates, especially to the wireless interface, is expected in the near future. The STL-files for the casing I will publish as soon as it has gone through some more iterations.
By the way, the new boards goes under the name MIMU22BTv2 (MIMU=multi-IMU, 22=number of IMUs on front and back, BT=Bluetooth, v2=version 2). This is how it’s referred to in all config-files in the software.
Note that for some feature such as the memory and the pressure sensor there is still no software support for and they have not been tested at all. On the other hand they are not necessary for the core functionality or the boards, i.e. pedestrian tracking.
March 24, 2014, Posted by: John-Olof
After what feels like a 1000 mounting attempts, we finally made one board of the first generation work! So 4 IMUs, wireless transmission, battery powering and realtime stepwise dead reckoning. To say the least I’m pretty relieved to see the whole chain working. We are still expecting updated versions of the boards but there are (should be) no changes to the schematic so hopefully they should work right out of the box.
The battery cables should later on be soldered straight into the board but due to further testing needs we didn’t want to do that. Consequently, you see the ugly solution with a JST connector and a pin header, and for the initial testing we had to go with electrical tape instead of the casing lid.
Above you see the first (actually second, since the first time I got about 5m and then the battery cable came off) tracking result with the unit taped to the forefoot and walking back and forth in the corridor two times. Note that Matlab is only summing up the step displacements and heading changes and most of the processing is done in the module.
Plenty of things remain to be done but at least now we know we will eventually have working modules!