Problem 1 (Characterizations of Rotations)

Euler Angles We have

and

a)

Used formulas:

Skew-Symmetric Cross Product Matrix Formula

[!Skew-Symmetric Cross Product Matrix Formula]

Remember Skew-Symmetric Matrix

See Assignment 3 - Kinematics 2

Link to original

Where the Skew-Symmetric Matrix is on the form

Transclude of Skew-Symmetric-Matrix#^36cc79
And the vector is given by

Link to original

We have the following Principal Rotation Matrix for

Link to original


We first find , which is a principal rotation matrix around the -axis.

Which has the related relative angular velocity, .

Which means that


We then find , which is a principal rotation matrix around the -axis.

Which has the related relative angular velocity, (by solving the same way).


And lastly , which is a principal rotation matrix around the -axis.

Which has the related relative angular velocity,

b)

We want to express as

Where .


Finding the composite relative angular velocities is the same as the sum

Which yields

Q.E.D

c)

When , we get the following matrix.

The resulting determinant is equal to zero when the bottom left element is both positive and negative. is therefore singular, and cannot be inverted. Exactly this is the weakness of Euler Angles, and is the reason we choose Angle Axis Representation or Quaternions instead when these situations can arise.

Problem 2 (Pendulum on rotating disk)

Equation

Link to original


Equation

Link to original

a)

We want to find the Linear Velocity of point represented in the -frame, .

We first find .

We get since we rotate about the -axis in positive direction

We then find

Since we can see that , we get

We get since we rotate about the -axis in positive direction

Lastly we find

The reason that we have is still due to rotation around -axis.

b)

We want to find the Linear Acceleration, . We do this by derivating term by term.

I got the answer from WolframAlpha, and did a bit of simplifications.

Problem 3 (Linked Mechanism)

a)

We want to find the position of relative to in the -frame, , and the position of relative to in the -frame, .

We first find

We then find

Alternatively, in Matlab using the symbolic toolbox

% Define symbolic variables
syms L1 L2 q1 q2 real
 
% Rotation matrices,@(angle) creates an anonymous function
Rz = @(angle) [cos(angle) -sin(angle) 0; sin(angle) cos(angle) 0; 0 0 1];
Ry = @(angle) [cos(angle) 0 sin(angle); 0 1 0; -sin(angle) 0 cos(angle)];
 
% Position vector from A to B in frame 0
r0_B_A = Rz(q1) * [L1; 0; 0];
 
% Position vector from B to C in frame 0
r0_C_B = Rz(q1) * Ry(-q2) * [L2; 0; 0];
 
% Position vector from A to C in frame 0
r0_C_A = r0_B_A + r0_C_B;
 
% Output the results
r0_B_A = simplify(r0_B_A)
r0_C_A = simplify(r0_C_A)

b)

Keeping the code from a), we can extend our script to also give us angular velocity

% Define symbolic variables for the angular velocities
syms q1_dot q2_dot real
 
% Define the angular velocity of AB in the global frame
omega_AB = [0; 0; q1_dot];
 
% Calculate the angular velocity of BC in the local frame and rotate to global frame
omega_BC_local = [0; q2_dot; 0];
omega_BC_global = Rz(q1) * omega_BC_local;
 
% The total angular velocity of BC in the global frame is the sum of omega_AB and the rotated omega_BC_local
omega_BC = omega_AB + omega_BC_global;
 
% Output the results
omega_AB = simplify(omega_AB)
omega_BC = simplify(omega_BC)

Which gives us

And

c)

Keeping the code from b) and c), and extending it lets us also find the Linear Velocity

% Define symbolic variables
syms L1 L2 q1 q2 q1_dot q2_dot real
 
% Position vectors from A to B and from B to C in frame 0
r0_B_A = [L1*cos(q1); L1*sin(q1); 0];
r0_C_B = [L2*cos(q1+q2); L2*sin(q1+q2); 0];
 
% Angular velocities in frame 0
omega_AB = [0; 0; q1_dot];
omega_BC = [0; 0; q1_dot + q2_dot];
 
% Calculate the linear velocity of point B
v_B = cross(omega_AB, r0_B_A);
 
% Calculate the linear velocity of point C
v_C = v_B + cross(omega_BC, r0_C_B - r0_B_A);
 
% Output the results
v_B = simplify(v_B)
v_C = simplify(v_C)

Which gives us

And

d)

We want to express the linear velocity of the point as , with a Jacobian matrix . This can be done in the following matlab script

% Define symbolic variables
syms L1 L2 q1 q2 q1_dot q2_dot real
% Position vector of point C from A
r0_C_A = [L1*cos(q1) + L2*cos(q1 + q2); L1*sin(q1) + L2*sin(q1 + q2); 0];
% Compute the Jacobian matrix
J = [diff(r0_C_A, q1), diff(r0_C_A, q2)];
% The vector of joint velocities
q_dot = [q1_dot; q2_dot];
% The linear velocity of point C
v_C = J * q_dot;
% Simplify the expression
v_C = simplify(v_C);
% Display the Jacobian matrix and the linear velocity of point C
J
v_C

Which yields

The Entire Matlab Script For Problem 3

 Angular Velocity
% Define symbolic variables for the angular velocities
syms q1_dot q2_dot real
 
% Define the angular velocity of AB in the global frame
omega_AB = [0; 0; q1_dot];
 
% Calculate the angular velocity of BC in the local frame and rotate to global frame
omega_BC_local = [0; q2_dot; 0];
omega_BC_global = Rz(q1) * omega_BC_local;
 
% The total angular velocity of BC in the global frame is the sum of omega_AB and the rotated omega_BC_local
omega_BC = omega_AB + omega_BC_global;
 
% Output the results
omega_AB = simplify(omega_AB)
omega_BC = simplify(omega_BC)
 
 
 Linear Velocity on Jacobian form
% Define symbolic variables
syms L1 L2 q1 q2 q1_dot q2_dot real
% Position vector of point C from A
r0_C_A = [L1*cos(q1) + L2*cos(q1 + q2); L1*sin(q1) + L2*sin(q1 + q2); 0];
% Compute the Jacobian matrix
J = [diff(r0_C_A, q1), diff(r0_C_A, q2)];
% The vector of joint velocities
q_dot = [q1_dot; q2_dot];
% The linear velocity of point C
v_C = J * q_dot;
% Simplify the expression
v_C = simplify(v_C);
% Display the Jacobian matrix and the linear velocity of point C
J
v_C