MATLAB Answers


Quadrotor PID simulation

Asked by Robert on 13 Jun 2011


My name is Robert and I am an undergraduate student at UIUC. I am currently working on a project and was wondering whether or not Matlab would be helpful in my endeavor. Before I start fiddling around and start putting in a lot of effort into this Matlab/Simulink project I was wondering if it was worthwhile. The project idea is as follows:

I am designing a quadrotor (at the moment only a one axis balancing arm that pivots on an axle with a motor/propeller on each end of the arm). I have an encoder attached to the axle that records the actual position of the arm. I was hoping to implement a PID controller that would adjust the propeller speeds accordingly so it goes to the exact position I specify in the shortest amount of time. My question are, can I provide Matlab with real time streaming data coming from the quadrotor and the encoder and design a pretty good PID control using the control system PID toolkit and autotuner PID toolkit? Is this feasible? I can stream data coming from the quadrotor and encoder into an excel file.. What would be the best way to go about this, I am very new to MatLab and only know the basics, although I am a very avid programmer.

Thank you,


  1 Comment

Hey robert, i am also doing the same project. Can you tell me did u make a sensor model in simulink?
If yes then how?
I am really confused
Please help!!!

Log in to comment.


No products are associated with this question.

4 Answers

Answer by Fangjun Jiang on 13 Jun 2011
 Accepted Answer

Matlab/Simulink is the right tool for your task, however, you need to understand that Matlab/Simulink mostly runs simulation on your computer, it is not fit for real-time control, especially for your task which sounds timing critical to me. There is a toolbox called xPC Target which allow you to boot your computer with RTOS and use it for real-time control. You can also use third party rapid prototype system for the real-time task. The typical procedure is that your build your controller plus your motor plant model in Matlab/Simulink environment and try-and-error your design till you get good performance. Then you can automatically generate C code, compile it and download to your real-time system (xPC target or rapid prototype) which has hardware I/O that can interface with your motor hardware.


Log in to comment.

Answer by Robert on 13 Jun 2011

Thank you Fangjun, I like the second option you listed, rapid prototype in the simulink/matlab environment and then generate C code and try it out on my real desk model. I was playing around with simulink and I came up with a design process. Can you check if I am moving in the right direction.

I will first import my quadrotor Autocad Inventor model through sim mechanics and then run PID simulations on the model. After perfecting my model software, I will convert it to C code (which I am not to sure how its done..) and test it out on my quadrotor. What do you think?


Hi Robert... this sounds perfect. MathWorks calls this model based design.

We have many webinars you can watch to learn how this sort of thing is usually done. For example you can start here:

Great! I am excited to get started on this project and I'm willing to bet I will learn a lot.
Thank you

Yes, that sounds like a good approach. You'll need the Simulink Coder toolbox to generate C code. If your controller is primarily a PID controller, you might consider coding it yourself. In either case, you need to take care of the low level driver for your AD/DA, encoder sensor etc.

Log in to comment.

Answer by Suleman Shafqat on 16 Nov 2011

Hi Robert are u done with quadrotor modeling now or not? does that C code generation approach helped u i am also doing quad rotor project.


I have done all of the modeling and controls on the quadrotor in Simulink successfuly and within a couple of weeks I will have tested it out using the xPC target as a real-time controller (I am currently working on the xPC target setup and drivers.) I am planning on releasing a .pdf file with step by step instructions showing what I did and demonstrating my results.

on 29 May 2012

Way to go, Robert! I guarantee you will have many readers of the PDF file if you post it back here - so many Simulink questions here are 'how do I get started' on a project like this.

How did it turn out? Is the pdf-file available? Would be very interesting.

Log in to comment.

Hi guys, I was working on modelling and controlling a quad rotor flying robot. And finally I am done with the whole process. However, lately I thought of simulating the robot in a 3D trajectory plane or may be an environment to track it's path and see the differences UN-controlled and after controlling. I don't wanna write lots of complex mathematical equation to describe what I wanna do in order to make it easy for anyone to help me.

My question is simple as follows: I have 6 equations that give 6 different outputs (X Y Z theta Phi Epsi). All what I need from anyone is tell me how to connect 6 different equation with 1 block diagram that translates these outputs in a 3D space.



  1 Comment

on 29 May 2012

This seems like a new question, so if you get no answers in this thread you may want to post it as a new question.

Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!