Posts by MOM

    When vxworks get stuck a simple reason could be that vxworks can not get the information from the hard drive

    For me the most important question would be:

    KSS Version

    The problem with the password made me a bit nervous.

    as I rember there are three ways to get an inline form:

    - UserTech

    - ExpertTech

    - TP with inline form programmed in a dll

    Therefore a KrcDiag (if possible) or the exact way on how to reproduce the problem would be helpful.

    Another important question:

    what is the exact KSS version (KSS 8.3 just tell the family and not the person like KSS 8.3.39)

    I do not understand the problem (this was the third entry for all robots of 150/210/240 type and the 2nd entry for 210/240 robot types).

    I agree it is a bit confusing (for the first entry they could have said 150 (only)

    Difference between 2nd and 3rd entry is the article number (different manufacturer) , the amount of oil is the same

    KUKA is doing their home work to help you to to the best PM for your system.

    Is there a later version of this documentation available and maybe corrected?

    I would not agree with the following statement:

    yes and yes it works fine you may need more ram though

    You did not tell:

    - main board type of the krc2

    - software delivered with krc2

    If you've got kss v4.1.x

    - this is license violaten

    -- operating system (WinXPe instead of Win95)

    -- kss version (some tp have to be bought)

    With the information you presented I would say "NO" => more informaton neede

    Part 5

    In my last part I promised you 24 combinations, here they are

    As technician I always start with the worst case scenario.

    Taking the gray ones out will end up with 12 combinations!

    (they are just the inverse of the blue or orange ones)

    So, take the blue or orange ones and just put the calculated angles in reverse order (instead of a1,a2 and a3 just bring them up as a3, a2 and a1)

    After I checked all the conversions there will another reduction - more in the next part

    By the way: if you find any errors - keep them - I have plenty of them

    Part 4

    Elementary rotations

    In the past we created a rotation matrix by comparing the target coordinate system with the reference coordinate system.

    This time we will use another way to create this matrices

    X- Rotation:

    The x rotation is not changing the position of the x-axis (shown as red numbers).

    According to the tool kit:

    x: out (positive rotation direction CCW); y: right ;z: up

    2nd column: projection of y'-axis to y-axis (cos(angle) and z-axis (sin(angle))

    3rd column: projection of z'-axis to z-axis (-sin(angle) and z-axis (cos(angle))

    Y- Rotation:

    The y rotation is not changing the position of the y-axis (shown as red numbers).

    According to the tool kit:

    y: in (positive rotation direction CW); x: right ;z: up

    1st column: projection of x'-axis to x-axis (cos(angle) and z-axis (-sin(angle))

    3rd column: projection of z'-axis to x-axis (sin(angle) and z-axis (cos(angle))

    Z- Rotation:

    The z rotation is not changing the position of the z-axis (shown as red numbers).

    According to the tool kit:

    z: out (positive rotation direction CCW); x: right ;y: up

    1st column: projection of x'-axis to x-axis (cos(angle) and y-axis (sin(angle))

    2nd column: projection of y'-axis to x-axis (-sin(angle) and y-axis (cos(angle))

    Now the bad news:

    For combined rotations you have to use matrix multiplications and this has to be done in a certain sequence

    Good news:

    There are only 24 combinations

    Part 3

    There are different ways to draw a coordinate system. Here is the example on how I do it

    Adding up the squares in a row or column the result must be 1

    Coordinate System follow which rule ? Right Hand Rule (RHR) or Left Hand Rule (LHR)

    By comparing the coordinate systems K0-K1 and KO-K2 the rotation matrices are created and then checked for RHR or LHR.

    In order t create a LHR out of RHR you need to inverse either one or all axes

    The matrix shown in post #21 is actually a transformation matrix (includes the blue, yellow and red fields). The matrix consists of 4 rows and 4 columns [mat4x4 or SE(3)]

    The rotation matrix is only the blue part [mat, mat3x3 or SO(3)]. For scaling you would use a mat3x3 like [[sx, 0, 0], [0, sy, 0],[ 0,0,sz]]

    The 4th row must always be 0,0,0,1! Otherwise there will be a different result.

    Left hand rule:

    Instead of using the right hand use the left hand (x:thumb, y: index finger; z: middle finger)


    2 axes match, 3rd axis in opposite direction

    pictures in one of the next parts

    Part 2

    To do frame arithmetic, frames do not really help! We need the transformation matrice.

    What do do?

    - let's call the reference coordinate system from previous post C

    - the Target Frame (or target coordinate sytem from previous post) coordinate system C1

    Checking the contents of Notepad we can (will) see:

    - translation (shift along the reference coordinate system - yellow part)

    - axes of the target coordinate system are divided into pieces of the reference coordinate system (blue part)

    By now we have a matrice with four columns and only three rows!

    For matrice multiplication we need a matrice 4x4

    The red marked row fullfill this requirement without changing the result of the matrice

    For this thread we are only have a look for the values in the blue field and there are some more restrictions:

    - coordinate system must follow the right hand rule (x:thumb, y: index finger; z: middle finger). There is also an easier way: draw x-axis horizonal, y-axis vertical (as learned at school) put a box with lower left corner to the origin of your xy-coordinate system and the upper left corner will show the z-direction (in my area z-axis would go up). You can check that by calculating the determint of the rotation matrice with a result of +1

    - the sum of x*x+y*y+z*z must be one; in word 1.0 - reason:radius of the sphere equals 1.0

    next part will be a closer look to the rotation matrice

    so long

    Part 1

    Because of all the feed back I've got probably a revision course (repetitorium) would be helpful

    So, let's start with the basics as mentioned in post #1 of this thread

    In robotics we talk a lot about frames, positions or poses.

    This picture shows how a frame could be interpreted:

    The yellow arrow starts at the origin of the reference coordinate system (the tiny one) and ends at the origin of the Target frame. The shift in x, y and z is marked yellow (300,0,400) in the Notepad.

    (this is common to most robots)

    The blue marked stuff in Notepad (whole bunch of numbers) is not (very) clear to most of us. These numbers in the blue rectangle are called rotation matrice and defines the rotation between reference coordinate system and coordinate system of the Target Frame (or vice versa - who knows)

    So, most of the robot manufacurer start their movements with:

    x 300.0, Y 0.0, Z 400.0 (just to follow the example)

    By know you should understand three out of six numbers: we already made 50% of the definition of a frame

    will be cont'd


    For the angle calculation the same contents of the rotation matrice is used

    (calculated from one angle set using the corresponding rotation matrice)

    post #14 shows how to calculate the euler angles Z0,Y, Z1

    KUEWEG.SRC (check MAT_TO_RPY) shows how to calculate the T-B angles A,B,C

    (for Fanuc and Motoman in reversed order)

    This way of doing the angle calculation also handels the gimbal lock

    With 4 routines:

    2 calculations of the rotation matrice

    2 calculations of the angle values

    ABB, KUKA, Nachi, Fanuc, Motoman, Adept, Comau and Kawasaki are covered

    Updated version of rotation matrices


    is the rotation sequence rot.z(A)*rot.y'(B)*rot.x(C)


    you have to transpose the Z->Y'->X'' rotation matrice

    or take the Z->Y'->X'' rotation matrice and do the same angle calculation

    (reversed order)


    is the rotation sequence rot.z(Z0)*rot.y'(Y)*rot.z''(Z1)

    I was using RoboDK to get all the angles given by a comau robot (Z->Y'->Z'') and transformed for other robot types.

    In a first step create a routine which creates a rotation matrice for the specific angle rotation sequence.

    There is a difference ZYX (intrinsic) and XYZ (extrinsic)

    If you start with fanuc angles you just need to transpose the matrice and you have the matrice you need to calculate the angles for the other robots