Posts by theemrroboto

    While moving in tool x+ direction, the further away from origin it goes, the greater the error. For example, at 25mm from the origin the pick position is off 1mm. At 50mm form the origin the pick position of off 3mm. At 75mm its off 6mm. If I had a misalignment from robot to camera, I would expect to have a consistent error no matter where I move with respect to the shared origin.


    We used a tooling plate with markings for the camera and outlines for the vacuum cups to align the two origins.


    When I use the $BASE = BASE_DATA[1] : PICK_SHIFT_FRAME code, I would have expected that the X and Y values of Base_Data[1] would have increased the same amount as the Pick_Shift_Frame. The only one that did was rotation. X changed 49mm instead of 42mm and Y changed less than 1mm instead of 25mm.

    Ok, I am getting closer...But still off a bit.


    My Base_Data[1] = (X 369.559967, Y -15.601882, Z 129.119278, A -30, B 0, C 0)

    My Pick_Shift_Frame = (X 42.924, Y 25.337, Z 0, A 0.815, B 0, C 0) - Verified to be the correct values from the camera.


    When I use the following code, I get a shift that is correct in A rotation but X and Y are off slightly.


    $BASE = BASE_DATA[1] : PICK_SHIFT_FRAME


    The resulting $Base frame = (X 419.401733, Y -15.1213961, Z 129.119278, A -29.185, B 0, C 0)


    Some background...


    - The vision system origin is at the same location as the Base_Data[1].

    - The pick location is offset from world by 30°


    It seems that my shift operation is not aligned with base and rather world.


    Thoughts?

    Hello,


    KR 6 R500 SCARA, KRC5 Micro, V8.7.3 HF1


    I am having a strange issue where when I offset a base (base_data[2]) with the inputs from a camera system, the robot does not move like I would expect.




    Code:


    VISION_PICK_X = INT_TO_REAL(PICK_X);FUNCTION CALL TO CONVERT X AXIS INT VALUE TO REAL VALUE (Confirmed to return a correct number)


    VISION_PICK_Y = INT_TO_REAL(PICK_Y);FUNCTION CALL TO CONVERT Y AXIS INT VALUE TO REAL VALUE (Confirmed to return a correct number)


    VISION_PICK_C = INT_TO_REAL(PICK_C);FUNCTION CALL TO CONVERT C AXIS INT VALUE TO REAL VALUE (Confirmed to return a correct number)



    BASE_DATA[2] = BASE_DATA[1] ;SET OFFSET BASE TO REFERENCE BASE (Confirmed to change the base dimensions correctly)


    BASE_DATA[2].X = BASE_DATA[2].X + VISION_PICK_X ;OFFSET BASE IN X DIRECTION (Confirmed to shift the base X correctly)


    BASE_DATA[2].Y = BASE_DATA[2].Y + VISION_PICK_Y ;OFFSET BASE IN Y DIRECTION (Confirmed to shift the base Y correctly)


    BASE_DATA[2].C = BASE_DATA[2].C + VISION_PICK_C ;OFFSET BASE IN C ROTATION (Confirmed to shift the base C correctly)



    HALT


    $BASE = BASE_DATA[1] ;SET BASE TO REFERENCE BASE (Confirmed to change the base number and data via variable display)


    PTP {X 0.0,Y 0.0,Z -30.0,A 0.0,B 90.0,C 0.0,S 2,T 0} ;MOVE TO ZERO POSITION (Confirmed to move to the expected base origin)



    HALT


    $BASE = BASE_DATA[2] ;SET BASE TO OFFSET BASE (Confirmed to change the base number and data via variable display)


    PTP {X 0.0,Y 0.0,Z -30.0,A 0.0,B 90.0,C 0.0,S 2,T 0} ;MOVE TO OFFSET POSITION (This is where the problem happens)



    The base data is correct before the move but the motion is incorrect in x, y, a, b, c. The expected position should have been offset by (-1.5, -0.5, +15) (X,Y,C) but the robot moved to some random position that was C +90. The other strange thing is that the robot is now being commanded to move in the A and B directions but this is a SCARA so that isnt possible.


    Any suggestions?

Advertising from our partners