I would like to obtain equations of motion for a spherical pendulum suspended from a (6 degrees of freedom) moving body (generalization of a simple pendulum on a cart) using Newton-Euler approach. This is equivalent to a pendulum suspended on a helicopter or a drone. Example is an article "Flight dynamics of an articulated helicopter with and external slung load" by Dario Fusato and Giorgio Guglieri (link).

The key for obtaining the equations of motion for a spherical pendulum (that is, $\ddot{\phi_b}$ and $\ddot{\theta_b}$) is the torque equilibrium around pivot point. To cite the linked article: "The equations of motion of the load are written by enforcing moment equilibrium about the suspension point (...)" This is exactly the part I don't get.

Here is the illustration of the problem.enter image description here

We have a rigid moving body of mass $m_b$ with coordinate frame {b} attached to the center of mass. Moving body is free to translate and rotate relative to the inertial frame {i} (gravity is positive in $+i_z$ direction). There is a pivot point on the moving body where the spherical pendulum is attached. Pendulum is modeled as a point mass of mass $m_{bob}$, string is assumed to be mass-less and rigid. Pivot point is fixed in the body at some (constant) distance $r_{bp}$ relative to {b}. Reference frame {p} is defined at the pivot. Position and orientation of {p} remains unchanged relative to {b} at all times. Pendulum motion is derived in the {p} frame.

Position of {b} in {i} is $p_b$. Position of the pendulum bob (red) in {i} is: $p_{bob} = p_b + r_{bp} + r_{pl} = p_b + r_{bl}$. Position of the pendulum bob in {p} is: $r_{pl} = R_y(\theta_b)R_x(\phi_b)*[0; 0; L]^T$, where $R_y$ and $R_x$ are the rotation matrices for rotation around $p_x$ and $p_y$ and $\phi_b$ and $\theta_b$ are the corresponding angles relative to {p}; $L$ is the string length. Please note {b} (that is {p}) can be rotated relative to {i} through roll($\phi$)/pitch($\theta$)/yaw($\psi$) angles and rotation matrix $R_{b-to-i} = R_z(\psi)R_y(\theta)R_x(\phi)$, therefore $\phi_b$ and $\theta_b$ do not represent orientation of the pendulum bob relative to {i}.

Newton's second law expressed in {i}: $$m_b*a_b = F_b = F_{actuation} + F_{b_{gravity}} + F_{tension}$$ $$m_{bob}*a_{bob} = F_{bob} = F_{bob_{gravity}} - F_{tension}$$

where: $$v_b = \dot{p_b}; a_b = \ddot{p_b}$$ $$v_{bob} = \dot{p}_{bob}; a_{bob} = \ddot{p}_{bob}.$$

The main question is how to set up torque equilibrium around pivot to obtain $\ddot{\phi_b}$ and $\ddot{\theta_b}$?

My reasoning is: The sum of all torques acting on the pivot point, torques originated from moving body $T_{body}$ and torques from the bob $T_{bob}$ are equal to a resulting torque $T_{res}$. We assume the torque balance, therefore the sum off all torques is equal to zero: $$\Sigma T = T_{res} = T_{body} + T_{bob} = 0.$$ Torques generated by the moving body and bob at the pivot are "distance to the pivot" x "resulting force", that is: $$T_{body} = r_{bp} \times F_b$$ $$T_{bob} = r_{pl} \times F_{bob}.$$ Then: $$\Sigma T = T_{res} = T_{body} + T_{bob} = r_{bp} \times F_b + r_{pl} \times F_{bob} = 0.$$

1)Is this correct? 2)Can the forces $F_b$ and $F_{bob}$ be expressed in the {i} frame when calculating the torques around pivot? 3)What about positive/negative torque convention?

