Helitronix Senior Heliman Location: Marlborough, MA - USA
| The IMU that I have outputs both absolute pitch, roll, and yaw angles, as well as the acceleration data in each axis. An accelerometer by itself can be used to determine a "change" i.e. acceleration in a given axis. If you put an accelerometer into a DC mode, it will sense it's angle relative to the gravity vector. But that in and of itself is not enough, because you need to provide motion compensation for the pitch and roll axis. Otherwise, as you move, you impart an acceleration to the accelerometer, which it will interpret as change in its angle of attack relative to the ground.
I developed the electronics and the software to hover the helicopter using this IMU. The issue is that, keeping the helicopter level is not enough to hover in one spot.
Take a look at PID controllers. These are classical controllers that can be used in our auto-pilot systems. PID controllers or their varients are used in our heading hold gyros to maintain heading. Building an auto-pilot based on this technology is the exact same problem. The only difference is that instead of resetting the zero point each time we move the rudder stick, we set the zero point to 0 degrees pitch and 0 degrees roll, and don't generally change it (for hovering). If you want to make the machine move in some direction, you let the transmitter sticks control that zero point. Instead of it being 0 degrees pitch, your stick input could be interpreted as "hold x degrees pitch", or hold "x velocity". There are a variety of ways to do it.
Your high level understanding is correct about how to put the controller together. At the high level, you are making PWM corrections in a given axis. And yes, provided you are allowing a pilot to control the machine to some degree, you need to process pilot inputs and blend them with the autopilot inputs, based on what it is you are trying to actually accomplish.
In my case, I use the TX inputs to set the desired angle of inclination in a given axis. If I'm not touching the sticks, that angle is 0, and the autopilot will make corrections to maintain a 0 degree angle of inclination in that axis.
And now, I want to improve the capabilities by giving it velocity sensing so that I'll know if the helicopter is actually moving. The classical approach is monitoring acceleration, and integrating it to get velocity. And then using GPS to help you make gross level corrections. That's certainly OK - but I'm thinking of making something that doesn't rely on GPS to help out.
Joel- |