by StuartL » Tue Jun 24, 2008 8:51 am
by StuartL
Tue Jun 24, 2008 8:51 am
JonHylands wrote:As an interesting aside, one of my friends is going to be implementing a Kalman filter for my IMU this summer, and if it works, we're going to try and shoehorn it into the ATmega168 - if that works out, then the Bioloid IMU will become really useful.
We've got a working exponential smoothing algorithm that goes over the accelerometer and gyro ADC. We use different smoothing parameters for accelerometers to the gyros as the accelerometers are much noisier. The output of the exponential smoothing algorithms goes into a PID filter to control the inverse kinematics for the leg and ankle positions. I'm fairly sure these algorithms are both small enough to squeeze into ATMega8/168.
In fact we plan to rewrite the AX-12 firmware over the summer...
Do you mean put a second kalman filter on top of the IMU sensors' output? It looked more like feedback was the issue and he needs the gain adjusted in his algorithm.
I'm assured by my partner in crime (hereby known as RandomMatt) that a Kalman filter is a linear filter and doesn't work (well) for the non-linear space of 3D kinematics. He's a maths whizz so I trust him on this statement. The exponential smoothing and PID control are all children of his work and are both very compact and exceedingly fast.
You are 100% correct that the gain is a problem. It's slightly more complicated with the two layers of filters (exponential smoothing + PID) with four 'gain's to adjust but that's the core of the problem.
It's looking less and less likely that he's going to be walking by Saturday, which depresses me a little, but you'll certainly be able to see the dynamic standing in action.
JonHylands wrote:As an interesting aside, one of my friends is going to be implementing a Kalman filter for my IMU this summer, and if it works, we're going to try and shoehorn it into the ATmega168 - if that works out, then the Bioloid IMU will become really useful.
We've got a working exponential smoothing algorithm that goes over the accelerometer and gyro ADC. We use different smoothing parameters for accelerometers to the gyros as the accelerometers are much noisier. The output of the exponential smoothing algorithms goes into a PID filter to control the inverse kinematics for the leg and ankle positions. I'm fairly sure these algorithms are both small enough to squeeze into ATMega8/168.
In fact we plan to rewrite the AX-12 firmware over the summer...
Do you mean put a second kalman filter on top of the IMU sensors' output? It looked more like feedback was the issue and he needs the gain adjusted in his algorithm.
I'm assured by my partner in crime (hereby known as RandomMatt) that a Kalman filter is a linear filter and doesn't work (well) for the non-linear space of 3D kinematics. He's a maths whizz so I trust him on this statement. The exponential smoothing and PID control are all children of his work and are both very compact and exceedingly fast.
You are 100% correct that the gain is a problem. It's slightly more complicated with the two layers of filters (exponential smoothing + PID) with four 'gain's to adjust but that's the core of the problem.
It's looking less and less likely that he's going to be walking by Saturday, which depresses me a little, but you'll certainly be able to see the dynamic standing in action.