Cinématique Inverse

More
09 Jun 2014 22:52 #47816 by Etiens
Cinématique Inverse was created by Etiens
Bonjour à tous,

J'essais d'implémenter ma propre cinématique non linéaire, type tripod. Cependant j'ai quelques difficultés d'écriture.

Premièrement, peut on avoir un modèle direct ne correspondant pas au modèle inverse?
C'est a dire travailler en mode manuel avec le modèle direct, et bouger la pointe outil avec le modèle inverse? J'ai des doutes sur l'origine de mon problème.

Cela me permettra de déterminer si je dois faire le modèle direct de ma cinématique non-triviale?

Please Log in or Create an account to join the conversation.

More
10 Jun 2014 07:15 #47828 by andypugh
Replied by andypugh on topic Cinématique Inverse
(Pardonnez moi pour ne pas répondre en français, je peux lire français OK, mais pas écrire ou parler.)

The Inverse Kinematics are the important one, they convert XYZ to actuator positions. An Inverse-only kinematics is OK, but forward-only is not usable.

It is possible that the English docs ( www.linuxcnc.org/docs/html/motion/kinematics.html ) contain some information missing from the French docs ( www.linuxcnc.org/docs/html/motion/kinematics_fr.html ) though they do look very similar.

You could also try reading this page through Google Translate: wiki.linuxcnc.org/cgi-bin/wiki.pl?Kinematics

Please Log in or Create an account to join the conversation.

More
10 Jun 2014 19:49 #47848 by Etiens
Replied by Etiens on topic Cinématique Inverse
ok no problem, thank for your answer.

But I think I find why I have a problem when I switch on the" Toggle Power Machine". Because there are an " Error with joint[0] ".

I think, that at the initial state, the joint is not equal to zero. I tested it.
Is it a problem? How other non-linear kinematics do they do?

Please Log in or Create an account to join the conversation.

More
10 Jun 2014 23:54 #47855 by andypugh
Replied by andypugh on topic Cinématique Inverse
Have you specified inverse-only kinematics?

If the system is expecting both forward and reverse kinematics, if one is missing then there will be an instant following error.

Your kinematics_type function might want to return KINEMATICS_INVERSE_ONLY
(as far as I can tell the only place the enumeration is visible in the header file)
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...d6a7039117ea0d6ddbae

Please Log in or Create an account to join the conversation.

More
11 Jun 2014 15:31 - 11 Jun 2014 17:21 #47879 by Etiens
Replied by Etiens on topic Cinématique Inverse
It's interesting. So I set "return KINEMATICS_BOTH;" to have forward and inverse kenematics, but differents.

A trivial kinematics works well.
I tried a simple example in changing a simple trivkins. This is what I did :

Forward : "pos->tran.x = joint[0]; " ,so no modification.
Inverse : " joint[0]= 2*pos->tran.x; "

It result this error :

"joint 0 following error"

I really don't see the problem ! May be they are some rules for writing.
Even if tried my code in C, when I put it in linuxcnc it doesn't work...
Last edit: 11 Jun 2014 17:21 by Etiens.

Please Log in or Create an account to join the conversation.

More
11 Jun 2014 17:40 #47885 by andypugh
Replied by andypugh on topic Cinématique Inverse

Etiens wrote: Forward : "pos->tran.x = joint[0]; " ,so no modification.
Inverse : " joint[0]= 2*pos->tran.x; "

It result this error :

"joint 0 following error"


Yes, it would. The point is that if you have KINEMATICS_BOTH then the forward and reverse kinematics have to be consistent.

In your case the motion controller might see a command to send the X axis to 25mm. (G1 X25)
Then the kinematics is used and the command is to move Joint 0 to 50mm.
Then the system reads the joint position feedback (encoder or stepper internal feedback), and reads 50mm.
Then it runs the forward kins X = 50mm.... So, command X = 25mm, feedback X = 50mm, => Joint Following Error.

If your kins was
pos->tran.x = joint[0] / 2;
joint[0]= *pos->tran.x * 2;

Then it would be consistent and work.

Please Log in or Create an account to join the conversation.

More
11 Jun 2014 20:49 - 11 Jun 2014 21:08 #47902 by Etiens
Replied by Etiens on topic Cinématique Inverse
ok I understand.

I tried it and it doesn't work.

But even if I have "KINEMATIC_INVERSE_ONLY" mode, with immediate homing I have the same error ("joint 0 following error").

It works with trivial kinematics. But if I do a little modification I have this error again !!

What do you think?

When I increase "FERROR" and "MIN_ERROR" its work for a while...
Last edit: 11 Jun 2014 21:08 by Etiens.

Please Log in or Create an account to join the conversation.

More
12 Jun 2014 03:20 #47920 by ftkalcevic
Replied by ftkalcevic on topic Cinématique Inverse
When I was developing my kins module, I put print statements in the forward and inverse functions. Just remember, you can't print floating point numbers in real time mode (hint- divide by integer 1000, and show the quotent and remainder*1000 eg %d.%03d)

Please Log in or Create an account to join the conversation.

Moderators: darty367
Time to create page: 0.095 seconds
Powered by Kunena Forum