Engineering analysis of RC helicopter control

I recently wrote my thesis on the topic of using feedback control to provide a vertical position autopilot for an RC helicopter. I used a Gaui EP100 on a test-rig to test the control techniques. The control theory has been designed so that it can be applied to a helicopter of any dimension/number of blades. It is presented in this 26 page document. I hope this can be of some use to someone!


The video below shows me performing some basic disturbance rejection tests.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • What kind of thesis is it? Master? PHD?

    It is not written in the document.



  • Here is another link for people having trouble with scribd.


    Randy: I understand that this project simplifies the problem greatly with the single degree of freedom. I have tried to design the controller with future improvements in mind. 


    I assumed that there was no delay between demanding a servo angle and the servo beginning to respond. However in section 3.5 I did consider the limitation of the servo's maximum angular velocity. I used this limitation as the basis for choosing the altitude controllers sample rate, but considered the time delay due to this lag as being negligible compared to the sample rate itself. 


  • I have problem reading the link. In both IE9 and Firefox 5. Can you post one pdf link?

  • Developer

    The viewer used for that paper doesn't display properly in the two browsers I have access to (Firefox and IE8).  Kinda of a drag. I like all research on heli's and I'm interested to read more of the details.


    What I can see is that you've actually implemented two things..a govenor and an altitude hold PID.  The simplification to make it only a single degree of freedom does make it a lot easier than real life where it seems that every command input affects at least one other (i.e. collective pitch changes causes yaw change, yaw change causes roll change, etc).


    Did you find that the lag in the servo response when you wanted to move the swash plate caused you any issues?



  • In my experience, the ESCs were quite "closed". It was hard to tell what was happening. I therefore removed its speed control function and designed my own to be run on the arduino. The internal motor parameters are used for this. In this case a cheaper ESC without a speed control function could be used.

    I measured the altitude by measuring the angle of the test-rig cantilever. The same measurement could be made with an ultrasonic/infared/other sensor. The altitude feedback controller is designed to respond in a stable manner to disturbances such as wind.
  • So how do you deal with winds?Also what is the accuracy for estimating altitude just by measuring some internal motor parameters?
This reply was deleted.