I hope I was clear. Thanks!

  • $\begingroup$ Is the motion (and accelerations) of the drone known? The full 6DOF description isn't needed as rotation about the attachment point does not affect the motion of the bob. $\endgroup$ Mar 23, 2021 at 0:22
  • $\begingroup$ @JohnAlexiou Yes! Motion of the drone is known. Regarding the part on rotation, If the attachment point is not located at the center of the mass of the moving body, shouldn't the nonzero distance from the CoM to the attachment point (r_bp) result in torque that will influence the bob? Thanks. $\endgroup$
    – sample
    Mar 23, 2021 at 12:42
  • $\begingroup$ Ok thanks. See below. Instead of solving for $a_b$ and $\alpha_b$ then you solve for $F_b$ and $\tau_b$. $\endgroup$ Mar 23, 2021 at 12:47

1 Answer 1


The dynamics of hanging bob from a free body

Problem Definition

There are two objects considered. The parent body with position $\boldsymbol{r}_b$ at it's center of mass, and the bob suspended with a 2DOF U-join at location $\boldsymbol{r}_p$ with the center of mass a distance $\ell$ away. The location of bob is $\boldsymbol{r}_{\rm bob}$. diagram



The parent body has orientation $\mathbf{R}_b$ relative to the intertial frame and thus the location of p is $$\boldsymbol{r}_p = \boldsymbol{r}_b + \underbrace{ \mathbf{R}_b \boldsymbol{r}_{p}^{b} }_{\boldsymbol{r}_{bp}} \tag{1}$$ where $\boldsymbol{r}_p^b$ is the location of the attachment point p in the body coordinates of b. The location of the bob is $$\boldsymbol{r}_{\rm bob} = \boldsymbol{r}_p + \mathbf{R}_y(\theta)\, \mathbf{R}_x(\varphi)\, \ell \boldsymbol{\hat{i}}_z \tag{2}$$ Also the orientation of the bob is $$ \mathbf{R}_{\rm bob} = \mathbf{R}_b\, \mathbf{R}_y\, \mathbf{R}_x \tag{3} $$


The time derivative of (1) is $$ \boldsymbol{v}_p = \boldsymbol{v}_b + \boldsymbol{\omega}_b \times (\boldsymbol{r}_p - \boldsymbol{r}_b) \tag{4}$$

Next we differentiate the orientation (3) $$ \boldsymbol{\omega}_{\rm bob} = \boldsymbol{\omega}_b + \mathbf{R}_{b} \left( \boldsymbol{\hat{i}}_y \dot{\theta} + \mathbf{R}_y \boldsymbol{\hat{i}_x} \dot{\varphi} \right) \tag{5} $$

and use the rigid body transformations for the derivative of (2)

$$\boldsymbol{v}_{\rm bob} = \boldsymbol{v}_p +\boldsymbol{\omega}_{\rm bob} \times ( \boldsymbol{r}_{\rm bob} - \boldsymbol{r}_{p}) \tag{6} $$


The time derivative of (4) is $$ \boldsymbol{a}_p = \boldsymbol{a}_b + \boldsymbol{\alpha}_b \times ( \boldsymbol{r}_p - \boldsymbol{r}_b) + \boldsymbol{\omega}_b \times ( \boldsymbol{v}_p - \boldsymbol{v}_b) \tag{7} $$

This is the tricky part, differentiating (5).

$$ \begin{aligned}\boldsymbol{\alpha}_{{\rm bob}} & =\boldsymbol{\alpha}_{b}+\mathbf{R}_{b}\left(\boldsymbol{\hat{i}_{y}}\ddot{\theta}+\mathbf{R}_{y}\boldsymbol{\hat{i}_{x}}\ddot{\varphi}\right)+\boldsymbol{\omega}_{b}\times\boldsymbol{\omega}_{{\rm bob}} +\\ & +\left(\boldsymbol{\omega}_{{\rm bob}}-\boldsymbol{\omega}_{b}\right)\times\left(\mathbf{R}_{b}\mathbf{R}_{y}\boldsymbol{\hat{i}_{x}}\dot{\varphi}\right) \end{aligned} \tag{8} $$ And again a rigid body transform to differentiate (6) $$\boldsymbol{a}_{{\rm bob}}=\boldsymbol{a}_{p}+\boldsymbol{\alpha}_{{\rm bob}}\times(\boldsymbol{r}_{{\rm bob}}-\boldsymbol{r}_{p})+\boldsymbol{\omega}_{{\rm bob}}\times(\boldsymbol{v}_{{\rm bob}}-\boldsymbol{v}_{p}) \tag{9}$$

