- Posts: 4793
- Thank you received: 1481
TCP 5-axis kinematics
- Todd Zuercher
- Offline
- Platinum Member
-
Less
More
9 years 11 months ago #82669
by Todd Zuercher
Replied by Todd Zuercher on topic TCP 5-axis kinematics
I really don't know. And I'm not sure anyone would know all the possible ramifications. Easier just to try it and see what happens.
The following user(s) said Thank You: aaron
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 1 month ago #99153
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
Finally I had time to test 2.8 and this really solves my problem.
I compiled my own kinematic module that can change between to different kinematic model.
other one is just straight forwad: Joint_0 <-- X-axis.... and so on.
Other mode has rotary compensation.
I made M128 and M129 commands to turn on/off this HAL pin.
It works great at the moment, as rotary axis are at zero position at transition moment.
Next I will write code to change position when mode is changed.
So that current position is always read from current joint positions.
This will not make movement in machine, tool will stay at it current location,
but coordinates will jump.
This is do the fact that we are changing coordinate system.
I will send some youtube video as this progress, now im testing this wit vismac simulation.
I compiled my own kinematic module that can change between to different kinematic model.
other one is just straight forwad: Joint_0 <-- X-axis.... and so on.
Other mode has rotary compensation.
I made M128 and M129 commands to turn on/off this HAL pin.
It works great at the moment, as rotary axis are at zero position at transition moment.
Next I will write code to change position when mode is changed.
So that current position is always read from current joint positions.
This will not make movement in machine, tool will stay at it current location,
but coordinates will jump.
This is do the fact that we are changing coordinate system.
I will send some youtube video as this progress, now im testing this wit vismac simulation.
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 1 month ago #99174
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
Ok
One more thing , pos->tran.x: does these update current position in upsteam to linuxcnc?
My idea is to run machine in two different modes, normal mode where joint is directly coupled with axis.
joint_0 is X axis so on.
Other mode is TCP or RTCP this is Tool center point control or rotary tool center point control. both are same.
Linux cnc this is called kinematics, more precisely inverse kinematics.
I need to run two different kinematics model inside inverse kinematics of linuxcnc.
This works now.
But I want to use my machine certain way, roughing and 3+2 indexin work I dont want rotary axis compensations to work.
In 5 axis work, I want to preposition tool near workpiece before turning on TCP .
At this point I would like to read my current position from joints, and calculate my current tool position in rotated coordinate system.
This far I have managed to make this.
But then I would like to update this position to my current position.
Would it be just update these values to pos->tran.x pos->tran.y and pos->tran.z ?
What i hope it would do then is that tool wont jump.
Also this would be done other way round when TCP is turned off.
Someone who know about more could help???
One more thing , pos->tran.x: does these update current position in upsteam to linuxcnc?
My idea is to run machine in two different modes, normal mode where joint is directly coupled with axis.
joint_0 is X axis so on.
Other mode is TCP or RTCP this is Tool center point control or rotary tool center point control. both are same.
Linux cnc this is called kinematics, more precisely inverse kinematics.
I need to run two different kinematics model inside inverse kinematics of linuxcnc.
This works now.
But I want to use my machine certain way, roughing and 3+2 indexin work I dont want rotary axis compensations to work.
In 5 axis work, I want to preposition tool near workpiece before turning on TCP .
At this point I would like to read my current position from joints, and calculate my current tool position in rotated coordinate system.
This far I have managed to make this.
But then I would like to update this position to my current position.
Would it be just update these values to pos->tran.x pos->tran.y and pos->tran.z ?
What i hope it would do then is that tool wont jump.
Also this would be done other way round when TCP is turned off.
Someone who know about more could help???
Please Log in or Create an account to join the conversation.
- Shu
- Offline
- Senior Member
-
Less
More
- Posts: 61
- Thank you received: 1
9 years 1 month ago #99300
by Shu
Replied by Shu on topic TCP 5-axis kinematics
Sounds interesting. Can I take a look at your full machine config (hal, vismach, kins)?
I use different .ini files for different kinematics but haven't found a way to switch during runtime.
I use different .ini files for different kinematics but haven't found a way to switch during runtime.
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 1 month ago #99316
by jsskangas
Replied by jsskangas on topic TCP 5-axis kinematics
Hello
Im running this just as idea of functionality level.
Attached is xyzbc-trt-kins.c that is modified kinematics for xyzbc vismach simulation delivered with 2.8 pre.
M128 and M129 commands just activates and deactivated HAL pin that controls simple if/else function to select between
two different kinematics.
Normal kinematic mode is just independent axis, xyzbc, each represented by its own joint.
At TCP active, coordinate system rotates with table, and is fixed to table at B0. C0. position.
This is easiest way to make 5-axis kinematics, al so it has positive indirect implications like:
- correct feed rate when running full 5 axis.
- Supported by most CAM systems ( Special recommendation: NX CAM)
- easier hand programming possibility
At the moment it works well when rotary axes are at 0 position.
But will cause a sudden jump in position, if activated when rotary axis are not in 0 position.
Well its better than nothing.
To develop it further, transition between TCP ON/OFF, need to be corrected.
There is two possibilities (at my current knowledge) one is to calculate current position in rotated mode and update that upwards
when making a switch between modes.
Other option could be that there are duplicate axis that are run parallel Xf, Yf, Zf and Xr, Yr, Zr. (this I think is possible, i have seen UVW axis that works )
Nf axes been Fixed ones, meaning direct coupling joint to axis.
Nr been rotating.
Kinematics would just switch between these two axis system.
Ok, this last one just an idea, I have not even thought carefully could it be even possible to implement in linuxcnc.
M128.h and M129.h should have no .h at end, rename to M128 and M129 add them to linuxcnc/ncfiles location,
after that you should be able to command those from MDI or program.
I'm designing compressor wheels and other 5-axis parts, but currently im limited to make these at loan machines.
time with those are limited and expensive.
I have my on 5-axis machine, with Nikken 5-ax table, I would really liked to use this machine to produce these parts.
I could run these, but I need two different linux setup and two different postprosessors to make this possible.
Post processor is not problem I make those for living, but only for NX CAM.
I have already thought to run machine with two different setups, one with kinematic for TCP and one with axis per joint.
But Im too lazy to restart system for 5-axis and then back to 3+2 mode.
Im running this just as idea of functionality level.
Attached is xyzbc-trt-kins.c that is modified kinematics for xyzbc vismach simulation delivered with 2.8 pre.
M128 and M129 commands just activates and deactivated HAL pin that controls simple if/else function to select between
two different kinematics.
Normal kinematic mode is just independent axis, xyzbc, each represented by its own joint.
At TCP active, coordinate system rotates with table, and is fixed to table at B0. C0. position.
This is easiest way to make 5-axis kinematics, al so it has positive indirect implications like:
- correct feed rate when running full 5 axis.
- Supported by most CAM systems ( Special recommendation: NX CAM)
- easier hand programming possibility
At the moment it works well when rotary axes are at 0 position.
But will cause a sudden jump in position, if activated when rotary axis are not in 0 position.
Well its better than nothing.
To develop it further, transition between TCP ON/OFF, need to be corrected.
There is two possibilities (at my current knowledge) one is to calculate current position in rotated mode and update that upwards
when making a switch between modes.
Other option could be that there are duplicate axis that are run parallel Xf, Yf, Zf and Xr, Yr, Zr. (this I think is possible, i have seen UVW axis that works )
Nf axes been Fixed ones, meaning direct coupling joint to axis.
Nr been rotating.
Kinematics would just switch between these two axis system.
Ok, this last one just an idea, I have not even thought carefully could it be even possible to implement in linuxcnc.
M128.h and M129.h should have no .h at end, rename to M128 and M129 add them to linuxcnc/ncfiles location,
after that you should be able to command those from MDI or program.
I'm designing compressor wheels and other 5-axis parts, but currently im limited to make these at loan machines.
time with those are limited and expensive.
I have my on 5-axis machine, with Nikken 5-ax table, I would really liked to use this machine to produce these parts.
I could run these, but I need two different linux setup and two different postprosessors to make this possible.
Post processor is not problem I make those for living, but only for NX CAM.
I have already thought to run machine with two different setups, one with kinematic for TCP and one with axis per joint.
But Im too lazy to restart system for 5-axis and then back to 3+2 mode.
Please Log in or Create an account to join the conversation.
- Shu
- Offline
- Senior Member
-
Less
More
- Posts: 61
- Thank you received: 1
9 years 1 month ago #99332
by Shu
Replied by Shu on topic TCP 5-axis kinematics
I would investigate what happens if you press $ in axis to switch between world and joint mode. Then remap that to m128 if possible. Keep us updated!
Please Log in or Create an account to join the conversation.
Time to create page: 0.327 seconds