TCP 5-axis kinematics
1) Could not find a common/accepted/standard set of
gcode naming rules so the choice would just start a
debate and further delay implementation.
2) There are not many active developers that have
worked on the interpreter or task code in the last
several years to advise, help, or review code.
I have a feeling that this is something that could be introduced once a consensus has been reached about what is required. There would be certain advantages to switching modes inside the interpreter, not least of which would be forcing the mode-switch to be queue-busting. It would also mean that kins modules would not need to be switch-aware, they would just be called differently when the mode was switched.
Adding new G-codes isn't all that hard, but additions need to be made in several files.
github.com/andypugh/linuxcnc/commit/d1b5...0a1e060bcc920c477d50
Is a useful example as it adds a new G-code that does the same thing as an existing G-code.
Scrolling past the documentation additions, changes need to be made in
interp_array.cc (change a -1 to a 0 to enable the code)
possibly interp_check.cc
then the actual behaviour in interp_convert.cc. For a mode-switch there would (probably) also need to be a new NML message created.
Moving joints with G-code makes some sort of sense with a typical 5-axis cartesian machine. It isn't really a very elegant thing to do with a serial robot, though. I guess there would be a hard mapping of X to 0, Y to 1. And we have spent the last several years trying to get LinuxCNC away from that.
Please Log in or Create an account to join the conversation.
not least of which would be forcing the mode-switch
to be queue-busting.
The implementation has to be queue-busting.
The method now implemented in dgarr/s_kins uses a remap
(M428,M429) to invoke a subroutine and necessarily
includes a sync (queue buster). The m codes are
similar to Heidenhain (as i understand at least) but
the flexibility of remap will allow a user to implement
gcode akin to other conventions should they choose.
Please Log in or Create an account to join the conversation.
"Moving joints with G-code makes some sort of sense with a typical 5-axis cartesian machine. It isn't really a very elegant thing to do with a serial robot, though. I guess there would be a hard mapping of X to 0, Y to 1. And we have spent the last several years trying to get LinuxCNC away from that."
CNC machine kinematics are pit different than robot kinematic.
I do agree that so called joint mode or hard mapped 0->X so on is not practical for 6 axis robots.
But more and more multiaxis machines gets retrofitted and build using Linuxcnc.
These machines operate in different level of kinematics.
5-axis mill with AC table need to work 2 different modes to be any practical use.
First one is hard mapped mode: 0->X, 1->Y...
This is where you do most of your work setting up tools, measuring part, setting offsets and of course machining 3+2 indexing work.
Second one is TCP-mode.
Basically it is 5 axis rotating coordinate system fixed to table at table 0 position
and is mandatory for full 5-axis work.
There is also one more deeper level. lets talk about non-orthogonal machine like millturn where Y axis is 60 degree from X-axis.
This thing behaves pit more like robot, joint mode is used for homing.
After that all code is run trough kinematics that compensate this 30 degree offset of axis to create true Y axis movement by compensating with X axis.
But these machines as well are started with TCP off.
You still have two kinematic modes what both are used in machining.
To make story short, robot are mainly used with TCP mode, I nether see any point using it in joint mode.
Multi axis CNC machines in other hand do work in two different kinematic modes: hard axis to joint mode and TCP (tool center point).
I would not like to see that Linuxcnc would be developed only robots in mind.
I would like to see that in development of machining side would be though as well.
We are getting more and more advanced machines retrofitted with linuxcnc.
It's not far, this update and linuxcnc can support these complex machines.
Best regards
Jussi Kangas
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
- plopes9000
- Offline
- Premium Member
- Posts: 87
- Thank you received: 18
why did you have to add the component "axiszeropulserotposition.comp"?
I couldn’t get a zero pulse from the servo drive, only a counter. That component gives me a zero pulse based on the counter.
Please Log in or Create an account to join the conversation.
another question:
is the patch you have posted somehow executable? Because i dont understand what has been added/removed.
for example:
diff --git a/src/Makefile b/src/Makefile
index 82786e4..f7d73ac 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -940,6 +940,9 @@ hal_lib-objs := hal/hal_lib.o $(MATHSTUB)
obj-m += trivkins.o
trivkins-objs := emc/kinematics/trivkins.o
+obj-m += switchKins.o
+switchKins-objs := emc/kinematics/switchKins.o
+
obj-m += 5axiskins.o
5axiskins-objs := emc/kinematics/5axiskins.o
@@ -1098,6 +1101,7 @@ endif
../rtlib/hal_lib$(MODULE_EXT): $(addprefix objects/rt,$(hal_lib-objs))
../rtlib/motmod$(MODULE_EXT): $(addprefix objects/rt,$(motmod-objs))
../rtlib/trivkins$(MODULE_EXT): $(addprefix objects/rt,$(trivkins-objs))
+../rtlib/switchKins$(MODULE_EXT): $(addprefix objects/rt,$(switchKins-objs))
../rtlib/5axiskins$(MODULE_EXT): $(addprefix objects/rt,$(5axiskins-objs))
../rtlib/maxkins$(MODULE_EXT): $(addprefix objects/rt,$(maxkins-objs))
../rtlib/rotatekins$(MODULE_EXT): $(addprefix objects/rt,$(rotatekins-objs))
do the changes have to be in order?
Please Log in or Create an account to join the conversation.
- plopes9000
- Offline
- Premium Member
- Posts: 87
- Thank you received: 18
To be honest would need to google to tell you how to do it automatically - git-scm.com/docs/git-apply.
Generally the syntax uses „-„ and „—„to represent removing lines from the original file and „+“ and „++“ to represent adding lines where the lines were removed. Location in the file is represented with a „@„ or „@@„.
So for example, @@ -940,6 +940,9 @@ would mean replace the lines 940..945 with the code that follows and now representing lines 940..948.
So something along these lines.
A google search gave me the link www.oreilly.com/library/view/git-pocket-...1449327507/ch11.html.
Yes I think the changes must be applied in that sequence for each file. The order of the files is not relevant.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
At least this works without a problem. Now i need to change my pp to output g55.4 and g55.5
i am curious if copying the changed files and overwriting the original files would work.
i would be glad if someone could post his changed files so i could try to overwrite my files and see if it then works without a problem.
Please Log in or Create an account to join the conversation.