Alec green notebook - snowpuppy/augreality GitHub Wiki
Individual Meetings
- 4/24/2013 (2 hours): First meeting
- 5/9/2013 (2 hours): Second meeting
- 6/23/2013 (2 hours): Third meeting
- 7/7/2013 (2 hours): Fourth meeting
- 7/21/2013 (2 hours): Fifth meeting
- 8/4/2013 (1 hour): Sixth meeting
- 8/18/2013 (2 hours): Seventh meeting
- Wrote script to download and post-process Google Map tiles.
- Brainstormed data storage techniques for Google Map data.
Project Work Total: 20 hours
- 8/22/2013 (1 hour): Meeting to work on Project Proposal
- 8/23/2013 (2 hour): Meeting to discuss interface for CCU and Headsets.
- 8/24/2013 (4 hours): Meeting to test XBee devices, set up notebooks, and discuss CCU/Headset interface.
- Completed Preliminary Project Proposal.
- Defined software interface between CCU and Headsets.
- Weekly Work Total: 7 hours
- Project Work Total: 27 hours
Individual Meetings
- 8/31/2013 (2 hours): Researched Mercator projection for interpretation of GPS and Google Maps data.
- Completed Final Project Proposal.
- Researched Mercator projection for interpretation of GPS and Google Maps data.
- Weekly Work Total: 3 hours
- Project Work Total: 30 hours
Individual Meetings
- 9/2/2013 (2 hours): Work on Project Specific Success Criteria, describe requirements for preliminary headset schematic
- 9/4/2013 (1 hour): Edited Project Specific Success Criteria
- 9/7/2013 (4 hours): IMU code development + begin writing standard for sensor data formatting
- Determined filtering code necessary for IMU. Found C code that implements appropriate Kalman filter for 9dof.
- Created and filled in basic fields of data format calculations.
- Weekly Work Total: 7 hours
- Project Work Total: 37 hours
Individual Meetings
- 9/14/2013 (4 hours): Interface micro (STM32F4 Discovery) with IMU breakout board, prototype LCD+reflective glass mounting
- Get STM32F4 Discovery Board up and running with IMU board. Test 9dof Kalman filtering code.
- Prototype mounting configuration of LCD display and reflective glass on head assembly.
- Weekly Work Total: 4 hours
- Project Work Total: 41 hours
Individual Meetings
- 9/17/2013 (1 hours): Configure IDE and compiler tools on personal computer in order to download code to microcontroller.
- Download code to microcontroller (in progress).
- Weekly Work Total: 1 hour
- Project Work Total: 42 hours
Daily Log
- 9/22/2013 (4 hours): Finished configuring personal laptop to download code to microcontroller for IMU sensor processing. Further headset lcd+reflective panel prototyping.
- 9/25/2013 (1 hour): Learned hardware/schematic justifications from Stephen Carlson.
- 9/26/2013 (3 hours): Schematic + Hardware Narrative Report (TCSP 5).
- Successfully configured personal computer (IDE, etc) to load code onto microcontroller.
- Completed TCSP 4 (hardware narrative) homework + presentation.
- Weekly Work Total: 8 hours
- Project Work Total: 50 hours
Daily Log
- 10/2/2013 (2 hours): Downloaded and configured necessary USB-to-I2C drivers to record output data from IMU devices. Needed to read incoming data at 115200 baud in order to interpret IMU data correctly. Used console app to display digitized IMU data in real-time.
- 10/5/2013 (2 hours): Developed basic python app (with PySerial library) to read in and store IMU data to file in desired format (e.g. comma-separated value, CSV) for post-processing and analysis.
Accomplishments
- Can now read and store IMU data in real time for processing. Next steps are to develop appropriate orientation-calculation algorithms and appropriately display the calculations via a graphical application (e.g. a floating 3D vector that points to the calculated orientation).
- Weekly Work Total: 4 hours
- Project Work Total: 54 hours
Daily Log
- 10/8/2013 (2.5 hours): Prepared for design review (go over schematic with S. Carlson for schematic slides)
- 10/11/2013 (.5 hours): Presentation post-mortem to address concerns brought up during presentation.
- 10/12/2013 (4 hours): Investigate sensor fusion filters, including Kalman, complementary, and Mahony/Madgwick filters. Currently decided on Kalman over complementary due to convolution of complementary (relatively high-computation) versus low computation and comparable (or superior) accuracy of Kalman filter. Additionally, graphs from online presentations show that despite the lower-computational requirements of the Kalman filter, it actually performs comparable to or superior to the complementary filter. (Reference: http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-333-aircraft-stability-and-control-fall-2004/lecture-notes/lecture_15.pdf)
Determined the data that each of 4 sensors provides, and it is now clear how the short-term accuracy and long-term accuracy of various sensors will complement each other.
Searched for a GUI to display calculated orientation of sensor, and decided on VPython for the time being.
Accomplishments
- Determined to use Kalman filter over complementary filter. (Todo: finalize a filter model, Kalman vs Mahony/Madgwick.)
- Characterized the measurements provided by each sensor (Todo: develop math/algorithm that utilizes this understanding.)
- Found an appropriate program, VPython, to graphically display a vector representing the calculated orientation of the sensor. (Todo: rig up a script to display calculated orientation in real-time.)
- Weekly Work Total: 7
- Project Work Total: 61
Daily Log
- 10/16/2013 (3 hours): Finalized data format calculations.
- 10/19/2013 (1 hours): Developed some basic tests to quantitatively evaluate the sensor fusion filter that will estimate orientation angle in 3D space.
- Solidified sensor data formats and developed some basic tests for verifying the Kalman filter once implemented.
- Weekly Work Total: 4
- Project Work Total: 65
Daily Log
- 10/23/2013 (3 hours): Researched theoretical background of Kalman filter (probability, linear algebra) from http://www.cs.unc.edu/~tracker/ref/s2001/kalman/.
- 10/26/2013 (2 hours): Reviewed Kalman filter code from a previous Sigbots project that Stephen Carlson was involved in.
- Researched theoretical background of Kalman filter, and looked over code that can modified for use in our project.
- Weekly Work Total: 5
- Project Work Total: 70
Daily Log
- 10/30/2013 (4 hours): Searched and evaluated patent for presentation/report. There were a few patents with very high claim overlap with our project. However, fortunately these patents have all expired by 2013. The patent "Head Mounted Information Systems and Related Methods" had a surprisingly similar block diagram to our own:
- 11/2/2013 (7 hours): Investigated orientation calculations for simple sensor fusion scheme. First, the pitch and roll relative to the earth's surface is calculated from the accelerometer (assumed that only gravity and not linear acceleration contributes to sensor reading). Once these angles are established, yaw can be determined from the magnetometer readings by rotating the plane of measurement based on pitch and roll measurements. Finally, gyroscope readings could be used to give pitch, roll, and yaw higher temporal resolution by a similar rotation of reference plane based on the pre-calculated pitch, yaw, and roll values. However the gyroscope is not being used at this time.
- <http://www.freescale.com/files/sensors/doc/app_note/an4248.pdf></http://www.freescale.com/files/sensors/doc/app_note/an4248.pdf> was used for calculating pitch and roll.
- <http://www.freescale.com/files/sensors/doc/app_note/an3461.pdf></http://www.freescale.com/files/sensors/doc/app_note/an3461.pdf> was used for calculating yaw from pitch and roll.
- Implemented basic working prototype of IMU filter.
- Weekly Work Total: 11
- Project Work Total: 81
Daily Log
- 11/6/2013 (4 hours): Started implementation Kalman filter based on the code that Carlson provided from a previous project.
- 11/9/2013 (6 hours): Finished implementation of Kalman filter. Tried out Kalman filter, and realized that it had some annoying drift issues relative to the non-filtered version. Tweaking filter parameters did not appear to help. The following images show the spatial variance of the displayed images when the user stands in a relatively constant position (i.e. the filter is over-sensitive):
- Implemented and evaluated efficacy of Kalman filter.
- Weekly Work Total: 10
- Project Work Total: 91
Daily Log
- 11/13/2013 (4 hours): Designed low-pass filter with Matlab, currently using only a few non-zero coefficients. The first image shows the frequency response for the coefficients (b_0=.4, b_1=.3, b_2=.2, b_3=.1). The second image shows the frequency response for the coefficients (b_0=.2, b_1=.18, b_2=.16, b_3=.14, b_4=.12, b_5=.1, b_6=.1).
- 11/16/2013 (3 hours): Implemented low pass filter and evaluated it's output. Although the filter experiences less random drift than the Kalman filter (likely because it doesn't use gyroscope), the rendered output rotates extremely quick when the yaw approaches +/- 180 degrees. The image shows the subsequent yaw angle values as the yaw approaches +/- 180 degrees:
- Implemented low pass filter and identified issues with current implementation.
- Weekly Work Total: 7
- Project Work Total: 98
Daily Log
- 11/20/2013 (2 hours): Determined issue causing yaw discontinuity. When average values that oscillate between +/- 180 degrees. The averaging filter outputs a value near 0 degrees. Therefore, to solve this issue, all the values considered when performing the averaging filter either need to moved to their positive or negative 2-PI modulo equivalent. The averaged positive or negative value can then be returned in the range [-PI,+PI].
- 11/23/2013 (3 hours): Simplified process of modifying low-pass filter by automating the coefficient generation.
- Fixed low-pass filter issues. Simplified process of modifying low-pass filter by automating the coefficient generation.
- Weekly Work Total: 5
- Project Work Total: 103
Daily Log
- 11/27/2013 (2 hours): Looked into sensor calibration for accelerometer, gyroscope, and magnetometer. One can simply subtract the non-zero offset from the raw sensor values, or subtract the non-zero offset from the calculated Euler angles (pitch, yaw roll). Here we see our resting offsets for pitch and roll:
- 11/30/2013 (5 hours): Looked into sensor calibration for magnetometer (hard and soft iron effects). <http://www.sensorsmag.com/sensors/motion-velocity-displacement/compensating-tilt-hard-iron-and-soft-iron-effects-6475></http://www.sensorsmag.com/sensors/motion-velocity-displacement/compensating-tilt-hard-iron-and-soft-iron-effects-6475>
- Researched sensor calibration methods for accelerometer, gyroscope, and magnetometer.
- Weekly Work Total: 7
- Project Work Total: 110
Daily Log
- 12/3/2013 (4 hours): Compiled PSSC demo video.
- 12/7/2013 (2 hour): Discovered some issues that result in headset lock-up during our project demonstration in the MSEE atrium. Specific issues included the headset software locking up when a GPS satellite lock was established, the CCU locking up due to power distribution issues. However, the most prominent issue was the jostling of the SD card in the headset causing the headset display to lock up. We will need to physically secure this port:
- 12/8/2013 (4 hours): Compiled final report:
- 12/9/2013 (2 hours): Finished final report.
- Discovered some outstanding issues with headset operation.
- Completed end-of-semester paperwork.
- Weekly Work Total: 12
- Project Work Total: 122