Gravity & Inertia

Assume that all the bodies are under the influence of gravity $\boldsymbol{g} = \boldsymbol{\hat{i}_z} g$ and that the parent body has driving forces $\boldsymbol{F}_b$ and torques $\boldsymbol{\tau}_b$ defined at the center of mass of b. The weight on each body is $$ \boldsymbol{W}_b = m_b \boldsymbol{g} \tag{10}$$ and $$\boldsymbol{W}_{\rm bob} = m_{\rm bob} \boldsymbol{g} \tag{11} $$

We also need the mass moment of inertia tensor of the b body described along the inertial basis vectors. If the MMOI in the body coordinates is $\mathbf{I}_b^b$ then

$$ \mathbf{I}_b = \mathbf{R}_b\, \mathbf{I}_b^b\, \mathbf{R}_b^\top $$

Equations of Motion

The connection can transfer forces between the two bodies, but not torques. So the net forces on the first body contain the equal and opposite forces acting on the second body. The connection force at the pivot is $\boldsymbol{F}_p$. $$ \begin{aligned} \boldsymbol{F}_b + \boldsymbol{W}_b - \boldsymbol{F}_p & = m_b \boldsymbol{a}_b \\ \boldsymbol{F}_p + \boldsymbol{W}_{\rm bob} & = m_{\rm bob} \boldsymbol{a}_{\rm bob} \end{aligned} \tag{12} $$

We can define the torque at the pivot as $\boldsymbol{\tau}_p = \boldsymbol{0}$ so the rotational equations of motion do not need to contain this term. They do need to contain the equipollent torques of the forces resolved on each center of mass. This is the second tricky part here $$ \begin{aligned} \boldsymbol{\tau}_b - (\boldsymbol{r}_p - \boldsymbol{r}_b) \times \boldsymbol{F}_p & = \mathbf{I}_b \boldsymbol{\alpha}_b + \boldsymbol{\omega}_b \times \mathbf{I}_b \boldsymbol{\omega}_b \\ (\boldsymbol{r}_p - \boldsymbol{r}_{\rm bob}) \times \boldsymbol{F}_p &= \boldsymbol{0} \end{aligned} \tag{13}$$

The second equation is that of a point mass at bob without any rotational inertia. As such, the connection force $\boldsymbol{F}_p$ must be parallel to the string as the cross product with the span of the string is zero.


Let us count the number of equations and the number of unknowns in (12) and (13).

  • Equations - 4 vector equations means 12 component equations.
  • Unknowns - Body b has 6 DOF, and the loading is unknown. The 6 unknown components are in $\boldsymbol{F}_b$ and $\boldsymbol{\tau}_b$, The connection force $\boldsymbol{F}_p$ has 3 unknown components, and the pivot has 3 unknown angles, 2 of which are only considered. So the total number of unknowns is 11.

To solve the above consider the connection force as having only 1 unknown (the force along the string) and disregard the rotational equation for the bob.

Make $\boldsymbol{F}_p = \frac{ F_p}{\ell} (\boldsymbol{r}_p-\boldsymbol{r}_{\rm bob})$ and count again

  • Equations - 3 vector equations meas 9 component equations.
  • Unknowns - 6 DOF of body b, 2 orientation angles, 1 tension force.
  • Solution - solution is feasable as a system of 9 equations and 9 unknowns.


The equations for kinematics are

