Parallel robot

rbpll6 [1]

Given the length of the length of arms (between the ground and the platform) of the parallel robot, we want to find all the possible positions of the upper platform.


Several formulation of the problem are possible, according to the representation of the displacement. Using quaternions (see [2]), we obtain the following system for the matrix X of base points and the matrix Y of points of the platform given
X := é
ê
ê
ê
ê
ë
0 1/2 3/2 3/2 1/3 2

0
-1/2 -1/2 1/2 1/2 0

0
-1 -1 -1 -1 0
ù
ú
ú
ú
ú
û
, Y := é
ê
ê
ê
ê
ë
0 1 0 1 0 -1

0
0 -1 1 1 0

0
1 0 1 1 1
ù
ú
ú
ú
ú
û
and the length
lg := [ 1.0,1, 0.8,2,2,2]
ì
ï
ï
í
ï
ï
î
u2+v2+w2- 1.0
- 12.0b- 4.0a+ 4.0c+ 4.0ab+ 4.0ac+ 4.0bc+a2+ 5.0b 2+ 13.0c2+ 8.0w+ 2.0u+ 9.0+ 8.0acu+ 8.0acw+ 8.0bav+ 8.0bcv+ 2.0ua2- 6.0ub2- 6.0uc2+ 2.0va2+ 2.0vb2+ 2.0vc2+ 8.0wc2+ 8.0bu+ 8.0cv- 8.0av- 8.0bw+ 2.0v
8.860- 6.0b+ 2.0a+ 4.0abu+ 6.0c- 6.0ab- 6.0ac+ 6.0bc+ 2.860a2+ 4.860b2+ 6.860c2+ 4.0w- 3.0u+ 4.0bcw+ 4.0aw- 4.0cu+ 4.0acu+ 4.0bcv- 3.0ua2- 3.0ub2- 3.0uc2- 1.0va2+ 3.0vb2- 1.0vc2+ 4.0wc2+ 4.0bu- 4.0av+ 3.0v
- 2.0b+ 2.0a+ 2.0c+ 2.0ab- 10.0ac- 2.0bc+ 3.5a 2- 2.5b2+ 1.5c2+ 4.0w- 5.0u+ 7.5+ 4.0acu- 4.0acw- 4.0bav+ 4.0bcv- 5.0u a2- 1.0ub2- 1.0uc2- 1.0va2- 1.0vb 2- 1.0vc2+ 4.0wc2+ 4.0bu- 4.0cv- 4.0av+ 4.0bw- 1.0v
- 4.0a- 4.0abu- 1.333333333c+ 1.333333333ab- 4.0bc- 1.638888889a2+ 0.361111111b2- 1.638888889c 2+ 2.0w- 0.6666666667u- 4.0bcw- 4.0aw+ 0.361111111+ 2.0wb2+ 2.0wa2+ 4.0cu- 0.6666666667ua2- 0.6666666667ub2- 0.6666666667uc2+va2- 3.0vb2+vc2+ 2.0wc2- 3.0v
- 8.0b+ 4.0abu+ 8.0c- 8.0ab- 8.0ac+ 8.0b2+ 8.0c2+ 2.0w- 2.0u+ 4.0bcw+ 4.0aw- 2.0wb2- 2.0wa2 - 4.0cu+ 4.0acu+ 4.0acw+ 4.0bav+ 4.0bcv- 2.0ua2- 6.0ub2- 6.0uc2- 2.0va2+ 2.0vb2- 2.0vc2+ 2.0wc2+ 4.0bu+ 4.0cv- 4.0av- 4.0bw+ 2.0v
Added to the list by B. Mourrain (April 1996).

Characteristics:




Example 1:
X := 'X': Y := 'Y': S:= 'S'; 
N2 := proc(A) normal(A[1]^2 + A[2]^2 + A[3]^2): end:

X[1]:=[0,0,0];        X[2]:=[1/2,-1/2,-1];
X[3]:=[3/2,-1/2,-1];  X[4]:=[3/2,1/2,-1];
X[5]:=[1/3,1/2,-1];   X[6]:=[2,0,0];

Y[1]:=[0,0,0];        Y[2]:=[1,0,1];
Y[3]:=[0,1,1];        Y[4]:=[-1,0,1];
Y[5]:=[0,-1,0];       Y[6]:=[1,1,1];

dt  := (a^2+b^2+c^2+d^2); r11 := (a^2-b^2-c^2+d^2)/dt:  
r12 := 2*(a*b-c*d)/dt:    r13 := 2*(a*c + b*d)/dt:      
r21 := 2*(a*b+c*d)/dt:    r22 := (-a^2+b^2-c^2+d^2)/dt: 
r23 := 2*(b*c-a*d)/dt:    r31 := 2*(a*c-b*d)/dt:    
r32 := 2*(a*d+b*c)/dt:    r33 := (-a^2-b^2+c^2+d^2)/dt:

R := matrix([[r11,r12,r13],[r21,r22,r23],[r31,r32,r33]]):
T := [u,v,w]:

lg :=[1.0,1,0.8,2,2,2]:

S[1] := numer(N2(T)-lg[1]^2);
for i from 2 to 6 do
   S[i] := numer(expand(N2(evalm (R* Y[i] + T - X[i]))  
             - lg[i]^2  -N2(T) +lg[1]^2)):
od;
S : convert(S,list);

References

[1]
D. Bini and B. Mourrain. Polynomial test suite. 1996.

[2]
B. Mourrain. The 40 generic positions of a parallel robot. In M. Bronstein, editor, ISSAC'93, ACM press, pages 173--182, Kiev (Ukraine), July 1993.