Coëfficiënten zesde orde polynoom
Geplaatst: 06 jun 2022, 15:29
Ik moet de coëfficiënten berekenen van een zesde orde polynoom.
De zesde orde polynoom stelt de positie van aan slave voor t.o.v. een master tijdens een beweging.
Master zal bewegen en de slavepositie is een functie van de masterpositie.
Snelheid, acceleratie en jerk van de beweging zijn afgeleiden van die positie.
Hierbij zijn :
s = masterpositie bij start
e = masterpositie bij het einde
xs = slavepositie bij start
xe = slavepositie bij einde
vs = slavesnelheid bij start
ve = slavesnelheid bij einde
as = slaveacceleratie bij start
ae = slaveacceleratie bij einde
js = slavejerk bij start
je = slavejerk bij einde
Vooraf gekend zijn e,s,xs,xe,vs.
Bovendien zijn de acceleraties en jerks bij start en einde 0.
[1] xs = A*s6 + B*s5 + C*s4 + D*s3 + E*s2 + F*s + G
[2] vs = 6*A*s5 + 5*B*s4 + 4*C*s3 + 3*D*s2 + 2*E*s + F
[3] as = 30*A*s4 + 20*B*s3 + 12*C*s2 + 6*D*s + 2*E
[4] js = 120*A*s3 + 60*B*s2 + 24*C*s + 6*D
[5] xe = A*e6 + B*e5 + C*e4 + D*e3 + E*e2 + F*e + G
[6] ve = 6*A*e5 + 5*B*e4 + 4*C*e3 + 3*D*e2 + 2*E*e + F
[7] ae = 30*A*e4 + 20*B*e3 + 12*C*e2 + 6*D*e + 2*E
[8] je = 120*A*e3 + 60*B*e2 + 24*C*e + 6*D
[1] xs = A*s6 + B*s5 + C*s4 + D*s3 + E*s2 + F*s + G
[2] vs = 6*A*s5 + 5*B*s4 + 4*C*s3 + 3*D*s2 + 2*E*s + F
[3] 0 = 30*A*s4 + 20*B*s3 + 12*C*s2 + 6*D*s + 2*E
[4] 0 = 120*A*s3 + 60*B*s2 + 24*C*s + 6*D
[5] xe = A*e6 + B*e5 + C*e4 + D*e3 + E*e2 + F*e + G
[6] ve = 6*A*e5 + 5*B*e4 + 4*C*e3 + 3*D*e2 + 2*E*e + F
[7] 0 = 30*A*e4 + 20*B*e3 + 12*C*e2 + 6*D*e + 2*E
[8] 0 = 120*A*e3 + 60*B*e2 + 24*C*e + 6*D
Ik doe achtereenvolgens [5]-[1]
xe-xs = A*(e6-s6) + B*(e5-s5) + C*(e4-s4) + D*(e3-s3)+ E*(e2-s2) + F*(e-s)
, dit delen door (e-s)
xe-xs/(e-s) = A*(e5+e4s+e3s2+e2s3+es4+s5) + B*(e4+e3s+e2s2+es3+s4) + C*(e3+e2s+es2+s3) + D*(e2+es+s2)+ E*(e+s) + F
, dan hiervan [2] aftrekken,
((xe-xs)/(e-s))-vs = A*(e5+e4s+e3s2+e2s3+es4-5s5) + B*(e4+e3s+e2s2+es3-4s4) + C*(e3+e2s+es2-3s3) + D*(e2+es-2s2) + E*(e-s)
((xe-xs)/(e-s))-vs = A*(e4+2e3s+3e2s2+4es3+5s4)*(e-s) + B*(e3+2e2s+3es2+4s3)*(e-s) + C*(e2+2es+3s2)*(e-s) + D*(e+2s)*(e-s) + E*(e-s)
, dan delen door (e-s)
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e4+2e3s+3e2s2+4es3+5s4) + B*(e3+2e2s+3es2+4s3) + C*(e2+2es+3s2) + D*(e+2s) + E
, hiervan [3]/2 aftrekken
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e4+2e3s+3e2s2+4es3+5s4) - A*15s4 + B*(e3+2e2s+3es2+4s3) -B*10s3 + C*(e2+2es+3s2) - C*6s2 + D*(e+2s) - D*3s
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e3+3e2s+6es2+10s3)*(e-s) + B*(e2+3es+6s2)*(e-s) + C*(e+3s)*(e-s) + D*(e-s)
, delen door (e-s)
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e3+3e2s+6es2+10s3) + B*(e2+3es+6s2) + C*(e+3s) + D
, hiervan [4]/6 aftrekken
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e3+3e2s+6es2+10s3)- A*20s3 + B*(e2+3es+6s2) - B*10s2 + C*(e+3s) - C*4s
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e2+4es+10s2)*(e-s) + B*(e+4s)*(e-s) + C*(e-s)
, dan delen door (e-s)
((xe-xs)/(e-s)4)-(vs/(e-s)3) = A*(e2+4es+10s2) + B*(e+4s) + C
, dan vermenigvuldigen met 2 en hiervan [8]-[4] hiervan aftrekken (0 = A*10*(e2+es+s2) + B*5*(e+s) + C*2)
(2*(xe-xs)/(e-s)4)-(2*vs/(e-s)3) = A*(2e2+8es+20s2) - A*10*(e2+es+s2) + B(2e+8s) - B*5*(e+s)
(2*(xe-xs)/(e-s)5)-(2*vs/(e-s)4) = -A*2*(4e + 5s) - B*3
de andere vergelijking met enkel A en B term is te vinden door (3*[8]-[4])-[7]-[3]-[4]
0 = A*(15e2-15s2) + B*(5e-5s) B = - A*(15e2-15s2)/ (5e-5s)
B = - A*3*(e+s)
Uit de twee vergelijkingen met enkel A en B kan je A en B afleiden :
A = (2*(xe-xs)/(e-s)6)-(2*vs/(e-s)5)
B = - A*3*(e+s)
Uit tussenliggende vergelijking met enkel A,B en C kan je C afleiden:
C = -A*5*(e2+es+s2) - B*5/2*(e+s)
De coëfficiënten D,E,F,G kan je dan halen uit de basisvergelijkingen [1] tot [4]
Bovenstaande werkt prima zolang de master startpositie (s) 0 is. Als ik die verschillend van 0 maak klopt het resultaat niet meer. Als ik de curves voor positie, snelheid, acceleratie en jerk bekijk in functie van masterpositie zou als ik de masterstartpositie verhoog, maar het verschil tussen master start en eindpositie hetzelfde houd, de curves enkel mogen verschuiven langs de master as, maar dit is niet het geval.
Maak ik toch ergens een fout in hoe ik de vergelijkingen omvorm?
De zesde orde polynoom stelt de positie van aan slave voor t.o.v. een master tijdens een beweging.
Master zal bewegen en de slavepositie is een functie van de masterpositie.
Snelheid, acceleratie en jerk van de beweging zijn afgeleiden van die positie.
Hierbij zijn :
s = masterpositie bij start
e = masterpositie bij het einde
xs = slavepositie bij start
xe = slavepositie bij einde
vs = slavesnelheid bij start
ve = slavesnelheid bij einde
as = slaveacceleratie bij start
ae = slaveacceleratie bij einde
js = slavejerk bij start
je = slavejerk bij einde
Vooraf gekend zijn e,s,xs,xe,vs.
Bovendien zijn de acceleraties en jerks bij start en einde 0.
[1] xs = A*s6 + B*s5 + C*s4 + D*s3 + E*s2 + F*s + G
[2] vs = 6*A*s5 + 5*B*s4 + 4*C*s3 + 3*D*s2 + 2*E*s + F
[3] as = 30*A*s4 + 20*B*s3 + 12*C*s2 + 6*D*s + 2*E
[4] js = 120*A*s3 + 60*B*s2 + 24*C*s + 6*D
[5] xe = A*e6 + B*e5 + C*e4 + D*e3 + E*e2 + F*e + G
[6] ve = 6*A*e5 + 5*B*e4 + 4*C*e3 + 3*D*e2 + 2*E*e + F
[7] ae = 30*A*e4 + 20*B*e3 + 12*C*e2 + 6*D*e + 2*E
[8] je = 120*A*e3 + 60*B*e2 + 24*C*e + 6*D
[1] xs = A*s6 + B*s5 + C*s4 + D*s3 + E*s2 + F*s + G
[2] vs = 6*A*s5 + 5*B*s4 + 4*C*s3 + 3*D*s2 + 2*E*s + F
[3] 0 = 30*A*s4 + 20*B*s3 + 12*C*s2 + 6*D*s + 2*E
[4] 0 = 120*A*s3 + 60*B*s2 + 24*C*s + 6*D
[5] xe = A*e6 + B*e5 + C*e4 + D*e3 + E*e2 + F*e + G
[6] ve = 6*A*e5 + 5*B*e4 + 4*C*e3 + 3*D*e2 + 2*E*e + F
[7] 0 = 30*A*e4 + 20*B*e3 + 12*C*e2 + 6*D*e + 2*E
[8] 0 = 120*A*e3 + 60*B*e2 + 24*C*e + 6*D
Ik doe achtereenvolgens [5]-[1]
xe-xs = A*(e6-s6) + B*(e5-s5) + C*(e4-s4) + D*(e3-s3)+ E*(e2-s2) + F*(e-s)
, dit delen door (e-s)
xe-xs/(e-s) = A*(e5+e4s+e3s2+e2s3+es4+s5) + B*(e4+e3s+e2s2+es3+s4) + C*(e3+e2s+es2+s3) + D*(e2+es+s2)+ E*(e+s) + F
, dan hiervan [2] aftrekken,
((xe-xs)/(e-s))-vs = A*(e5+e4s+e3s2+e2s3+es4-5s5) + B*(e4+e3s+e2s2+es3-4s4) + C*(e3+e2s+es2-3s3) + D*(e2+es-2s2) + E*(e-s)
((xe-xs)/(e-s))-vs = A*(e4+2e3s+3e2s2+4es3+5s4)*(e-s) + B*(e3+2e2s+3es2+4s3)*(e-s) + C*(e2+2es+3s2)*(e-s) + D*(e+2s)*(e-s) + E*(e-s)
, dan delen door (e-s)
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e4+2e3s+3e2s2+4es3+5s4) + B*(e3+2e2s+3es2+4s3) + C*(e2+2es+3s2) + D*(e+2s) + E
, hiervan [3]/2 aftrekken
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e4+2e3s+3e2s2+4es3+5s4) - A*15s4 + B*(e3+2e2s+3es2+4s3) -B*10s3 + C*(e2+2es+3s2) - C*6s2 + D*(e+2s) - D*3s
((xe-xs)/(e-s)2)-(vs/(e-s)) = A*(e3+3e2s+6es2+10s3)*(e-s) + B*(e2+3es+6s2)*(e-s) + C*(e+3s)*(e-s) + D*(e-s)
, delen door (e-s)
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e3+3e2s+6es2+10s3) + B*(e2+3es+6s2) + C*(e+3s) + D
, hiervan [4]/6 aftrekken
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e3+3e2s+6es2+10s3)- A*20s3 + B*(e2+3es+6s2) - B*10s2 + C*(e+3s) - C*4s
((xe-xs)/(e-s)3)-(vs/(e-s)2) = A*(e2+4es+10s2)*(e-s) + B*(e+4s)*(e-s) + C*(e-s)
, dan delen door (e-s)
((xe-xs)/(e-s)4)-(vs/(e-s)3) = A*(e2+4es+10s2) + B*(e+4s) + C
, dan vermenigvuldigen met 2 en hiervan [8]-[4] hiervan aftrekken (0 = A*10*(e2+es+s2) + B*5*(e+s) + C*2)
(2*(xe-xs)/(e-s)4)-(2*vs/(e-s)3) = A*(2e2+8es+20s2) - A*10*(e2+es+s2) + B(2e+8s) - B*5*(e+s)
(2*(xe-xs)/(e-s)5)-(2*vs/(e-s)4) = -A*2*(4e + 5s) - B*3
de andere vergelijking met enkel A en B term is te vinden door (3*[8]-[4])-[7]-[3]-[4]
0 = A*(15e2-15s2) + B*(5e-5s) B = - A*(15e2-15s2)/ (5e-5s)
B = - A*3*(e+s)
Uit de twee vergelijkingen met enkel A en B kan je A en B afleiden :
A = (2*(xe-xs)/(e-s)6)-(2*vs/(e-s)5)
B = - A*3*(e+s)
Uit tussenliggende vergelijking met enkel A,B en C kan je C afleiden:
C = -A*5*(e2+es+s2) - B*5/2*(e+s)
De coëfficiënten D,E,F,G kan je dan halen uit de basisvergelijkingen [1] tot [4]
Bovenstaande werkt prima zolang de master startpositie (s) 0 is. Als ik die verschillend van 0 maak klopt het resultaat niet meer. Als ik de curves voor positie, snelheid, acceleratie en jerk bekijk in functie van masterpositie zou als ik de masterstartpositie verhoog, maar het verschil tussen master start en eindpositie hetzelfde houd, de curves enkel mogen verschuiven langs de master as, maar dit is niet het geval.
Maak ik toch ergens een fout in hoe ik de vergelijkingen omvorm?