Tracking position of the robot on its trajectory

  • Hi,


    I'm looking for a way to track progress of the robot on its path.

    Staübli has this function implicitly:

    Each move performed increment the integer part of a numeric value named MoveID, and the decimal part corresponds to the progression of this movement.

    For exemple, a move id of 2.62 means that the current move is the second move, and the robot has performed 62 % of this move.


    I am looking for a way to achieve something similar, Is there something similar for fanuc robot or maybe a way to achieve it ?


    I managed to get something almost functional with the help of the variable $SCR_GRP[1].$DPOS_DST.

    To make it simple,


    -For the Integer part ,I increment a variable at each start of move.

    -For the decimal part, I save the value of $SCR_GRP[1].$DPOS_DST at each start of move in a variable and then calculate a percentage according to the evolution of the value of $SCR_GRP[1].$DPOS_DST.


    This work great for FINE moves but not for CNT moves.


    With CNT move, integer part increment way before $SCR_GRP[1].$DPOS_DST reach zero. Also if next move is with a different utool, $SCR_GRP[1].$DPOS_DST is modified according to the tool before it reach zero and that the integer part is incremented


    I guess this is normal given the nature of CNT movements, but as a result it seems that I am not able to achieve my goal with this variable.

  • Nation

    Approved the thread.
  • I'm not sure if it fits exactly, but the position snap and map option (R596) does close to what you are looking for.


    The robot will stream out over Ethernet the current commanded or actual Joint, or TCP values, or both at up to every 2ms. It also sends out a timestamp with the data.


    What are you trying to accomplish with the knowledge of the current completion of the current move?

    Check out the Fanuc position converter I wrote here! Now open source!

    Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

  • Try to look at:

    1. $SCR_GRP[1].$MCH_POS_X to $SCR_GRP[1].$MCH_POS_R in order to get cartesian position

    2. $SCR_GRP[1].$MCH_ANG[1] to $SCR_GRP[1].MCH_ANG[6] in order to get joint position

    Before reading above variables set $SCR_GRP[1].$M_POS_ENB = TRUE and cycle power.

    Maybe that helps you.

  • Thank you Nation , I'll take a look to R596 option, but I'm already sure that there is almost no chance people here would want to pay for this feature.

    What are you trying to accomplish with the knowledge of the current completion of the current move?

    Robot is controlled by a PLC among other things. PLC guys are requesting this. There is no specific application for it right now. But I guess they are trying to do something like : "Cylinder out/Conveyor FWD when robot move 3 is >= 50%"


    Try to look at:

    1. $SCR_GRP[1].$MCH_POS_X to $SCR_GRP[1].$MCH_POS_R in order to get cartesian position

    2. $SCR_GRP[1].$MCH_ANG[1] to $SCR_GRP[1].MCH_ANG[6] in order to get joint position

    Before reading above variables set $SCR_GRP[1].$M_POS_ENB = TRUE and cycle power.

    Maybe that helps you.

    Thanks neighbour1 for the tips, but PLC already receives this information, and it seems that it is not enough and wants more :grinning_face_with_smiling_eyes:

  • Sounds like there is no real reason you need this. The cylinder out sat 50% would typically be handled by a TB it DB instruction. (Time before or distance before the move is complete, turn on DO).

  • HawkME I used this as an example, as they did not tell me clearly why they need it.

    But you're right, that would be the right way to do it.


    The thing is PLC side actually handle things with this tracking progress functionality with other robot brand, and the current policy in the company is to standardize the PLC programs as much as possible.


    Using TB and DB would require specific development for them.


    But they will have no choice if there is actually no solution to get the functionnality they want with Fanuc Robot.

  • There are two ways to standardize robot programs :

    1 - Stick to one brand.

    2 - only use the common programlanguage, so, only use the things available in all used robots.


    It seems the plc guys have two options :

    A - remove all the Staubli commands the Fanuc can’t handle and replace them with something that both can.

    B - They quit moaning and get the job done, that’s what they are paid for.

  • Kelidor: are you trying to control all robots complete from the PLC?


    Tracking motion progress and using it for timing io signals and your other questions about ethercat en motion control seem to suggest it.

  • @kluk-kluk, @HawkME I realize you are absolutely right.


    I'm kinda new here and with robots, so I tried to do what they asked me without really thinking.


    Now I understand if they want to get the most out of the robots, they have to adapt according to the brand.

    On the other hand, for the moment our applications are not very complex (simple pick & place) and this is perhaps not necessary.


    rf103 , that's right, Robots are completely controlled by PLC.

Advertising from our partners