2
$\begingroup$

I'm developing a stabilisation system for an 'off-the-shelf' quadcopter by using an Arduino Mega and an IMU. The IMU is reading the angle of the quad, calculating motor commands by using a PID controller and applying them to the motors. It works well when constrained in a test bed, however in reality, although the quad is straight and level, it's drifting to one side because of its recent motor commands correcting the pitch/yaw. Is there any way I can (without using a vision system) keep the quad in one place without drifting?

I've looked into obtaining velocity by integrating the acceleration value, however it's extremely noisy and doesn't give a meaningful reading.

$\endgroup$

3 Answers 3

3
$\begingroup$

Unfortunately, with just an IMU there's virtually no way for your quad to know that it's drifting so it can't stop it.

For outdoor flight you can add a GPS to detect the drift. For indoor flight, many people use vision systems to detect the drift. Depending on how close you are to walls, you could also look at ultrasonic range sensors to detect drift.

$\endgroup$
2
  • $\begingroup$ I would implement a GPS system, however the scope of the project doesn't extend to this. I'll look into other options. Thanks. $\endgroup$
    – Alex
    Mar 6, 2015 at 19:52
  • $\begingroup$ With no other sensors than the IMU it is not possible to measure the drift, hence it is not possible to compensate for it. There are no other options to look into. $\endgroup$
    – marcv81
    Mar 10, 2015 at 21:55
3
$\begingroup$

IMUs have accumulating error and can not be a reliable sensors by themselves if you want to measure velocity or even worse, position.

I believe your safest bet would be doing a sensor fusion between an IMU and a vision sensor using feature extraction and Kalman filter. Using only a camera can introduce unpredictable errors specially in featureless environments.

The best resources would be finding monocular SLAM(Simultaneous Localization And Mapping) papers.

$\endgroup$
1
$\begingroup$

If you are constrained to using an IMU without external sensors, then you would have to play with the platform to increase its stability. This could possibly be achieved by implementing a dihedral angle to all the prop-arms. So that natural disturbances would be naturally taken care of.

About using acceleration, it's a worthwile idea to try. You could try implementing a stability augmentation controller loop based on your acceleration data (without integrating it). This can be simply done-- similar to pitch/roll correction- by tilting the vehicle against the direction of the acceleration (e.g. if the vehicle is accelerating towards the right, tilt the vehicle a little bit to the left). This technique depends a lot on your acceleration data quality, and may not be practical at all.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.