DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.

Hi. Perhaps someone here has the same problem or can offer an explanation.

My problem is the inconsistent result i get from pose_add() and pose_trans() functions

How could i achieve repeatable results using these functions?

I am using a robot to apply an adhesive product to a moving part.
There is a predetermined path for the product but the part is not always fixtured the same as there are many hundred fixtures in the system and the robot is retrofitted to the line so calibrating each fixture is impossible.
Initially a vision system gives an offset for locating in the X, Z and Ry dimensions via Plane_1=pose_trans(Plane_1,p[Cx,0,Cz,0,Cry,0]) function.
Then the adhesive applicator has an analog sensor for floating tip stickout measurement.
I am using this analog signal to adjust the Y position of the plane that is being referenced in the MOVL where my path waypoints are.
I use a variable to trigger the measurement and adjustment script in an IF statement in the thread.
This allows me to compensate for part position on the fly without stopping(causes blobs) to do a pose_add() or pose_trans() and adding many lines of code amidst the motion logic.

sample of logic

robot program
    MOVL  (feature=Plane_1)

   If var_1 = true

I am using this on one robot on a mirror image of the part across the line and it works 100% of the time.
On the other robot this produces a desirable result 90% of the time.  10% failure is unacceptable in a high volume application.
10% of the time the pose_add() shifts the program in the wrong direction causing the adhesive to be applied off path and the end EOAT to crash causing undesirable downtime to the line.

I have also used the pose_trans() in the same way and it ends with the same inconsistent result but for some reason i have to adjust a different element in the p[ ] constant to adjust the Y dimension.        eg, pose_add(Plane_1,p[tip_shift,0,0,0,0,0]) does the same thing as pose_trans(Plane_1,p[0,tip_shift,0,0,0,0])