Dynamics of the robotic arm: Newton - Euler Method

Intuitive in idea, tedious in process

Rigid body dynamics

We know that a robotic arm consists of a joint and a linkage: the joint is able to exert force in a specific direction on the linkage to which it is attached; the linkage is a rigid body with a certain mass and size (so the inertia tensor is not negligible) that does not deform. It follows that the essence of robotic arm dynamics is rigid body dynamics.

Rigid body dynamics is the study of the relationship between the state of motion of a rigid body and the external forces on it. This relationship is described by Euler's laws of motion. Euler's laws of motion are an extension of Newton's second law, known as F=maF = ma; If Newton's law describes an abstract "object" or "particle", Euler's law extends it to an infinite number of particles assembled together to form a concrete rigid body with volume.

Euler's first law of motion (Newton's law)

Euler's first law describes the linear motion of a rigid body in relation to the external forces applied to it.

First, the concept of linear momentum is introduced, which is equal to the mass of an object (particle) multiplied by the linear velocity. By Newton's second law(d(mv)dt=ma=F\frac{d(mv)}{dt} = ma = F), the rate of change of linear momentum is equal to the external force on the object.

A rigid body can be viewed as a collection of countless particles, and the linear momentum of the rigid body is equal to the sum of the linear momentum of these particles. Due to the zero deformation property of the rigid body, an external force acting at any point on the rigid body is equivalent to a change in the linear momentum of all the particles. So,

F=Σidmividt\overrightarrow{F} = \Sigma_{i} \frac{dm_i \overrightarrow{v_i}}{dt}

The right hand side of the equation can be transformed into an integral over the mass of the rigid body:

Σimivi=mv(m)dm=mdrmdtdm\Sigma_im_i \overrightarrow{v_i} = \int_m \overrightarrow{v}(m)dm = \int_m \frac{d\overrightarrow{r}m}{dt}dm

where the vector r\overrightarrow{r} represents the position vector of each point on the rigid body in some frame of reference. If we use the center of mass as the original point:

rcm=1mmr(m)dm\overrightarrow r_{cm}= \frac {1}{m} \int_m \overrightarrow r (m) dm. The subscript cmcm represents for center of mass.

So,

mdr(m)dtdm=mddt(1mmr(m)dm)=mvcm\int_m \frac{d \overrightarrow r (m) }{dt} dm = m \centerdot \frac{d}{dt}\left( \frac{1}{m} \int_m \overrightarrow r (m) dm \right) = m \centerdot \overrightarrow{v}_{cm}

Ultimately, the linear momentum of a rigid body is the product of the mass of the rigid body and the linear velocity of its center of mass. This conclusion shows that when considering the linear motion of a rigid body, it is sufficient to consider only the linear motion of the center of mass.

Euler's first law - the rate of change of the linear momentum of a rigid body is equal to the external force on it:

F=ddtmvcm\overrightarrow{F} = \frac{d}{dt} m \overrightarrow{v}_{cm}

Obviously, the derivative of a linear velocity is a linear acceleration, so Euler's first law can also be written in this form below:

F=ddtmvcm\overrightarrow{F} = \frac{d}{dt} m \overrightarrow{v}_{cm}

Euler's second law of motion

Euler's second law describes the relationship between the angular motion of a rigid body and the moment of force. When a force acts on a particle, it has a force arm with respect to another point O. The force arm multiplied by the force is the moment.

Moment is a vector, not a scalar, the direction points to the direction of rotation of the object. It is much clearer to memorize this relationship as a cross product! Also note the order of the cross multiplication.

N=p×F\overrightarrow{N} = \overrightarrow{p} \times \overrightarrow{F}

Similar to linear momentum, we also introduce the concept of angular momentum: the angular momentum of a particle with respect to a fixed point is equal to the product of its mass and its angular velocity. Obviously, the linear velocity of the particle (with respect to this fixed point) is equal to the cross product of the angular velocity (with respect to this fixed point), and the position vector from the fixed point to the particle, and : v=p×ω\overrightarrow{v} = \overrightarrow{p} \times \overrightarrow{\omega}

Then angular momentum is written as: M=p×mv\overrightarrow{M} = \overrightarrow{p} \times m \overrightarrow{v}

Starting from Newton's law F=ma\overrightarrow{F} = m \overrightarrow{a} , if we multiply it with the position vectors and use the the derivative of the vector cross product :

We can then get a similar conclusion like the first law: the rate of change of the angular momentum of an object is equal to the moment of force applied to it, i.e.

N=ddtmω\overrightarrow{N} = \frac{d}{dt} m \overrightarrow{\omega}

Now similarly, we need to generalize this conclusion to a rigid body made up of an infinite collection of particles; this part is slightly more problematic compared to the derivation of the first law.

First we have to derive an expression for the angular momentum of the rigid body, which, still considered as a collection of innumerable particles:

