ED Tracker 2.9 (Friday 13th)

Quick daft question if I may: is an Edtracker calibrated with and running V1 of the sketch able to just 'run' the V2 sketch, or will it have to be calibrated under the new regime?
 
You will have to recalibrate I'm afraid. I only spend a few minutes calibrating now - there are diminishing returns once it's +/- 1 ish
 
i can't compile the new sketches.
Code:
EDTrackerIICalibrate.ino: In function 'void setup()':
EDTrackerIICalibrate:139: error: 'mpu_set_dmp_state' was not declared in this scope
EDTrackerIICalibrate:141: error: 'mpu_read_6050_accel_bias' was not declared in this scope
EDTrackerIICalibrate.ino: In function 'void loop()':
EDTrackerIICalibrate:185: error: 'dmp_read_fifo' was not declared in this scope
EDTrackerIICalibrate:188: error: 'Quaternion' was not declared in this scope
EDTrackerIICalibrate:188: error: expected `;' before 'q'
EDTrackerIICalibrate:194: error: 'q' was not declared in this scope
EDTrackerIICalibrate:220: error: 'mpu_get_temperature' was not declared in this scope
EDTrackerIICalibrate.ino: In function 'void initialize_mpu()':
EDTrackerIICalibrate:326: error: 'mpu_init' was not declared in this scope
EDTrackerIICalibrate:328: error: 'INV_XYZ_GYRO' was not declared in this scope
EDTrackerIICalibrate:328: error: 'INV_XYZ_ACCEL' was not declared in this scope
EDTrackerIICalibrate:328: error: 'mpu_set_sensors' was not declared in this scope
EDTrackerIICalibrate:330: error: 'mpu_set_gyro_fsr' was not declared in this scope
EDTrackerIICalibrate:331: error: 'mpu_set_accel_fsr' was not declared in this scope
EDTrackerIICalibrate:334: error: 'mpu_configure_fifo' was not declared in this scope
EDTrackerIICalibrate:335: error: 'mpu_set_sample_rate' was not declared in this scope
EDTrackerIICalibrate:337: error: 'dmp_load_motion_driver_firmware' was not declared in this scope
EDTrackerIICalibrate:339: error: 'dmp_set_orientation' was not declared in this scope
EDTrackerIICalibrate:341: error: 'dmp_register_tap_cb' was not declared in this scope
EDTrackerIICalibrate:343: error: 'DMP_FEATURE_6X_LP_QUAT' was not declared in this scope
EDTrackerIICalibrate:343: error: 'DMP_FEATURE_SEND_RAW_ACCEL' was not declared in this scope
EDTrackerIICalibrate:344: error: 'DMP_FEATURE_SEND_RAW_GYRO' was not declared in this scope
EDTrackerIICalibrate:346: error: 'DMP_FEATURE_TAP' was not declared in this scope
EDTrackerIICalibrate:348: error: 'dmp_enable_feature' was not declared in this scope
EDTrackerIICalibrate:349: error: 'dmp_set_fifo_rate' was not declared in this scope
EDTrackerIICalibrate.ino: In function 'void update_bias()':
EDTrackerIICalibrate:386: error: 'mpu_set_gyro_bias_reg' was not declared in this scope
EDTrackerIICalibrate:387: error: 'mpu_set_accel_bias_6050_reg' was not declared in this scope
EDTrackerIICalibrate:399: error: 'dmp_read_fifo' was not declared in this scope
EDTrackerIICalibrate.ino: In function 'void loadBiases()':
EDTrackerIICalibrate:476: error: 'mpu_set_accel_bias_6050_reg' was not declared in this scope
EDTrackerIICalibrate:484: error: 'mpu_set_gyro_bias_reg' was not declared in this scope
EDTrackerIICalibrate.ino: In function 'void flipBias()':
EDTrackerIICalibrate:497: error: 'mpu_set_gyro_bias_reg' was not declared in this scope
EDTrackerIICalibrate:502: error: 'mpu_get_accel_sens' was not declared in this scope
EDTrackerIICalibrate:515: error: 'mpu_get_gyro_sens' was not declared in this scope
EDTrackerIICalibrate:526: error: 'dmp_set_gyro_bias' was not declared in this scope
my arduino folder:
Code:
+---core
|       HID.cpp
|       readme.txt
|       USBAPI.h
|       USBAPI.h.105
|       USBAPI.h.156
|       
+---libraries
|       readme.txt
|       
+---library
|   +---I2Cdev
|   |       I2Cdev.cpp
|   |       I2Cdev.h
|   |       keywords.txt
|   |       
|   +---InvensenseMotionDriver
|   |       arduino_shim.cpp
|   |       arduino_shim.h
|   |       dmpKey.h
|   |       dmpmap.h
|   |       helper_3dmath.h
|   |       inv_mpu.c
|   |       inv_mpu.h
|   |       inv_mpu_dmp_motion_driver.c
|   |       inv_mpu_dmp_motion_driver.h
|   |       License.txt
|   |       readme.txt
|   |       
|   \---MPU6050
|       |   helper_3dmath.h
|       |   MPU6050.cpp
|       |   MPU6050.h
|       |   MPU6050_6Axis_MotionApps20.h
|       |   MPU6050_9Axis_MotionApps41.h
|       |   
|       \---Examples
|           +---MPU6050_DMP6
|           |   |   MPU6050_DMP6.ino
|           |   |   
|           |   \---Processing
|           |           MPUTeapot.pde
|           |           
|           \---MPU6050_raw
|                   MPU6050_raw.ino
|                   
+---sketches
|   +---EDTrackerII
|   |       EDTrackerII.ino
|   |       
|   \---EDTrackerIICalibrate
|           EDTrackerIICalibrate.ino
|           
\---UI
    +---[...]
what am i missing?

edit: i found the problem, the arduino software expects libraries to be inside the libraries folder, not the library folder.
 
Last edited:
Oooh, nice one. My boards just arrived Rob (cheers mate, safe and sound!) so will put one together after the Italy match, and give this a go.

Does the Calibration Utility run without issues now, or do some of us still have to run it through Processing 2?
 
am a bit confused on the response mode if I toggle exponential and save the drift compensation does that inlcude the linear or is that totally seperate if it is which is better for play ED with?

after 40 mins left running wioht a 9150 mpu

Expo
DMP Pitch 0
DMP YAW -0.14
DMP ROLL 0

Yaw Drift 0
Drift comp +0.25
Temp +65.20 ish

Linear

DMP PItch -0.08 to -0.12
DMP YAW -3.68
DMP ROLL -0.03

YAW DRIFT 0
DRIFT COMP +0.25
TEMP +65.30

will have a go with it in ED later see if I get that flip problem
 
Last edited:
Won't the very slow return to a 'zero' position achieve the same thing?
I think not. At least I can't think of a way how to make your EDTracker behave the same every single time. Had some stuff to do away from the PC, and upon turning it back on when I came home I find the head in the EDTracker head now drifting to the right although the temperature is almost at 54 again. 30 minutes is like 40°. Now I don't know for sure, but the minimum turn velocity your're capable of turning your head at however should never be below a certain threshold, meaning it would be well above the gyroscope's drift. That means it should still be able to catch all your head movements.
 
am a bit confused on the response mode if I toggle exponential and save the drift compensation does that inlcude the linear or is that totally seperate if it is which is better for play ED with?

Hi,

The response mode gets applied after all the other maths and drift compensation so you only have to set the bias values and drift compensation once. So you can toggle it one way or other to see which you prefer.

The auto drift compensation (spring back) works a bit better in linear mode at the moment.
 
@ pocketmoon

Would a Kalman filter be a useful addition for a head tracker?

(...) it is an algorithm which uses a series of measurements observed over time, in this context an accelerometer and a gyroscope. These measurements will contain noise that will contribute to the error of the measurement. The Kalman filter will then try to estimate the state of the system, based on the current and previous states, that tend to be more precise that than the measurements alone.

See
http://blog.tkjelectronics.dk/2012/09/a-practical-approach-to-kalman-filter-and-how-to-implement-it/
and
http://forum.arduino.cc/index.php?PHPSESSID=n2gc790bt0592rfovfhvue71e4&topic=58048.0
 
Now I'm confused. If the DMP does a good job, where does the drift come from? I'm asking because the two other suggestions were to either take the temperature into the equation, or to make use of said DMP.
 
Last edited:
Now I'm confused. If the DMP does a good job, where does the drift come from? I'm asking because the two other suggestions were to either take the temperature into the equation, or to make use of said DMP.

Any algorithm that uses only accel and gyro will have yaw drift and/or accumulated yaw error. There's no frame of reference as there is for pitch/roll (gravity). You can work to reduce that but the algorithms I tried were just too laggy for head tracking. OK for flying a drone but not VR.
 
How is the lag caused? Is the Arduino Micro too slow to compare current data with previously buffered data? It's not like output would need to be purposefully delayed so we can adjust it according to "future" input, or am I on the wrong track here?

In AutoIt or Autohotkey I'd simply set up an array with a fixed number of entries, say 3. Every cycle of the loop, a new entry into the array is made and the oldest one removed. The content of the array can then be used to compare against the most current data. Or rather the other way around: do the comparison first, then add the value to the array. But it would still be based on the most current reading, just filtered according to buffered previous readings.
 
Does anyone have updated installation instructions for this latest version? I have been following these instructions:

http://www.brumster.com/downloads/EDTracker2-Software_Install_Flashing.pdf

These are Brumster's latest instructions but are out of date. This could be why I have been having so many issues with Version 2.

EDIT: I think one of the main issues is that there are links to outdated instructions all over the place, such as Pocketmoons Blog, Brumsters Website, Youtube, etc.

I'd recommend having only one updated set of installation instructions on the main website for each EDTracker version (V1 and V2):

http://edtracker.org.uk/

Otherwise it's near impossible for programming illiterate people such as myself to follow. The different set of instructions tell people to open different .ino, move different folders etc.
 
Last edited:
I followed the instructions in the PDF you linked to. It is still up to date from what I can tell, I just made a couple of mistakes or took some instructions too literal.




Anyway, here's the content of my Arduino folder that is up to date as of the time I'm writing this (-> Download), just unzip it to your "C:\Users\USERNAME\Documents" folder so it looks like this:
U8yvQWt.png

Make sure you have Java 32bit (currently Version 7 update 60) installed:
https://www.java.com/en/download/windows_offline.jsp


And of course you'll need the Arduino IDE 1.5.6-r2 BETA:
http://arduino.cc/en/Main/Software


You can then proceed as outlined in the PDF, which would be installing the device drivers.


When you fire up your EDTrackerUtil and the little window that pops up along with it keeps looking for the tracker on a COM port and doesn't disappear, you haven't yet successfully flashed the device. You might have to try a different USB port, and don't stop until you've tested all available USB ports.


If either the Arduino IDE or the EDTracker window still look f'd up, try disabling "desktop composition" for them. Right click on their shortcuts on your desktop or the executable directly, go to the "Compatibility" tab and check "desktop composition". Restart these applications.
 
Last edited:
Have a look at the first page of this thread, first post, second line. There you have updated information about how to use this latest version.
 
Back
Top Bottom