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#^36cc79And 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