[FoRK] kalman filters
sdw at lig.net
Tue May 12 16:39:26 PDT 2009
I want to solve a similar problem soon.
Damien Morton wrote:
> Struggling with a problem.
> I have an 3-axis accelerometer device held in a person's hand.
> I am trying to write code which will roughly measure the trajectory of
> the device as it is swung through a fishing rod casting motion.
> Apparently the distance of a cast is >80% dependant on the peak
> angular rate. The algorithm should then estimate that peak rate, while
> having a limited ability to be fooled as to the casting
> First thought on estimation is to look at the "outward" acceleration
> of the device as it is swung through an arc. Trouble is, this can be
> fooled by holding the device upside down and letting gravity to the
> Second thought is to integrate the forward acceleration to get an
> approximate velocity along the casting arc, and then based on an
> estimated radius of that arc, compute the centrifugal force and
> compare that with the "outward" measured acceleration. My worry here
> is that the direction of gravity (in the frame of the device) is
> changing over the length of the arc.
> Third thought is to integrate the "forward" acceleration to give a
> forward velocity estimate, and integrate again to give a distance
> travelled estimate. Use the distance estimate to place us on the arc
> and compute the gravity vector, and use the velocity estimate to
> compute an estimate of centrifugal force (based on an estimate of the
> arc's radius), which is correlated with the "outward" force. This
> approach seems to me to have too much estimating going on to produce
> reasonable results.
The acceleration is given in 3D. You get a series of vectors that allow
you to fit an arc. Too bad the Wiimote, and I think the iPhone don't
seem to have gyros in addition to the MEMS accelerometers. The iPhone
should also have a compass.
Just looking at the Wiimote as an example:
> ADXL330 in a Wii remote
> Coordinate system used by Wii Remote
> The Wii Remote includes a three-axis linear accelerometer located on
> the top suface of the circuit board, slightly left of the large A
> button. The integrated circuit is the ADXL330 (data sheet),
> manufactured by Analog Devices. This device is physically rated to
> measure accelerations over a range of at least +/- 3g with 10%
> Since the accelerometer actually measures the force exerted by a set
> of small proof masses inside of it with respect to its enclosure, the
> accelerometer measures linear acceleration in a free fall frame of
> reference. If the Wii Remote is in free fall, it will report zero
> acceleration. At rest, it will report an upward acceleration (+Z, when
> horizontal) equal to the acceleration due to gravity, g (approximately
> 9.8 m/s²) but in the opposite direction. This fact can be used to
> derive tilt from the acceleration outputs when the Wii Remote is
> reasonably still.
> XX, YY, and ZZ are unsigned bytes representing the acceleration in
> each of the three axis, where zero acceleration is approximately 0x80.
> The coordinate system is shown in the diagram above (note that this is
> different from the coordinate system used by GlovePIE). Additionally,
> the BB BB Buttons bytes also include the LSBs of the acceleration
> values in the unused bits
So, a series of acceleration points at certain time steps allows
integration to a set of fixed points in space.
This talks about it but doesn't solve it completely:
According to this a Kalman filter won't help when you only have a single
Good demo of a Kalman filter for gyro+accel:
Partially helpful. Note that you cannot fly properly without either a
gyro or ground vision.
> Fourth thought is to create a simulated robot arm, and use inverse
> kinematics to torque the joints to match the observed acceleration. I
> can simplify the problem to 2D, which will help. Getting really
> complicated here.
> I'm wondering if there might be a simpler way. In the end, all I want
> to do is take the accelerometer data and produce a value for casting
> velocity (I am assuming that the launch angle is perfect).
> Any suggestions welcome!
> FoRK mailing list
More information about the FoRK