Velocity to LED Brightness/Flash Interval

Now I know that the topic I am about to bring up is covered often and I understand why. Tell me if what I am trying to do is unrealistic.

I want to create a harness that has LEDs, specifically NeoPixels, that change brightness and/or rate of blinking based on velocity of the user. The harness will be used for a prolonged periods time (1hr) but for short bouts of high velocities (max 20mph / 9m/s).

I would like to use a 9DOF module or something a bit better such as this BNO055. Maybe even a 6DOF (accel/gyro) would work for this application once simplified. and a GPS unit.

I have searched for solutions to this and all say to use sensor fusion between the three sensors and the gps to get an accurate orientation and to account for drift, BUT no where have I found a way of doing this.

I understand that as the degree of angle error increases the velocity error will continue to increase as time goes on. See Estimating Velocity And Position Using Accelerometers.

Solving the above problem would be ideal, but if deemed too complicated I can make the device less "smart" and change the functionality to react to levels of acceleration. However, losing the desired effect.

Thank you in advance for any input.

patrickgmaris:
...based on velocity

Of?

Of the user. In this case a dog will be wearing the harness. The faster the dog moves - the more visible it becomes when its dark out.

Accuracy?

Just enough accuracy so it doesn't start acting haywire after a few bouts of increased speed. I just want the relationship between velocity and LED brightness to be apparent.

In which case you are on the right track.

Others have built similar devices for nighttime bicycling; jacket / vest is what I recall. I believe a similar device for skateboarding was detailed on the Adafruit site; though that may have been based on a wheel encoder. Those seem like good starting points for Googling.

I've noticed that the velocity variable of a gps sentence often goes haywire when the unit is still. I think this is due to uncertainty in the measurement of position. So consider using an average velocity over several readings. If the reading changes randomly, disregard it.

Thanks for the input. The Adafruit skateboarding tutorial does not use any environmental inputs. Their Steam Punk Goggles do use X and Y axis of an accelerometer to simulate a pendulum of LEDs. and their LED Backpack Brake Light code has some good stuff i'll have to spend time going over.

ChrisTenone:
I've noticed that the velocity variable of a gps sentence often goes haywire when the unit is still. I think this is due to uncertainty in the measurement of position. So consider using an average velocity over several readings. If the reading changes randomly, disregard it.

I'll keep that in mind if I do testing with the GPS velocity readings. However, readings aren't accurate for small movements <3m (as you stated), even though velocity can be accurate up to 0.1m/s.

patrickgmaris:
...
I'll keep that in mind if I do testing with the GPS velocity readings. However, readings aren't accurate for small movements <3m (as you stated), even though velocity can be accurate up to 0.1m/s.

0.1m/s sounds about right. My home-made gps device can readout in cm/s. It usually sits in the mid-to-high 20s while sitting still. And the direction is random. I'm reading the thing once per second. I have a gps module that can read at 10Hz. I should check if the speed stabilizes when read more often.

gpsspeed.jpg

ChrisTenone:
0.1m/s sounds about right. My home-made gps device can readout in cm/s. It usually sits in the mid-to-high 20s while sitting still. And the direction is random. I'm reading the thing once per second. I have a gps module that can read at 10Hz. I should check if the speed stabilizes when read more often.

While that may work, i'll have to see how accurate that is for small movements.