Ahoj k,k píše:Vzhladom na to, ze si EMC skoro stale kompilujem z najnovsich zdrojakov, je pre mna bezproblemove si akekolvek korekcie doprogramovat do vlastnej kinematiky.
Pokial ide o to prelikovanie cez HAL .. neskusal som to .. nebolo kedy.
Ak niekto nutne tuto vec potrebuje, tak radsej nacrtnem sposob ako si napise vlastnu kinematiku. Prva vec je aby ste zvladli kompilaciu EMC. Navody priamo na linuxcnc.org
Teraz ku vlastnej kinematike:
Na zaciatok si v subore definicie svojeho stroja zmente trivkins na "rotatekins" .. ale pozor .. vznikne niekolko veci ktore pri trivkins neexistuju a pri rotatekins ano .. (resp. pri akejkolvek inej kinematike ktora nie je identicka .. co je pripad len trivkins). Musite dokladne pochopit axis a jeho prepinanie (menu View -> joint mode/ World mode) aby ste vedeli kedy a preco vam jogguje len jeden motor (joint) a kedy sa jogguje s kinematikou (axe). Dalej upozornim, ze rotatekins preto aby bezala potrebuje prv ako sa prepnete do rezimu world mode nahomovat vsetky suradnice.
kedze mne uteka stol len v jednej suradnici, a rotatekins pracuje s oboma, tak potrebujeme malicku zmenu:
Teraz kusok kodu z rotatekins.c :
dopredna transformacia jae takato:
pos->tran.x = joints[0] * cos(c_rad) - joints[1] * sin(c_rad);
pos->tran.y = joints[0] * sin(c_rad) + joints[1] * cos(c_rad);
pos->tran.z = joints[2];
inverzna:
joints[0] = pos->tran.x * cos(c_rad) - pos->tran.y * sin(c_rad);
joints[1] = pos->tran.x * sin(c_rad) + pos->tran.y * cos(c_rad);
joints[2] = pos->tran.z;
V principe ak viem, ze mi stol uteka o 0.5 stupna pre os X staci zmenit, obe transformacie takto:
dopredna:
c_rad = 0.5 *M_PI/180;
pos->tran.x = joints[0] * cos(c_rad) - joints[1] * sin(c_rad);
pos->tran.y = joints[1];
inverzna:
c_rad = -0.5 *M_PI/180;
joints[0] = pos->tran.x * cos(c_rad) - pos->tran.y * sin(c_rad);
joints[1] = pos->tran.y;
Prekompilujem, spustim, nahomujem, prepnem do world suradnic a ked joggujem x, y, tak fyzicka os x (joint[0]) dostava pohyb podla x aj y suradnice. Y os ostava priamo zviazana s joint[1].
Na svojom stroji pouzivam upravenu rotatekins uz dlhsi cas, vyhodne prave pri upnuti obrobkov nie rovnobezne so suradnicovym systemom stroja.
myslim, ze nemas uplne pravdu. Transformace v rotatekins.c plati za predpokladu, ze osy jsou na sebe kolme a pootocene o nejaky uhel. Jestlize mi utika jenom jedna osa pak neplati kolmost a nemuzu pouze jednu cast transformace skrtnout. Navic ta cast se sinusem je zbytecna protoze druha osa neni pootocena. Nebo se pletu?
Cemu, ale nerozumim a rad bych si nechal od zasvecenejsich vysvetlit je inverzni funkce. Jak to ze je az na prehozeni axis a joints uplne stejna? Pochopil bych to trivkins tam se nic netransformuje, ale u rotace to prece nejde jen tak jednoduse zamenit.
Martin