accelerometer - Double Integration of Acceleration into Position using 9-Axis IMU -
first post on forum, hope i'm doing right. know there have been several threads on double integration of acceleration in past, , know errors inherent in accelerometer isn't 200k+ military grade sensor. fortunately purposes need approximately correct (+/- 3 inches) no longer ten seconds.
i'm there already. using linear acceleration off bno055 imu. i'm sampling @ rate of 50hz (every 20ms). every time sample, use basic trapezoidal integration move acc velocity , velocity position. have "discrimination window" throw out at-rest error, , "movement end detect" code set velocity 0 after acceleration 0 given amount of counts.
it's working after fashion, need work little bit better. i'm seeing odd kickback move accelerometer , position moves pretty correctly until stop, position "kicks back" several inches - started. brought in friend smarter , recommended integrate smarter, using 4 or 5 data points instead of last 2 use in trapezoidal integration.
so question: how can use last 4 or 5 data points integrate more precisely basic trapezoidal integration? tried looking euler , rk4 it's been long time since i've done higher-level math , didn't know start. if explain rather simply, awesome. thanks. background, code running on microcomputer can't run data through matlab.
ps. recommended using high-pass filter, again, when tried start reading on digital high pass filters couldn't make sense of it. thought i'd start smarter integration , see does.
although op has undoubtedly solved problem in 2 years since posting, responding because encountered same issue , discovered solution after reading question.
for op's purpose trapezoidal integration or midpoint estimate of integration work fine. more complex or more accurate integrations not necessary curves representing kind of simple motion , not particular problem.
the problem described position tracked period of time, position jumps backwards when device stops moving. behavior occurs because of improper use of velocity damping.
when device moved , stopped there momentary acceleration , period of constant velocity motion (zero acceleration) , period of deceleration (decreasing velocity) until device once again @ rest.
the op reports using
"movement end detect" code set velocity 0 after acceleration 0 given amount of counts.
the ops problem during period of constant velocity motion, acceleration 0 velocity artificially reset 0 in attempt @ noise-reducing (dampening) algorithm. subsequent deceleration causes negative velocity period of time, returning calculated position way starting point.
if tracking small discrete movements, 1 solution particular problem detect , track cycle of acceleration -> coasting -> deceleration , apply dampening algorithms after deceleration part of cycle has completed.
Comments
Post a Comment