diff --git a/docs/kinematic-study.html b/docs/kinematic-study.html index e84b50f..7299e89 100644 --- a/docs/kinematic-study.html +++ b/docs/kinematic-study.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- +computeJacobian
: Compute the Jacobian Matrix
stewart
structure elementsstewart
structure elementsinverseKinematics
: Compute Inverse Kinematics
forwardKinematicsApprox
: Compute the Approximate Forward Kinematics
We first define some general Stewart architecture. @@ -708,7 +708,7 @@ Ls_exact = zeros(6, length(Xrs)); for i = 1:length(Xrs) Xr = Xrs(i); - L_approx(:, i) = stewart.J*[Xr; 0; 0; 0; 0; 0;]; + L_approx(:, i) = stewart.kinematics.J*[Xr; 0; 0; 0; 0; 0;]; [~, L_exact(:, i)] = inverseKinematics(stewart, 'AP', [Xr; 0; 0]); end @@ -733,9 +733,12 @@ Ls_exact = zeros(6, length(Xrs));
For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod), the approximate inverse kinematic solution using the Jacobian matrix is quite correct.
+ +Let’s first define the Stewart platform architecture that we want to study. @@ -767,7 +770,7 @@ stewart = computeJointsPose(stewart); stewart = initializeStewartPose(stewart); stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalStruts(stewart); -stewart = initializeStrutDynamics(stewart, 'Ki', 1e6*ones(6,1), 'Ci', 1e2*ones(6,1)); +stewart = initializeStrutDynamics(stewart); stewart = initializeJointDynamics(stewart); stewart = computeJacobian(stewart); @@ -802,12 +805,12 @@ We do that using either the Inverse Kinematic solution or the Jacobian matrix as
LTx = stewart.J*[Tx_max 0 0 0 0 0]'; -LTy = stewart.J*[0 Ty_max 0 0 0 0]'; -LTz = stewart.J*[0 0 Tz_max 0 0 0]'; -LRx = stewart.J*[0 0 0 Rx_max 0 0]'; -LRy = stewart.J*[0 0 0 0 Ry_max 0]'; -LRz = stewart.J*[0 0 0 0 0 Rz_max]'; +LTx = stewart.kinematics.J*[Tx_max 0 0 0 0 0]'; +LTy = stewart.kinematics.J*[0 Ty_max 0 0 0 0]'; +LTz = stewart.kinematics.J*[0 0 Tz_max 0 0 0]'; +LRx = stewart.kinematics.J*[0 0 0 Rx_max 0 0]'; +LRy = stewart.kinematics.J*[0 0 0 0 Ry_max 0]'; +LRz = stewart.kinematics.J*[0 0 0 0 0 Rz_max]';
Let’s first define the Stewart platform architecture that we want to study. @@ -1175,7 +1178,7 @@ stewart = computeJointsPose(stewart); stewart = initializeStewartPose(stewart); stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalStruts(stewart); -stewart = initializeStrutDynamics(stewart, 'Ki', 1e6*ones(6,1), 'Ci', 1e2*ones(6,1)); +stewart = initializeStrutDynamics(stewart); stewart = initializeJointDynamics(stewart); stewart = computeJacobian(stewart); @@ -1224,7 +1227,7 @@ rs = zeros(length(thetas), length(phis)); Ty = sin(thetas(i))*sin(phis(j)); Tz = cos(thetas(i)); - dL = stewart.J*[Tx; Ty; Tz; 0; 0; 0;]; % dL required for 1m displacement in theta/phi direction + dL = stewart.kinematics.J*[Tx; Ty; Tz; 0; 0; 0;]; % dL required for 1m displacement in theta/phi direction rs(i, j) = max([dL(dL<0)*L_min; dL(dL>0)*L_max]); end @@ -1293,9 +1296,9 @@ This Matlab function is accessible here.
function [stewart] = computeJacobian(stewart) % computeJacobian - @@ -1318,9 +1321,9 @@ This Matlab function is accessible here.
stewart
structure elementsstewart
structure elementsassert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As') As = stewart.geometry.As; @@ -1428,9 +1431,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
function [Li, dLi] = inverseKinematics(stewart, args) % inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A} @@ -1454,9 +1457,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
arguments stewart @@ -1468,9 +1471,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
stewart
structure elementsstewart
structure elementsassert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa') Aa = stewart.geometry.Aa; @@ -1514,9 +1517,9 @@ This Matlab function is accessible he
function [P, R] = forwardKinematicsApprox(stewart, args) % forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using @@ -1538,9 +1541,9 @@ This Matlab function is accessible he
arguments stewart @@ -1551,9 +1554,9 @@ This Matlab function is accessible he
stewart
structure elementsstewart
structure elementsassert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J') J = stewart.kinematics.J; @@ -1616,7 +1619,7 @@ We then compute the corresponding rotation matrix.
Created: 2020-02-11 mar. 17:50
+Created: 2020-02-12 mer. 10:22