Φ=Σimipi×vi=Σimipi×ω×pi)\overrightarrow{\Phi} = \Sigma_i m_i \overrightarrow{p_i} \times \overrightarrow{v_i} = \Sigma_i m_i \overrightarrow{p_i} \times (\overrightarrow{\omega} \times \overrightarrow{p_i})

Notice that we have replaced the linear velocity with a cross product of the angular velocity and the position vector, which is the same for every point on the rigid body, so we can take it outside the summation. Writing the above equation in volume integration form, we have:

p wedge in this context is called the cross product operator, which converts the cross product of two vectors into a matrix-by-vector operation. In our 3×1 vector case:

Here, we define the part in parentheses [] in the previous integral equation as the inertia tensor II:

I=[Vp^p^ρdv]I = \left[ \int_V - \hat{p} \hat{p} \rho d v \right].

Finally, the expression for the angular momentum of the rigid body is Φ=Iω\Phi = I \overrightarrow{\omega}

Similar to force as the rate of change of linear momentum, the torque applied to a rigid body is defined as the rate of change of the angular momentum of the rigid body. To find the relationship between torque and angular velocity and angular acceleration, we can derive both sides of the above equation:

dωdt\frac {d \omega}{dt} is obviously the angular acceleration of the rigid body, and what is Iωdt\frac {I \omega}{dt}? It is the derivative of the tensor with respect to time, which is not necessarily equal to 0!

The tensor is the volume fraction of each point on a rigid body, after certain operations imposed on the position vectors with respect to a stationary frame of reference, and that these position vectors rotate as the rigid body rotates; similarly, the linear velocity of a point is equal to the forked product of the angular velocity and the position vectors:

Summarize rigid body dynamics in a table:

Linear
Angular

Inertia

Mass mm

Tensor II

Momentum

mvmv

IωI \omega

Force

Force FF

Torque τ\tau

Accelerate

Linear acceleration aa

Angular acceleration α\alpha

Eular's equation

F=maF = ma

τ=Iα+ω×Iω\overrightarrow{\tau} = I \overrightarrow{\alpha} + \overrightarrow{\omega} \times I \overrightarrow{\omega}

Deriving robotic arm dynamics using Newton's Euler method

After spending so much time on the Euler equations of motion for rigid body dynamics, we can finally take a look at the dynamics of a robotic arm. The ultimate goal of solving the dynamics of a robotic arm is to find out how much torque (for revolute joints) or force (for prismatic joints) should be applied by the actuators at each joint if we need to control the robot to follow a certain trajectory (don't forget that a trajectory is a function of position in respect to time).

To derive the dynamics of a robotic arm using Newton - Euler method, two steps are need:

  1. Forward propagation: starting from the base, we calculate the velocity and acceleration of each linkage in turn, all the way to the end-effector; and then:

  2. Backward propagation: starting from the external force on the end-effector, we calculate the torque/force of each joint in turn

The Newtonian Eulerian method for deriving robotic arm dynamics is a recursive algorithm.

Forward propagation

First look at the angular velocity of the connecting rod, the angular velocity of each connecting rod is equal to the angular velocity of the last connecting rod plus the angular velocity of its joints (0 for prismatic joints); according to this we can get the formula for the transfer of angular velocity of the connecting rod. After derivating of both sides of the formula, we can further get the formula of angular acceleration:

Where θ\theta is the joint position (angle of the revolute joint) and ZZ is the revolution axis of the joint. Note that the above equation does not indicate the reference frame used for each vector. In practice, it is necessary to use a rotation matrix to map vectors from different reference frames to the same reference frame.

For linear velocity, the linear velocity of each link is equal to the sum of the linear velocity of the previous link (center of mass), the linear velocity caused by the rotation of the previous link, and the linear velocity of the prismatic joint. Derivation on both sides of the equation gives the transfer equation for linear acceleration.

where did_i is the joint position of joint ii (the prismatic position of the prismatic joint), ZZ is the direction of joint translation, and pp is the position vector from the center of mass of the previous link to the current link.

With the transfer equations for velocity and acceleration, we can easily find the inertia force and moment of inertia for each linkage based on Euler's equations:

Backward propagation

Now let's analyze the forces on each connecting rod. From Newton's third law, we know that forces act on each other, so we can use FiF_i to represent the force each connecting rod receives from the previous connecting rod, and NiN_i to represent the moment it receives.

Then the force/torque at each joint is:

For DOF-6 robot arms:

Gravity: set 0v˙0=G\text{Gravity: set }^0\dot{v}_0 = G

A simple example

In order to better understand the process of solving Newton-Euler recursive method(and how cumbersome the method is lol), here's a simple example - a robotic arm with only one resolute joint:

where the length of the connecting rod is ll and the center of mass is positioned at l/2l/2.

In the forward phase, we can find the velocity, acceleration, and inertial force.

\\

In the Backward phase, we can find:

In the end we get:

Last updated