Friday, March 6, 2015

Gantt Chart Updated in Smartsheets

This is the link to the smartsheet:

https://app.smartsheet.com/b/home

Position Tracking with Inertial Measurement Units Midterm Report

Position Tracking with Inertial Measurement Units
By: Theodore Nowak and Alex Haufler

Abstract

There are many factors that differentiate commercially available IMUs such as absolute
accuracy, drift, bias stability, inherent noise, and vibration rejection. The IMUs currently
deployed in sensitive environments can cost tens of thousands of dollars, while the IMUs in
phones and tablets cost fractions of a dollar. In order to compensate for the different factors
affecting the accuracy of the measurements, various algorithms and measurement schemes have
been developed. Also, once the measurements have been made and adverse factors
compensated for, there are various algorithms for filtering the data so that it better represents the
actual acceleration, angular rate, and magnetic orientation.
            That being said, the end goal of our project is to create a system that will track multiple IMUs simultaneously, test multiple correctional algorithms on this data, and then compare the results with the VICON system at the Veteran’s Affairs Hospital in their gait analysis lab. Last semester we worked to test the differences between IMUs (cost, DOF, etc.) and also between many of the leading filtering techniques used in the field. This semester we will begin to integrate this knowledge into further investigation and the beginnings of a working product.

Distribution of Labor

Ted is responsible for creating an interface from which to record from the IMUs using ROS and a Beaglebone Black. This will involve installing Linux, ROS, and any necessary packages on the Beaglebone Black, and also creating executable code in C++ to record from the IMU. This code must be able to record from multiple IMUs at once at equivalent, programmable frequencies. He has been assigned this task because he has the most experience both with ROS and C++. In addition to any work involving ROS, Ted will also be responsible for understanding Kalman-Bucy filtering in full. Last semester our previous partner Emeline investigated this topic, but was unable to flush out some aspects of the filter. Ted will aim to start where she left off and work with Professor Loparo to fully understand the filter.
Alex Haufler is a senior electrical engineering major with ample experience in signal processing and analysis, and in embedded systems design. His main focus is on understanding the theory and implementation associated with each of the separate filtering techniques relevant to denoising, determining orientation, rejecting bias, and estimating position. Then, with a complete understanding of the separate pieces, Alex will develop custom algorithms involving a combination of the various filtering methods.
            Both Alex and Ted have made sufficient progress thus far. Ted has already installed Linux and ROS on the Beaglebone Black and will soon begin drafting code to record from the MPU6050’s. Similarly, Alex has already read through five chapters in a wavelets textbook and skimmed chapters in a few others. As of now, the project is progressing on time.

Technical Challenges

Creating the interface from which to record from the IMUs is riddled with challenges. Firstly, there are limitations within the version of Linux on the Beaglebone Black. Because of this, there are some differences that might necessitate all communication with the Beaglebone Black to be done through SSH. Similarly, all code written will need to be transferred through Github. Other hurdles include properly altering existing code to work on ROS, and finding how to instantiate three IMUs to function simultaneously at similar frequencies. These problems will be overcome through careful setup of file structures and through adequate research. Ideally other software engineers will have had similar experience from which we may learn.
Position estimation from inertial measurements has a number of obstacles to achieving a high degree of accuracy. Since inertial measurements are accelerations or angular velocities, double integration and integration respectively is necessary for obtaining an estimate of position and orientation. First, since the measurements are in discrete time, an approximation has to be used for the integrations. A higher sampling rate could aid in the approximation. However, if there is any deviation from the true values of acceleration and angular velocity, the effect of integrating twice will mean something of a quadratic growth in error with time. Deviations from the true values include bias in the measurements from the MEMS devices, drift of this bias with temperature and time, noise that includes vibrations from external sources, and incorrect orientation estimation. The incorrect orientation estimation has to do with gravity, which is registered as an acceleration, and if the direction is not known exactly there will be an incorrect acceleration measurement along the different axes. As far as technical challenges associated with the algorithms are concerned, wavelets and Hilbert-Huang transforms to be used in denoising the data are fairly complicated and will take more time to fully understand and implement.
There are many pertinent numerical methods and filtering techniques to investigate and amalgamate such as least-squares spline interpolation, wavelets, Hilbert-Huang transforms, zero-velocity update aided filtering, Madgwick’s filter, Mahoney’s filter, and Kalman-Bucy filtering. There are more, but these are the most interesting due to their current development and relevance to the project. In order to learn more about the current state of the art associated with wavelets, Alex will continue to work through the books he has checked out of the library, in addition to consulting Professor Loparo and Professor Buchner, and reading papers, articles, etc. Once a thorough understanding of the subject has been obtained, he will implement different methods using wavelets in Matlab that have shown success, perhaps in other applications such as ECG analysis, and test them against the benchmark data from the VICON system. Wavelets are to be used in denoising, but Alex will take the same approach with different algorithms and ideas applied to bias/drift rejection, orientation estimation, and integration approximations.

Specifications

Due to the nature of this project, it is much more reasonable to think in terms of goals rather than in terms of specifications. They are as follows: firstly, a working platform using ROS and the Beaglebone Black on which one can record from three MPU6050’s simultaneously and at preordained frequencies; secondly, to study various different filters for denoising, determining orientation, rejecting bias, and estimating position; thirdly, to combine these techniques into one optimized methodology for filtering the MPU6050 data; and, lastly, to compare these results with the “golden standard,” the VICON system. These results will be verified and confirmed throughout the course of the project. The Beaglebone Black test-base, will be physical in nature, and therefore validated through visualization and through its effectiveness in yielding results. Then, throughout the course of testing each filtering algorithm, we will generate many plots with the data from the Beaglebone Black either validating or disproving the efficacy of the filter. These plots can be included in the final write up to prove the satisfaction of aforementioned goals. Lastly, the VICON system will yield data from which we will compare the mean squared error of our filters and VICON against each other. Through these comparisons we will determine which of our filters was most effective. While the nature of this project makes it difficult to quantify results, our end results should blend a healthy mix of visual confirmation and algorithmic comparison to satisfy the prudent analyst.

Gantt Chart