$$\begin{aligned}\boldsymbol{a}_{p} & =\boldsymbol{a}_{b}+\boldsymbol{\alpha}_{b}\times(\boldsymbol{r}_{p}-\boldsymbol{r}_{b})+\boldsymbol{\omega}_{b}\times(\boldsymbol{v}_{p}-\boldsymbol{v}_{b})\\ \boldsymbol{a}_{{\rm bob}} & =\boldsymbol{a}_{p}+\boldsymbol{\alpha}_{{\rm bob}}\times(\boldsymbol{r}_{{\rm bob}}-\boldsymbol{r}_{p})+\boldsymbol{\omega}_{{\rm bob}}\times(\boldsymbol{v}_{{\rm bob}}-\boldsymbol{v}_{p})\\ \boldsymbol{\alpha}_{{\rm bob}} & =\boldsymbol{\alpha}_{b}+\mathbf{R}_{b}\left(\boldsymbol{\hat{i}_{y}}\ddot{\theta}+\mathbf{R}_{y}\boldsymbol{\hat{i}_{x}}\ddot{\varphi}\right)+\boldsymbol{\omega}_{b}\times\boldsymbol{\omega}_{{\rm bob}}+\\ & +\left(\boldsymbol{\omega}_{{\rm bob}}-\boldsymbol{\omega}_{b}\right)\times\left(\mathbf{R}_{b}\mathbf{R}_{y}\boldsymbol{\hat{i}_{x}}\dot{\varphi}\right) \end{aligned}$$

The equations for dynamics are

$$\begin{aligned}\boldsymbol{F}_{b}+\boldsymbol{W}_{b}-\boldsymbol{F}_{p} & =m_{b}\boldsymbol{a}_{b}\\ \boldsymbol{F}_{p}+\boldsymbol{W}_{{\rm bob}} & =m_{{\rm bob}}\boldsymbol{a}_{{\rm bob}}\\ \boldsymbol{\tau}_{b}-(\boldsymbol{r}_{p}-\boldsymbol{r}_{b})\times\boldsymbol{F}_{p} & =\mathbf{I}_{b}\boldsymbol{\alpha}_{b}+\boldsymbol{\omega}_{b}\times\mathbf{I}_{b}\boldsymbol{\omega}_{b} \end{aligned}$$

The connection force is

$$ \boldsymbol{F}_{p}=\frac{F_{p}}{\ell}(\boldsymbol{r}_{p}-\boldsymbol{r}_{{\rm bob}})$$

  • $\begingroup$ the connection force is constraint force we obtain the equations of motion with generalized coordinates, so no constraint forces should appear in the EOM ? $\endgroup$
    – Eli
    Mar 23, 2021 at 8:23
  • $\begingroup$ @Eli - constraint force are in the EOM via $\boldsymbol{F}_p$, but if you want to use generalized forces (torques really in a spherical joint) in place of the zero torque vector then you need the Jacobian in the kinematics $\boldsymbol{v}_{\rm bob} = \boldsymbol{v}_p + \mathbf{J}_{\rm bob} \dot{q}$ and in dynamics $$Q_i = \mathbf{J}_{\rm bob}^\top \boldsymbol{\tau}_p$$ $\endgroup$ Mar 23, 2021 at 12:37
  • $\begingroup$ Fix the above equation defining the jacobian is wrong. I meant to write $$\boldsymbol{\omega}_{\rm bob} = \boldsymbol{\omega}_b + \mathbf{J}_{\rm bob} \dot{q}$$ with $\dot{q} = \pmatrix{\dot{\theta} \\ \dot{\varphi} }$ $\endgroup$ Mar 23, 2021 at 12:46
  • $\begingroup$ @JohnAlexiou Hi John, thank you for the elaborate answer. I took some time to study your answer and I have a question regarding the Kinematics. To be more precise, the position of the bob in {i}, this is my opinion, correct me if I am wrong: $r_{bob} = r_p + r_{lp} = r_p + R_{b}r_{lp}^{b}$, where $r_{lp}$ is the distance from pivot to bob expressed in {i}, and $r_{lp}^{b}$ the same distance expressed in {b}. That is $r_{lp}^{b} = R_{y}R_{x}[0; 0; l]^T$. Since the rotations $R_{y}$ and $R_{x}$ are relative to {p}(or {b}), can you elaborate on (2), especially $\hat{i}_z$. Thanks a lot! $\endgroup$
    – sample
    Mar 25, 2021 at 21:38
  • $\begingroup$ Yes you have it correct. From the notation give $i_z$ is the direction of gravity and thus $\ell \hat{i}_z = \pmatrix{0\\0\\ \ell}$ $\endgroup$ Mar 26, 2021 at 0:31

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.