三轴机器人仿真

direct

clear all
clc
pkg load symbolic

%% symbols
syms r11 r12 a1 L1 r21 r22 a2 L2 r31 r32 a3 L3

%% O
R1 = [[r11];[r12]];
A1 = [[cos(a1), - sin(a1)]; [sin(a1), cos(a1)]];

% stracture params
u_o1=[-0.5*L1;0];

ro1=R1+A1*u_o1;
fun1=ro1-[0;0]

u_a1=[-0.5*L1;0];
ra1=R1+A1*u_a1;

%% A
R2 = [[r21];[r22]];
A2 = [[cos(a2), -sin(a2)]; [sin(a2), cos(a2)]];

% stracture params
u_a2=[[-0.5*L2];[0]];
ra2=R2+A2*u_a2;

fun2=ra1-ra2


%% B
R3 = [[r31];[r32]];
A3 = [[cos(a3), -sin(a3)]; [sin(a3), cos(a3)]];

% stracture params
u_b3=[[-0.5*L3];[0]];
rb3=R3+A3*u_b3;

fun3=ra2-rb3

%% direct kinematics
fun=[fun1;fun2;fun3]

inverse

\[ r_{p}^3 - \left[vt+a_0,\space vt\cdot\tan(\theta)+b_b \right]^T \]
clear all
clc
pkg load symbolic

%% symbols
syms r11 r12 a1 L1 r21 r22 a2 L2 r31 r32 a3 L3

%% O
R1 = [[r11];[r12]];
A1 = [[cos(a1), - sin(a1)]; [sin(a1), cos(a1)]];

% stracture params
u_o1=[-0.5*L1;0];

ro1=R1+A1*u_o1;
fun1=ro1-[0;0]

u_a1=[-0.5*L1;0];
ra1=R1+A1*u_a1;

%% A
R2 = [[r21];[r22]];
A2 = [[cos(a2), -sin(a2)]; [sin(a2), cos(a2)]];

% stracture params
u_a2=[[-0.5*L2];[0]];
ra2=R2+A2*u_a2;

fun2=ra1-ra2


%% B
R3 = [[r31];[r32]];
A3 = [[cos(a3), -sin(a3)]; [sin(a3), cos(a3)]];

% stracture params
u_b3=[[-0.5*L3];[0]];
rb3=R3+A3*u_b3;

syms a0 v t b0 a % trajectory params

rb3t=[a0+v*t;b0+v*t*tan(a)]

fun31=ra2-rb3
fun32=rb3-rb3t
fun3=[fun31;fun32];
%% inverse kinematics
fun=[fun1;fun2;fun3]

%% solvution
%a1 = pi/2;
res = solve(fun)