- Posts: 144
- Thank you received: 9
TCP 5-axis kinematics
- jsskangas
- Offline
- Premium Member
-
Less
More
9 years 1 month ago - 9 years 1 month ago #99346
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
Joint mode Can not be run with program or MDI.
Other vice could work.
Also not all functionality are available in joint mode and I think trajectory planner had some limitations in joint mode.
Other vice could work.
Also not all functionality are available in joint mode and I think trajectory planner had some limitations in joint mode.
Last edit: 9 years 1 month ago by jsskangas.
The following user(s) said Thank You: Shu
Please Log in or Create an account to join the conversation.
- dgarrett
- Offline
- Platinum Member
-
Less
More
- Posts: 492
- Thank you received: 297
9 years 1 month ago - 9 years 1 month ago #99458
by dgarrett
Replied by dgarrett on topic TCP 5-axis kinematics
Switching kinematics methods must be done in a way
that preserves all joint.N.motor-pos-cmd values in
order to avoid a bump (and a likely following
error for a servo system).
I've made an experimental branch using a simple XYZ
kins module (altkins.c) to demonstrate switching
kinematics via a halpin (which could be controlled
by a user M command).
The branch dgarr/alternate_kins is based on the
current master branch with joints-axes updates.
The buildbot will make debs for this 'scratch'
branch for a limited number of days.
Ref: buildbot.linuxcnc.org
The branch can be built from git:
$ cd your_git_top_dir_for_LinuxCNC
$ git fetch
$ git co dgarr/alternate_kins
$ source scripts/rip-environment
$ cd src; make && sudo make setuid
$ cd ../configs/sim/axis/
$ linuxcnc altkins.ini
It seems to work and may serve as a starting point
for more complex kinematics.
(i have not tested on hardware)
Branch ref:
github.com/LinuxCNC/linuxcnc/commits/dgarr/alternate_kins
Usage info:
github.com/LinuxCNC/linuxcnc/blob/dgarr/...sim/axis/altkins.txt
that preserves all joint.N.motor-pos-cmd values in
order to avoid a bump (and a likely following
error for a servo system).
I've made an experimental branch using a simple XYZ
kins module (altkins.c) to demonstrate switching
kinematics via a halpin (which could be controlled
by a user M command).
The branch dgarr/alternate_kins is based on the
current master branch with joints-axes updates.
The buildbot will make debs for this 'scratch'
branch for a limited number of days.
Ref: buildbot.linuxcnc.org
The branch can be built from git:
$ cd your_git_top_dir_for_LinuxCNC
$ git fetch
$ git co dgarr/alternate_kins
$ source scripts/rip-environment
$ cd src; make && sudo make setuid
$ cd ../configs/sim/axis/
$ linuxcnc altkins.ini
It seems to work and may serve as a starting point
for more complex kinematics.
(i have not tested on hardware)
Branch ref:
github.com/LinuxCNC/linuxcnc/commits/dgarr/alternate_kins
Usage info:
github.com/LinuxCNC/linuxcnc/blob/dgarr/...sim/axis/altkins.txt
Last edit: 9 years 1 month ago by dgarrett. Reason: forgot rip-environment
The following user(s) said Thank You: Shu
Please Log in or Create an account to join the conversation.
- jsskangas
- Offline
- Premium Member
-
Less
More
- Posts: 144
- Thank you received: 9
9 years 2 days ago - 9 years 2 days ago #101022
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
dgarrett: thanks, I Will look will your method make any difference.
[strike]You have used two different kinematic "calls" and change between them.
Mine is done inside one.[/strike]
I was too hasty....
I did look your solution more closely, this need more thinking....
I am still figuring out how your position correcting method works, but your method seems quite promising.
I'll get back when I have tried to apply this to 5-axis kinematics.
[strike]You have used two different kinematic "calls" and change between them.
Mine is done inside one.[/strike]
I was too hasty....
I did look your solution more closely, this need more thinking....
I am still figuring out how your position correcting method works, but your method seems quite promising.
I'll get back when I have tried to apply this to 5-axis kinematics.
Last edit: 9 years 2 days ago by jsskangas.
Please Log in or Create an account to join the conversation.
- cts1085
- Offline
- Senior Member
-
Less
More
- Posts: 50
- Thank you received: 1
9 years 1 day ago #101059
by cts1085
Replied by cts1085 on topic TCP 5-axis kinematics
This is of interest for me as well. I have a 4 axis mill/lathe (XZAB) and have the kinematics setup for TCP and for 2 different "heads" - I have a spindle at 0-degrees and a probe at 90-degrees on the "B" axis. I needed to implement the "W" axis to smooth the transition from one head to the other and when doing tool changes (the offsets change and the point then changes). I don't have this perfect as i still occasionally get following errors if i don't "back out" of one mode/tool before turning on a new mode/tool. For now my solution is to have the TLO mirror the "W" axis and when there is a mode/tool change i G0 W0 which then slowly engages the new mode. Let me know if you want details on the kinematics i am using (Note: The "Mode" is set with a particular tool number - T 100 is the probe - anything else is a tool in the spindle)
Please Log in or Create an account to join the conversation.
- jsskangas
- Offline
- Premium Member
-
Less
More
- Posts: 144
- Thank you received: 9
8 years 10 months ago - 8 years 10 months ago #102774
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
I made small progress last night.
I combined dgarrett's and Rudy's work related to kinematics.
I used Ruby's kinematics and Garrett's kinematic change method.
It works perfectly(switching between kinematics) when rotary axes are at 0 position.
Also it does not jump during kinematic change when rotary axes are rotated before transition.
But it loses it position.
This is not an error it is a mathematical problem that can be solved.
B and C axis positions need to be taken account at forward kinematics during change.
I will look in to this, but my time is limited so progress will be some what slow.
I attached latest files for testing and further improvement.
I combined dgarrett's and Rudy's work related to kinematics.
I used Ruby's kinematics and Garrett's kinematic change method.
It works perfectly(switching between kinematics) when rotary axes are at 0 position.
Also it does not jump during kinematic change when rotary axes are rotated before transition.
But it loses it position.
This is not an error it is a mathematical problem that can be solved.
B and C axis positions need to be taken account at forward kinematics during change.
I will look in to this, but my time is limited so progress will be some what slow.
I attached latest files for testing and further improvement.
Last edit: 8 years 10 months ago by jsskangas.
Please Log in or Create an account to join the conversation.
- jsskangas
- Offline
- Premium Member
-
Less
More
- Posts: 144
- Thank you received: 9
8 years 10 months ago - 8 years 10 months ago #102793
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
Small info about what should happen:
now
NC-code - axis values after command
G0 X0 Y30 Z0. - X=0.0 Y=30.0 Z0.0 B0.0 C0.0
C45. - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M128.(TCP on) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M129 .(TCP off) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
TCP is turned on (M128) at machine coordinate location X=0.0 Y=30.0 Z0.0 B0.0 C45.0.
but we want to transfer from machine- to rotated coordinate system.
If our tool stays at same position, it will be located on rotated coordinate system at X=-21.21 Y=21.21 Z0.0 B0.0 C45.0
This is cause rotating coordinate system has rotated 45 degree and tool has stayed in place.
it should behave like this
NC-code - axis values after command
G0 X0 Y30 Z0. - X=0.0 Y=30.0 Z0.0 B0.0 C0.0
C45. - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M128.(TCP on) - X=21.21 Y=21.21 Z0.0 B0.0 C45.0
M129 .(TCP off) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
So I need to update my axis position to X=21.21 Y=21.21... but still maintain my current joint position.
Transformation back to machine coordinate system(M129), is to update current joint position to axis position.
Hopefully this will clarify what I'm trying to accomplish.
now
NC-code - axis values after command
G0 X0 Y30 Z0. - X=0.0 Y=30.0 Z0.0 B0.0 C0.0
C45. - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M128.(TCP on) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M129 .(TCP off) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
TCP is turned on (M128) at machine coordinate location X=0.0 Y=30.0 Z0.0 B0.0 C45.0.
but we want to transfer from machine- to rotated coordinate system.
If our tool stays at same position, it will be located on rotated coordinate system at X=-21.21 Y=21.21 Z0.0 B0.0 C45.0
This is cause rotating coordinate system has rotated 45 degree and tool has stayed in place.
it should behave like this
NC-code - axis values after command
G0 X0 Y30 Z0. - X=0.0 Y=30.0 Z0.0 B0.0 C0.0
C45. - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
M128.(TCP on) - X=21.21 Y=21.21 Z0.0 B0.0 C45.0
M129 .(TCP off) - X=0.0 Y=30.0 Z0.0 B0.0 C45.0
So I need to update my axis position to X=21.21 Y=21.21... but still maintain my current joint position.
Transformation back to machine coordinate system(M129), is to update current joint position to axis position.
Hopefully this will clarify what I'm trying to accomplish.
Last edit: 8 years 10 months ago by jsskangas.
Please Log in or Create an account to join the conversation.
Time to create page: 0.222 seconds