...
Location
The models are model is located in project_root/Simulation scripts
...
The code is very similar to Simulation runner where the only difference is the absence of the inverse kinematics calculations. The A1_position..A5_position are computed directly and then fed to the simulation
Motion Examples
Only A1
By only moving A1 we are mostly controlling the pitch of the strongback. However, this is not enough to obtain a pure pitch motion because we also have a parasitic motion on Y. This is why we need the inverse kinematics in place to keep all the degrees of freedom in the cartesian space as close as possible to the target configuration
Multimedia |
---|
name | SCU_FULL_vert.mp4 |
---|
width | 600 |
---|
autostart | true |
---|
|
Image Added
Image Added
Image Added
Circle
Combined motions can be executed. In this case, I'm simulating a rotary motion in the joint space.
Code Block |
---|
title | Rotary motion code |
---|
linenumbers | true |
---|
collapse | true |
---|
|
% generate a circular trajectory
R = 2;
time_norm = time / time(end);
theta = time_norm * 4*pi;
x = R*cos(theta);
y = R*sin(theta);
% Generate trajectory
A1 = A1_start + time / time(end) * (A1_end - A1_start);
A2 = A2_start + time / time(end) * (A2_end - A2_start);
A3 = A3_start + time / time(end) * (A3_end - A3_start);
A4 = A4_start + time / time(end) * (A4_end - A4_start);
A5 = A5_start + time / time(end) * (A5_end - A5_start);
% Create position arrays for each actuator
A1_position = [time' A1'];
A2_position = [time' y'];
A3_position = [time' y'];
A4_position = [time' A4'];
A5_position = [time' x']; |
Multimedia |
---|
name | SCU_FULL_rot.mp4 |
---|
width | 600 |
---|
autostart | true |
---|
|
Image Added
By completely ignoring the inverse kinematic we on both quad_x and quad_y the maximum target position (+-2 mm) is never achieved.
It is also clear that the quad_yaw is in phase with the quad_x and the quad_pitch is in phase with quad_y. Both show a maximum error of more than 1 mrad.
Image Added
Image Added
A4 and A5 opposite motion
Let's try to have an opposite linear motion on A4 and A5 (horizontal actuators) to generate a yaw motion. Since the rotation axis is not coincident with the quadrupole center we expect an error on quad_x as well as on quad_y due to the swing effect.
Code Block |
---|
title | Yaw motion code |
---|
linenumbers | true |
---|
collapse | true |
---|
|
% Trajectory parameters
A1_start = 0;
A1_end = 0;
A2_start = 0;
A2_end = 0;
A3_start = 0;
A3_end = 0;
A4_start = -2.5;
A4_end = 2.5;
A5_start = 2.5;
A5_end = -2.5;
% generate a circular trajectory
R = 2;
time_norm = time / time(end);
theta = time_norm * 4*pi;
x = R*cos(theta);
y = R*sin(theta);
% Generate trajectory
A1 = A1_start + time / time(end) * (A1_end - A1_start);
A2 = A2_start + time / time(end) * (A2_end - A2_start);
A3 = A3_start + time / time(end) * (A3_end - A3_start);
A4 = A4_start + time / time(end) * (A4_end - A4_start);
A5 = A5_start + time / time(end) * (A5_end - A5_start); |
Multimedia |
---|
name | SCU_FULL_yaw.mp4 |
---|
width | 800 |
---|
autostart | true |
---|
|
Image Added
Image Added
Image Added
Our predictions were right! The strongback mainly moved on yaw with some relevant parasitic motion on quad_x and quad_y.
From the plot is evident that the whole strongback is moving along z. This effect is mainly because the center of mass is moving during the imposed motion and, since the simulation is firstly a dynamical simulation, this change of position results in a displacement in the only non-constrined axis. In this model, the z-restrain mechanism is not implemented.