Compensating for mechanically coupled axes
11 Jan 2018 17:01 #104296
by Cpk_Rbt
Compensating for mechanically coupled axes was created by Cpk_Rbt
2 axes on our machine are mechanically coupled, when one axis moves, the other axis also moves (at the gearing, not at the motor, so the position feedback is wrong). The movement is 1:1. Independent axis moves 30 degrees, dependent axis moves -30 degrees.
We are considering ways to solve this, and have a rough concept but wanted to get some more feedback on the best way to go about this. Basically, we're thinking if we hook up the axis position command output pin to something else before connecting to the drive command input pin, we can add/subtract the proper amount to the dependent axis's position.
I don't know how common or uncommon this scenario is, maybe I'm overthinking it, or maybe it's harder than I thought. If anyone has any input, I'd really appreciate it.
We are considering ways to solve this, and have a rough concept but wanted to get some more feedback on the best way to go about this. Basically, we're thinking if we hook up the axis position command output pin to something else before connecting to the drive command input pin, we can add/subtract the proper amount to the dependent axis's position.
I don't know how common or uncommon this scenario is, maybe I'm overthinking it, or maybe it's harder than I thought. If anyone has any input, I'd really appreciate it.
Please Log in or Create an account to join the conversation.
11 Jan 2018 19:17 #104307
by rodw
Replied by rodw on topic Compensating for mechanically coupled axes
I'm not exactly sure of your machine config but it sounds like this is a joint axis and therefore using master branch and configuring it the same as my gantry machine would achieve exactly what you want to achieve. It will be very simple then. But the two joint axes sill show as a single axis (in my case Y). There is a big difference between a joint (eg a motor) and an axis (which may include multiple joints)
Please Log in or Create an account to join the conversation.
11 Jan 2018 19:43 #104309
by Cpk_Rbt
Replied by Cpk_Rbt on topic Compensating for mechanically coupled axes
Sorry, I completely forgot to mention that these axes are serial. It's not two motors driving one axis, but two serial joints (so when the parent moves, the child needs to compensate for the parent's movements.)
We actually did some testing with our idea and the theory works, but our implementation isn't quite right yet.
We basically set up a couple sum2 functions.
sum2.0.in0 = axis1CMD
sum2.0.in1 = axis1FB
sum2.0.gain1 = -1
#sum2.0 calculates the amount that axis 1 is moving THIS LOOP - small increment
sum2.1.in0 = axis2CMD
sum2.1.in1 = sum2.0.out
sum2.1.out => axis2CMD_OUT
With a simplified example, if we are jogging axis 1 at a rate of 1 degree per thread execution, it will add 1 degree to the axis 2 command, and axis 2 will move to follow that. BUT when we stop jogging axis 1, axis 2 goes back to its original position. I can process the logic of the operation, but I don't know how to accomplish it in LinuxCNC.
We actually did some testing with our idea and the theory works, but our implementation isn't quite right yet.
We basically set up a couple sum2 functions.
sum2.0.in0 = axis1CMD
sum2.0.in1 = axis1FB
sum2.0.gain1 = -1
#sum2.0 calculates the amount that axis 1 is moving THIS LOOP - small increment
sum2.1.in0 = axis2CMD
sum2.1.in1 = sum2.0.out
sum2.1.out => axis2CMD_OUT
With a simplified example, if we are jogging axis 1 at a rate of 1 degree per thread execution, it will add 1 degree to the axis 2 command, and axis 2 will move to follow that. BUT when we stop jogging axis 1, axis 2 goes back to its original position. I can process the logic of the operation, but I don't know how to accomplish it in LinuxCNC.
Please Log in or Create an account to join the conversation.
08 Feb 2018 16:39 #105586
by andypugh
Replied by andypugh on topic Compensating for mechanically coupled axes
You might want to consider if the calculations actually belong in a custom kinematics module.
Please Log in or Create an account to join the conversation.
Time to create page: 0.073 seconds