Once again about converting world coordinates to base and back.

  • Hello everyone.

    I defined the TOOL and got the product BASE at three points.

    In my case, the product is a rectangular board located

    in front of the robot. Calibration points are the corners of this board. My question is, how can I

    get the coordinates of the calibration points (WORLD) in the coordinates of the my new BASE and

    vice versa.

    Thank you!

  • if i understand question correctly it would be simply LxWxH of the board:


    {0,0,0} origin

    {L,0,0} point on X axis

    {0,W,0} point on Y axis

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Simplest way might simply be to have the Position monitor open and write down the data at each point, during the Base 3-Point process.


    EDIT: I should amend that, you said you wanted the calibration points of the Base in terms of that Base.


    The issue is, I'm not sure the KRC records the points of the 3-point Base method in an accessible fashion.


    So, doing it manually (as I first stated) would get you the calibration points in World, but getting them in Base would require an additional step.


    By definition, the Origin point (the first point of the 3-point process) is the 0,0,0 coordinate of the Base. The second point will have a positive X value, and Y and Z values of 0. The third point will have a Z value of 0, and positive X and Y values. The ABC values are irrelevant, of course.


    So, to get the positions of those calibration points in the Base they were used to define, you need to take their position in World and "subtract" the Base frame values, in a 6-DOF manner. This can be done using the Geometric Operator and the system function INV_POS:


    PointInBase = PointInWorld : INV_POS(Base)


    The INV_POS "inverts" or "negates" the Base frame, and the ":" (Geometric Operator) performs 6-DOF "multiplication" (basically, shift&rotate) of two FRAME or POS type variables.

  • If I understood question correctly, you want to convert between different bases- World and BASE; easy with geometric operator:


    Base to World- BASE:Coordinate = CoordinateInWorld

    World to BASE- pos_inv(BASE) * CoordinateInWorld = Coordinate


    Or if you need a more general solution: TransformBetweenBases:Coordinate:TransformBetweenTools

Advertising from our partners