14  Tutorial 02 - Translational Equations of Motion

Question 1

A rigid body is undergoing a translation and rotation. The instantaneous acceleration of the BCS origin \(O\) is given by \(\vec{a} = [0.75, 0.45, 1.13]^T ~ m/s^2\). If the instantaneous \(\dot{\vec{v}} = [1, 0.5, 1]^T ~ m/s^2\), instantaneous \(\vec{v} = [0.2, 0.3, 0.5]^T ~ m/s\) and the angular velocity of the body \(\vec{\omega} = [\omega_1, \omega_2, 1]^T ~ rad/s\), then calculate \(\omega_1\) and \(\omega_2\).

Question 2

Let the angular acceleration \(\vec{\alpha} = [0, 1, 0]^T ~ rad/s^2\) and \(\vec{r}_G = [0.2, 0.6, 0.3]^T ~ m\) for a rigid body. If the instantaneous orientation is described by Euler angles \(\phi=30^{\circ}\), \(\theta=0^{\circ}\) and \(\psi=60^{\circ}\), calculate the tangential acceleration in the GCS using the following two approaches and compare:

  1. Convert \(\vec{\alpha}\) and \(\vec{r}_G\) to GCS and then calculate the tangential acceleration in GCS
  2. Calculate the tangential acceleration in BCS and then convert it to GCS

Question 3

If an Inertial Measurement Unit (IMU) attached to the origin of the BCS measures that the acceleration of a rigid body is zero. Let the location of center of gravity in BCS be denoted by \(\vec{r}_G = [0.5, 0, -0.3]^T ~ m\). Assume that the body has a constant angular velocity which is measured to be \(\vec{\omega} = [1, 0, 1]^T ~ rad/s\) by the IMU. If the velocity in BCS is known to be \(\vec{v} = [0.5, 0.5, 0]^T ~ m/s\), calculate:

  1. The rate of change of velocity in BCS frame \(\dot{\vec{v}}\)
  2. The external force on the body in BCS if the mass of the rigid body is \(m = 10 ~kg\)

Question 4

Consider a boat weighing \(5 ~ tonnes\) that is equipped with an aft azimuth thruster that is pointed at an angle of \(30^{\circ}\) to the bow of the ship (towards starboard). The center of gravity of the vessel in BCS is given by \(\vec{r}_G = [-0.7, 0, 1.0]^T ~ m\). The thruster is turned on when the boat is at rest. Assuming that the thruster generates \(10~kN\) force, determine the instantaneous acceleration experienced by the body expressed in BCS at the instant that the thruster is turned on. You may assume that the instantaneous angular acceleration is \(\vec{\alpha} = [-0.05, 0, -0.1]^T ~ rad/s^2\).

Solution 1

A rigid body is undergoing a translation and rotation. The instantaneous acceleration of the BCS origin \(O\) is given by \(\vec{a} = [0.75, 0.45, 1.13]^T ~ m/s^2\). If the instantaneous \(\dot{\vec{v}} = [1, 0.5, 1]^T ~ m/s^2\), instantaneous \(\vec{v} = [0.2, 0.3, 0.5]^T ~ m/s\) and the angular velocity of the body \(\vec{\omega} = [\omega_1, \omega_2, 1]^T ~ rad/s\), then calculate \(\omega_1\) and \(\omega_2\).

Code
import numpy as np

def Smat(v):
    return np.array([
        [0, -v[2], v[1]],
        [v[2], 0, -v[0]],
        [-v[1], v[0], 0]
    ])

vdot = np.array([1.0, 0.5, 1.0])
v = np.array([0.2, 0.3, 0.5])
a = np.array([0.75, 0.45, 1.13])
omg3 = 1

minusSv = -Smat(v)

Amat = minusSv[:2][:, :2]
bvec = (a - vdot - omg3*minusSv[:, 2])[:2]
omg12 = np.linalg.lstsq(Amat, bvec, rcond=None)[0]

print(f"omega_1 = {omg12[0]:.2f} and omega_2 = {omg12[1]:.2f}")

print(omg12[0] * v[1] - omg12[1] * v[0] - (a[2] - vdot[2]))
omega_1 = 0.50 and omega_2 = 0.10
1.1102230246251565e-16

Solution 2

