Posts by CPh


    I wrote a Karel program which calls a TPE program (named 'TEST')

    My TPE program uses parameters calculated by Karel.

    I would like to pass Karel result to TPE and use AR[...] in the TPE program.

    I tried to write CALL_PROG('TEST (1,5)', prog_index) but it doesn't work, I get an error during program execution.

    Is it possible to call a TPE program with parameters from Karel? Or do we have to use registers?

    Hi Wiggi,

    Sorry, for my late reply..

    If I understood well, yes I have written the values manualy in PR[2].

    Today I tried to record them with the teach pendant (Enable Singularity Avoidance : TRUE)

    I made a simple TPE program

    L PR[2] 100mm/sec FINE

    Then I opened the PR DATA menu, selected PR[2] and pressed on RECORD.

    The result is the same, I get the error 15023.

    (btw, PR[2] = [360.0, 0.0, 280.0, 180.0, -90.0, 0.0] (NUT000) is in fact == to PR[2] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] in JNT coordinates)

    I guess there is nothing we/Fanuc can do to make the conversion work in case of a singularity, there is indeed an infinity of JOINT (J4,J6) values possible for this cartesian position.

    The program is working well for other positions :

    e.g. PR[2] = [360.0, 0.0, 280.0, 180.0, -85.0, 0.0] (NUT000)

    Enjoy your vacations!

    Hello, indeed it's not working when the position is not reachable or in singularity !

    I get MOTN-023 with the following coordinates [360.0, 0.0, 280.0, 180.0, -90.0, 0.0]

    So I have the same problem with the code given in this thread

    Do you know how to make it work with any reachable position even if it's in singularity ?

    By the way what is the difference between POS2JOINT built-in routine and your simple conversion (x=y) ?

    Thanks Davvoo22, the program is working for me.

    I observed that it does not work in some case.

    For exemple when :

    PR[2] = [360.0, 0.0, 280.0, 180.0, -90.0, 0.0]

    In this case POS2JOINT returns status = 15023 (=> MOTN-023 In singularity, The position is near a singularity point)

    Do you know how to solve this? Is there another built-in function or method to be able to convert any cartesian position to joint?


    I tried to call this Karel code from a TP program and I get the error :

    MOTN-018 Position not reachable (G:0)


    I am simulating on RoboGuide

    Robot software version: V9.30

    Robot Model: LR Mate 200iD/4S

    Robot Options: R507, R512, R663, R632, R792, R648

    I think I need something else to make this code work, do you know what is missing?

    What is the purpose you you wanting to do this? We may be able to help you find a different solution.

    I have a register, R[200] in which I set alarms.

    Then I use this register to find which alarms are activated.

    When R[200] == 1, I want to call a sub-program to display a notification.

    When R[200] == 2 (10), I want to stop the program

    When R[200] == 3 (11), I want to stop the program

    In my program I will write something like below:

    IF (R[200] AND 1) THEN JMP LBL[10:Warning]

    I don't know if it's really clear..

    If the previous code doesn't work I think it will be possible to use the operator DIV and MOD to check if a bit is set !

    R[1] = R[200] DIV 2
    R[1] = R[1] MOD 2
    IF R[1] == 0 => bit 2 is equal to 0
    IF R[1] == 1 => bit 2 is equal to 1 

    I am going to try that :smiling_face:


    I want to use a bit mask on a register in a IF to check some conditions.. Do you know if it is possible to do that in a TP program or should I need to call Karel ?

    Thank you very much for your help.

    Here is the result with the previous parameters when calculating the face plate point P= M*[0 0 0 1] = [280 0 -360 1].

    In fact the values are correct but I would rather prefer to get P =[360 0 280 1] to be aligned with the working coordinates system of the robot (where Z is vertical etc.).

    I don't understand why the kinematic coordinate system is not aligned with the working coordinates system, not sure I am clear..

    I found the DH parameters thanks to you.

    In roboguide I have the following values.. they are quite different, do you know why?


    Then, I have a problem with the matrix, I found several doc and each show different matrix... which one should I use?

    Matrix1 - page 3

    Matrix2 - page 3

    Matrix3 - page 3

    I have tried all three with both DH parameters sets and none gave me the correct result...

    (sorry for using your thread to ask these questions).


    Could you help me to find the DH parameters of the following kinematic please?

    I tried to calculate the coordinates of the point O6 with the values shown in the table below but the result is not correct.

    I suppose the alpha angles are not correct.. Or maybe I have not set the axes orientation well.. I am only sure about Zi

    Joint values (Theta) are all 0° for the kinematic as drawn here.

    Can you suggest any camera which can be used for this purpose?

    Sorry, I can't help you more..

    Choosing an optical system is not an easy task that can be answered on a forum without knowing the background. There are so many sort of camera, so many sort of optics, so many sort of lightings depending on the application.. You have to list your needs and find the best technical solution to fulfil them.

    For example for an optical system you must choose: the distance from the object to the camera, the image resolution you need, the depth of field, etc. The lighting is in general the hardest part, do your object is bright ? mat ? etc.

    It is the same for choosing a robot..

    Maybe a 6-axis robot will help you. For example the LR Mate 200iD (max charge 7kg).

    You could pick the part from the side and use the last joint flip it.

    A camera is indeed a solution to find the orientation of the object.

    Depending on how the parts are supply you will also need a camera above the conveyor to give to the robot the picking coordinates. Maybe with only one camera you could do both operation (find orientation + position)

    But note that there are several solutions for your problem, it depends on so many factors, it depends on the robot but also on the kind of tool used, on the system, etc. ! Sometimes a simple mechanical solution is better than a expensive robot.

    Which robot should I buy and how to program it? Which software I have to learn to do the task described above.

    Hello, it is very difficult to answer to this questions without more info.

    The robot choice will depend on :

    • the parts to handle (size, weight)
    • the work envelope you need (it will define the size of your robot)
    • the movement complexity (it will define how many axis you need)
    • the accuracy you need


Advertising from our partners