paddax Posted April 2, 2013 Share Posted April 2, 2013 I have a power pmac with a very simple configuration There are 4 axis all configured as inverse kinematic axis #1->I #2->I #3->I #4->I Then the forward and inverse kinematic programs are as follows. Obviously these are just examples that replace the instructions #n->1000x open forward (0) KinAxisUsed = $1C1 // ZXYA KinPosAxisX = KinPosMotor1 / 1000 KinPosAxisY = KinPosMotor2 / 1000 KinPosAxisZ = KinPosMotor3 / 1000 KinPosAxisA = KinPosMotor4 / 1000 close open inverse (0) KinPosMotor1 = KinPosAxisX * 1000 KinPosMotor2 = KinPosAxisY * 1000 KinPosMotor3 = KinPosAxisZ * 1000 KinPosMotor4 = KinPosAxisA * 1000 close My problem is once the above is downloaded I can't get the Coord[0].Csolve to set. I have tried setting Csolve for each of the axes in the coordinate system but this has not effect on the Coord[0].Csolve A more serious problem is that even though Csolve is false I'm still able to run a program in this coordinate system using the defined kinematics. The manual is very clear that this is not possible. Obviously I want the program to run and this is what its doing, its just my own software which is written against the manual is telling me cycle start is not permitted. Link to comment Share on other sites More sharing options...
curtwilson Posted April 2, 2013 Share Posted April 2, 2013 Thank you for bringing this to our attention. The Coord[x].Csolve bit is only used for a coordinate system set up with axis definition statements. It determines whether the set of axis definitions is mathematically invertible to permit computation of starting axis positions. When you have a forward kinematic subroutine for the coordinate system, PMAC cannot evaluate whether it is "proper" or not, so it does not compute a value for the Csolve bit, and it does not look at the Csolve bit when program execution is started. We will update the documentation to clarify this. Link to comment Share on other sites More sharing options...
paddax Posted April 5, 2013 Author Share Posted April 5, 2013 Maybe this is the wrong way to think about it, but I would have thought that the D0 value returned from the forward kinematic routine would tell the coordinate system that these motors were solved. Link to comment Share on other sites More sharing options...
curtwilson Posted April 5, 2013 Share Posted April 5, 2013 The purpose of the Csolve "lockout" for axis definition statments is to prevent a program from running in cases where Power PMAC cannot properly compute the starting positions for the axes through a mathematical inversion of the axis definition statements. If the only axis definition statement for the coordinate system is: #1->X+Y or if you have #1->X+Y #2->X+Y PMAC cannot calculate the starting axis positions from the motor positions when the program begins, so it will refuse to execute the program. When you have your own kinematic routines, PMAC fundamentally has to assume that you have done the calculations correctly. Link to comment Share on other sites More sharing options...
Recommended Posts