I'm planning to build a head-mounted camera stabilizer for pro GoPro camera. The idea is that when I tilt my head the camera would stay at a user-set angle.

I'm using an accelerometer and a gyro to measure camera angle $\theta$ and angular velocity $\dot{\theta}$, and some motor to control the camera angle. I derived the following differential equation for the system (which is basically an inverted pendulum) where $l$ is length of the rod, $\theta$ is the angle of the camera due to gravity, $m$ is the mass, $g$ is the gravitational acceleration, $b$ is damping coefficient (due to friction) and $\tau$ is torque. $\tau_{motor}$ will be the input of the system.

$\tau_{total} = \tau_{motor} - \tau_{gravity} - \tau_{friction}$

$I\ddot{\theta} = \tau_{motor} - mgl\sin\theta - b\dot{\theta}$

$ml^2\ddot{\theta} = \tau_{motor} - mgl\sin\theta - b\dot{\theta}$

$\ddot{\theta} = \frac{1}{ml^2}\tau_{motor} - \frac{g}{l}\sin\theta - \frac{b}{ml^2}\dot{\theta}$

From here I'll continue designing the control algorithm using state-space methods such as state-feedback control (I choose camera angle $\theta$ and angular velocity $\dot{\theta}$ as states and $\tau_{motor}$ as input).

enter image description here

Now here's the question:

I want to test how my control system behaves when a person tilts his head (I'll be using Matlab and Simulink). How should I incorporate the tilting of the head (or rotating of the body of the motor since the motor will be attached to head) into my control design? I guess it can be thought as a disturbance to system (or another input)? How should it be incorporated to the system model (meaning the differential equation above)? Should there be maybe more differential equations? I thought it would be nice to give the system the the angle of the body of the motor (meaning the angle of the head) as function of time and observe how the control system works. In other words I would like to see how the controller works if I tilt my head for example back and forth.

On the other hand, is this a good approach or should I just use another torque $\tau_{disturbance}$ to test the controller? I'm pretty sure that it isn't the same as tilting the motor body, but would perhaps lead to good enough model for the controller?


1 Answer 1


There's a couple questions you can ask:

  1. Can you control the signal? If not, then it's either a noise or disturbance input.
  2. Is it affecting your system (plant), or is it affecting your measurements? If it's affecting the system, it's a disturbance input; if it's affecting the measurements, it's noise. Note that noise can be colored, biased, periodic, etc. That is, pretty much any signal can be noise or a disturbance.
  3. Does the disturbance have enough power that is effectively a position regulator?

Regarding point 3, if the power output of the human neck is comparable with the power output of your stabilization system, then its position will vary with reaction forces applied by your stabilization system. If the power output of the neck is significantly higher, then it becomes effectively rigid and is better modeled as a position regulator.

Based on these questions, I would guess that the power of your stabilizer is much less than the power of the neck, so I would treat the neck as a positioner. You can't control it, but it affects the plant, so it's a disturbance input.

I would include it with the definition of angular acceleration $\ddot{\theta}$, such that: $$ \ddot{\theta} = \frac{1}{ml^2}\tau_{motor} - \frac{g}{l}\sin\theta - \frac{b}{ml^2}\dot{\theta} + \ddot{\theta}_{\mbox{head}} \\ $$

  • 1
    $\begingroup$ Thank you for the clear and educating answer. I will add the theta_dotdot_head to my model as you suggested. I liked also that you defined the difference between noise and disturbance and gave some control engineering tips. Thanks again! $\endgroup$
    – coltrane
    Mar 10, 2016 at 12:17

Your Answer

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

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