Let the angular acceleration \(\vec{\alpha} = [0, 1, 0]^T ~ rad/s^2\) and \(\vec{r}_G = [0.2, 0.6, 0.3]^T ~ m\) for a rigid body. If the instantaneous orientation is described by Euler angles \(\phi=30^{\circ}\), \(\theta=0^{\circ}\) and \(\psi=60^{\circ}\), calculate the tangential acceleration in the GCS using the following two approaches and compare:

  1. Convert \(\vec{\alpha}\) and \(\vec{r}_G\) to GCS and then calculate the tangential acceleration in GCS
  2. Calculate the tangential acceleration in BCS and then convert it to GCS
Code
def rotm(eul):
    phi = eul[0]
    theta = eul[1]
    psi = eul[2]
    
    s1 = np.sin(phi); c1 = np.cos(phi)
    s2 = np.sin(theta); c2 = np.cos(theta)
    s3 = np.sin(psi); c3 = np.cos(psi)
    
    R = np.array([
        [c2*c3, -c1*s3 + s1*s2*c3,  s1*s3 + c1*s2*c3],
        [c2*s3,  c1*c3 + s1*s2*s3, -s1*c3 + c1*s2*s3],
        [  -s2,             s1*c2,             c1*c2]
    ])
    
    return R

eul = np.array([30, 0, 60]) * np.pi / 180
R = rotm(eul)

alpha = np.array([0, 1, 0])
rG = np.array([0.2, 0.6, 0.3])

# Approach 1
tang_acc1 = np.cross((R @ alpha), (R @ rG))

# Approach 2
tang_acc2 = R @ np.cross(alpha, rG)

print(tang_acc1)
print(tang_acc2)
[ 0.06339746  0.30980762 -0.17320508]
[ 0.06339746  0.30980762 -0.17320508]

Solution 3

If an Inertial Measurement Unit (IMU) attached to the origin of the BCS measures that the acceleration of a rigid body is zero. Let the location of center of gravity in BCS be denoted by \(\vec{r}_G = [0.5, 0, -0.3]^T ~ m\). Assume that the body has a constant angular velocity which is measured to be \(\vec{\omega} = [1, 0, 1]^T ~ rad/s\) by the IMU. If the velocity in BCS is known to be \(\vec{v} = [0.5, 0.5, 0]^T ~ m/s\), calculate:

  1. The rate of change of velocity in BCS frame \(\dot{\vec{v}}\)
  2. The external force on the body in BCS if the mass of the rigid body is \(m = 10 ~kg\)
Code
omg = np.array([1, 0, 1])
v = np.array([0.5, 0.5, 0])
rG = np.array([0.5, 0, -0.3])
m = 10

vdot = -np.cross(omg, v)

F = m * np.cross(omg, np.cross(omg, rG))

print(f"vdot: {vdot[0]:.2f}, {vdot[1]:.2f}, {vdot[2]:.2f} m/s^2")
print(f"F: {F[0]:.2f}, {F[1]:.2f}, {F[2]:.2f} N")
vdot: 0.50, -0.50, -0.50 m/s^2
F: -8.00, -0.00, 8.00 N

Solution 4

Consider a boat weighing \(5 ~ tonnes\) that is equipped with an aft azimuth thruster that is pointed at an angle of \(30^{\circ}\) to the bow of the ship (towards starboard). The center of gravity of the vessel in BCS is given by \(\vec{r}_G = [-0.7, 0, 1.0]^T ~ m\). The thruster is turned on when the boat is at rest. Assuming that the thruster generates \(10~kN\) force, determine the instantaneous acceleration experienced by the body expressed in BCS at the instant that the thruster is turned on. You may assume that the instantaneous angular acceleration is \(\vec{\alpha} = [-0.05, 0, -0.1]^T ~ rad/s^2\).

Code
az_th = 30 * np.pi / 180
F = 10000 * np.array([np.cos(az_th), np.sin(az_th), 0])
m = 5000

alpha = np.array([-0.05, 0, -0.1])
rG = np.array([-0.7, 0, 1.0])

a_tot = F / m

a_tan = np.cross(alpha, rG)

a = a_tot - a_tan

print(f"Acceleration in BCS: ({a[0]:.2f} i + {a[1]:.2f} j + {a[2]:.2f} k) m/s^2")
Acceleration in BCS: (1.73 i + 0.88 j + 0.00 k) m/s^2