Kinematics switch

More
7 years 2 months ago #143319 by m.bofi
Kinematics switch was created by m.bofi
Hello everyone,

I have a 5dof robot (5 revolute joints) set up on LinuxCNC(custom kinematics, hal...) and what i'm looking for is a way to include joint movement on world mode. Now with joints_axis in master branch i think it is more viable than before.

The way i think it is to make a switch in kinematics setup with a hal pin maybe. I have read "TCP 5-axis kinematics" topic which is quite close. It even has insight on G12.1 command which is implemented on a testing branch and seems pretty promising. Or is there an actual G code command that can directly affect a spedific joint rather than moving on an axis?

Please Log in to join the conversation.

More
7 years 2 months ago #143498 by andypugh
Replied by andypugh on topic Kinematics switch
G12.1 (and G12) is unallocated in LinuxCNC, so if you saw a G12 then it was a custom G-code.

Where did you see G12.1 mentioned?

Please Log in to join the conversation.

More
7 years 2 months ago #143533 by m.bofi
Replied by m.bofi on topic Kinematics switch
In the topic TCP 5-axis kinematics topic users r.lol and automata mentions the Switch Kins branch and even user pl7i92 in the topic Kinematics Module for ijk Gcode mentions it too. But im not sure how to use it correctly and even if it is applicable in my case. Any thoughts?

Please Log in to join the conversation.

More
7 years 2 months ago #143547 by andypugh
Replied by andypugh on topic Kinematics switch
G12 is not present in master:
github.com/LinuxCNC/linuxcnc/blob/master.../interp_array.cc#L28

There was mention of a switchkins branch which added a G12.1 (why not G12?) but I don't see that in the LinuxCNC repository. it seems to only exist here:
github.com/rushabhGH/linuxcnc/tree/switchKins
And that does, indeed, have G12 and G12.1 as valid codes:
github.com/rushabhGH/linuxcnc/blob/switc.../interp_array.cc#L84

I am unsure what the kinematics switch in that commit does (I didn't see any documentation in the commits). It appears to create G-codes and NML messages to switch between kinematics types, but also appears to have HAL pins to change other (or the same?) parameters.

I think it is reasonably easy to create a HAL pin linked to a variable in a kinematics module, and it is also fairly easy to set the value of a HAL pin from a custom M-code. I am thus unclear what the switchkins experimental branch is for, but there is certainly a significant amount of work that has gone in to it.

Please Log in to join the conversation.

More
7 years 2 months ago #143596 by m.bofi
Replied by m.bofi on topic Kinematics switch
What i had in mind was to create a custome M-code command which simply sets the pin for the the joint motor to the appropriate value. However i noticed this "Make sure the parallel port pin is not connected to anything in a HAL file." in custom m-code and my plan failed as of course these parralel port pins are present in the HAL file.

Please Log in to join the conversation.

More
7 years 2 months ago #143598 by andypugh
Replied by andypugh on topic Kinematics switch

m.bofi wrote: What i had in mind was to create a custome M-code command which simply sets the pin for the the joint motor to the appropriate value. However i noticed this "Make sure the parallel port pin is not connected to anything in a HAL file." in custom m-code and my plan failed as of course these parralel port pins are present in the HAL file.


One solution would be to use a mux2 (probably mux_generic to get a float version) for each joint and then switch between alternative inputs.

But doing it in the kins module is probably easier. The kins module can have a normal / joint pin, and could even handle a slow transition between the commands to avoid following errors. But be careful about that, because it does entail uncommanded joint moves.

Please Log in to join the conversation.

More
7 years 1 month ago #143891 by m.bofi
Replied by m.bofi on topic Kinematics switch
Hmm, now we are going to uncharted water. What i really wanted was to have a single program in g-code (with some M comands probably) that can integrate in world mode everything so the user can just create a single program. Straight from the kinematics module how?

Please Log in to join the conversation.

More
7 years 1 month ago #143893 by andypugh
Replied by andypugh on topic Kinematics switch
The kinematics module _only_ calculates joint from coordinate and coordinate from joint transforms.

The G-code words that correspond to each coordinate are hard-coded elsewhere.

I can see an argument for the creation of extra G-codes for joint-based motions. Maybe G0.1 Pn and G1.1 Pn where n is the joint number.

I don't think it would be easy as a remap, though unless there is a way to call the forward kinematics from Python.

You can generally _jog_ in joint mode, the Axis GUI, for example, toggles to joint mode when you press the $ key.

Please Log in to join the conversation.

More
7 years 1 month ago #144333 by m.bofi
Replied by m.bofi on topic Kinematics switch
Thanks for the help again. I thought of the $ key (i use the Axs GUI as you mentioned) but i wanted to make it easier for the user that wanted to move a specific joint inbetween his other commands and make it possible with one pogram. Right now he has to make 2 programs, one before the jog, run it, press the $ key, jog, press $ again and run the second program.

Please Log in to join the conversation.

More
7 years 1 month ago #144761 by andypugh
Replied by andypugh on topic Kinematics switch
Why can't he jog in world mode between the two programs?

Please Log in to join the conversation.

Time to create page: 0.103 seconds
Powered by Kunena Forum