I found some bugs in my post processing with the interpolation to make circular instructions for the robot. The circular instruction want a start and a end point on a arc, it also want on more point some where on the arc. Its preferred that the point on the arc should be after the middle of the arc.
With the G2 and G3 commands you get the parameters I, J and k that are describing where the centre point for the arc are like in the image below.
I create two vectors from the calculated centre to the start and end point. Then I create a point after arc with Spherical interpolation like the image below. I’m using a function from ABB:s mathematics library that has two vectors as a input and also a value from 0-1 that are proportional to where the new point should be created after the arc. Where 0 is the start point and 1 is the end point.
Some times the vectors is not getting the same length do to decimal error. And then the functions is not working and I get a point in the middle instead.
And I believe Its do to the fact that I’m not normalizing the vectors and if that don’t work I can always use the length of the first vector to make the other the same length.
My second problem in when the points and the centre is aliened and the vectors is getting parallel as in the image below.
But that I can simple check with the .dot product on the vectors and see that its not equal with 1. If they should be parallel and I try to make a interpolation then I get the point in the middle like in the other problem. I think I can create a new point 90 degrees to the left or right depending on if its a G2 or a G3 commando.
I will dig in the problem and I’m sure I will solve it..