OpenIMU is a highly-efficient software stack for the development of navigation systems.
- powerful IDE, platformio vscode
- effiecient source code control, github
- affordable debugging tool, st-link
- Hardware requirements
- Software requirements
- Installation
- Editing
- Build
- Debug
- Firmware Upgrade
- Data Record
- OpenIMU framework
- OpenIMU data acquisition and processing
- Contributions
- License
- Windows 10 or 7 PC
- Ubuntu version 14.0+
- Mac book
- Aceinna's Dev Kit
- ST-Link V2
- Windows, Mac or Linux OS
- VSCode source code editor (open source)
- ST-link driver
- Aceinna navigation studio extension for VSCode
- Aceinna's utility based upon python
- Install VSCode source code editor
https://code.visualstudio.com
- Install Aceinna Navigation Studio extension for VSCode
Click extension icon at left bar and type aceinna, then click installation button.
- Install ST-link V2 driver (Windows only)
http://www.st.com/en/development-tools/st-link-v2.html
- Download zip image of this repository into folder Documents\platformio, unzip it and rename directory "openimu_master" to "openimu"
- In VSCode open source tree clicking on Explorex icon (top left)
- Choose required file(s) and apply desired changes
- Save file (CTRL-S of File->Save)
- Click Home icon on the bottom of pio IDE
- Choose "Open Project"
- Navigate to the folder \Documents\platformio\openimu\OpenIMU300ZA
- Click button "Open OpenIMU300ZA"
- Click Build (checkmark) icon on the bottom of pio IDE
- Create a pio's account
pio account register
pio account login
- Press "F5" or start debug session or choose "Debug->Start Debugging" in menu
- Use Debug tool panel on top of the screen Debug menu or keyboard shortcuts (F5, F10, F11) to control debug functions
- Set up breakpoints anywhere in the code double clicking space left of required line number
- Click "Upload" button on the bottom of Aceinna Navigation Studio to upload firmware onto unit.
- Install Aceinna's utility
git clone https://github.com/Aceinna/python-imu380
- Install python pip,
pyserial
tornado
azure-storage-blob
Windows PC
https://packaging.python.org/tutorials/installing-packages/
Ubuntu
$ sudo apt-get install python-pip python-dev build-essential
$ sudo pip install --upgrade pip
$ sudo pip install pyserial
- Connect IMU Dev board to PC
- cd ...python-imu380/
- run "python demo.py"
Aceinna OpenIMU platform framework gives users unique opportunity to create their own navigation solutions. In IMU configuration init provides user with compensated 9 DOF sensors data (Acceleration, Rotation and Magnetic Field).
OpenIMU framework is based on FreeRtos operating system.
Framework contains next main features:
- Capability of using provided IMU hardware with built-in FW in "out-of-the-box" fashion (unit outputs scaled sensors data periodically with desired rate).
- Capability of using provided IMU FW examples in "out-of-the-box" fashion (unit outputs scaled sensors data periodically with desired rate).
- Placeholder for adding custom user filters to adjust unit sensors noise characteristics to cirtain environments.
- Please refer to the information in files UserFilter.c and UserFilters.h
- Placeholder for adding user/defined algorithm (EKF or like) to further improve unit performance and/or convert unit into AHRS solution.
- Please refer to the information in files UserAlgorithm.c and UserAlgorithm.h
- Placeholder for combining all user defined processing in one place.
- Please refer to the information in files dataProcessingAndPresentation.c
- Examples of implementation low pass filters as well as EKF (extended Kalman filter) algorithm.
- Please refer to the information in files lowpass_filter.c, lowpass_filter.h
- Examples of implementation low pass filters as well as EKF (extended Kalman filter) algorithm.
- Please refer to files in folders lib\algorithm and src\utilities
- User messaging engine - easily extendable framework for adding user-defined input control messages as well output data messages to existing engine
- Please refer to the information in files UserMessaging.c and UserMessaging.h and files in the folder userProtocol.
- User configuration engine - easily extendable framework for creating user-defined configuration structure and mechanizm to save/retrieve
this structure to/from nonvolatile memory.
- Please refer to the information in files UserConfiguration.c and UserConfiguration.h
- Capability of reusing existing sensors data structures as well as introducing custom structures
- Please refer to the information in files UserData.c and UserData.h
- Capability of reusing or disabling built-in low-pass filters
- Please refer to the information in files UserConfiguration.c and UserConfiguration.h
In OpenIMU framework data from sensors acquired and processed in cyclical fashion with the rate of 800 Hz. After applying low-pass filtering (if desired) and calibration sensors data provided to the user for further processing in cyclical fashion with the rates 200Hz (default) or 100 Hz. Data processing rates provided to the user algorithm as a reference. After application of user-defined algorithm and/or filters resulting data sent out in a packets with user-defined rate. Framework has built-in messages with predefined format and also user can easily create their own messages and use provided transport layer to sent them out. Please refer to the file dataProcessingAndPresentation.c for more information
Please refer to each project's style guidelines and guidelines for submitting patches and additions. In general, we follow the "fork-and-pull" Git workflow.
- Fork the repo on GitHub
- Clone the project to your own machine
- Commit changes to your own branch
- Push your work back up to your fork
- Submit a Pull request so that we can review your changes
ANS open source projects is licensed under the Apache 2.0 license.
ANS does not require you to assign the copyright of your contributions, you retain the copyright. ANS does require that you make your contributions available under the Apache license in order to be included in the main repo.
If appropriate, include the Apache 2.0 license summary at the top of each file along with the copyright info. If you are adding a new file that you wrote, include your name in the copyright notice in the license summary at the top of the file.
Copyright (C) 2018 Aceinna Navigation System Open Source Project
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.