Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Set Kinematics Configuration of 6-DOF Robot

drsumruay
2018-10-03
2018-10-20
  • drsumruay - 2018-10-03

    I 've some issues when i try to change my TCP of robot using 'SMC_SetKinConfiguration', so the Done signal of this block is set to true
    but when i 've used 'MC_GroupReadActualPosition' block to read my current configuration of kinematics, it's doesn't change

    Anyone Can tell me what i missing or the block is inapplicable

    Here's my partial Code

    VAR
    Kin_Config : TRAFO.Kin_ArticulatedRobot_6DOF_Config;
    ReadKin_Config: TRAFO.Kin_ArticulatedRobot_6DOF_ReadConfig;
    SMC_SetKinConfiguration: SMC_SetKinConfiguration;
    END_VAR
    Kin_Config(ArmState:=TRAFO.Kin_6DOF_J0_State.ARMSTRAIGHT,ElbowState:=TRAFO.Kin_6DOF_J2_State.ELBOWSTRAIGHT
    ,HandState:=TRAFO.Kin_6DOF_J4_State.HANDDOWN);
    SMC_SetKinConfiguration(AxisGroup:=Unibot,Execute:=TRUE,ConfigData:=Kin_Config.Config);
    IF SMC_SetKinConfiguration.Done THEN
    ;
    END_IF
    MC_ReadPosition_MCSCoord(Enable:=TRUE, AxisGroup:=Unibot, CoordSystem:=SMC_COORD_SYSTEM.MCS);
    IF MC_ReadPosition_MCSCoord.Valid THEN
    ReadKin_Config(Config:=MC_ReadPosition_MCSCoord.KinematicConfig);
    END_IF

     
  • eschwellinger

    eschwellinger - 2018-10-05

    Hi,

    SMC_SetKinConfiguration is an administrative function block. That means that it will not cause a movement. Instead, it will only _set _ the configuration of the robot. This configuraiton will be used for future movements.

    Example:
    1) A scara robot currently is in configuration “elbow left”.
     MC_GroupReadActualPosition returns configuration “elbow left”

    2) SMC_SetKinConfiguration(“elbow right”) is called
     No movement is done, MC_GroupReadActualPosition still returns “elbow left”, as the robot did not move.

    3) MC_MoveDirectAbsolute is called with a target position in MCS.
     The scara now moves the TCP to the given target position, but now in configuration “elbow right”.
     During the movement, MC_GroupReadActualPosition first returns “elbow left”, then “elbow right”

    Note 1: the configuration is only used if a target position is commanded in MCS (or WCS/PCS), not in ACS.
    Note 2: a movement between different configurations is only possible with MC_MoveDirectAbsolute/Relative, not with MC_MoveLinearAbsolute/Relative or MC_MoveCircularAbsolute/Relative. Reason: the movement is going through a singularity of the robot.

    BR
    Edwin

     
  • drsumruay - 2018-10-20

    Thank you, for your answer
    Edwin

    but MC_GroupReadActualPosition still doesn't change follow my configuration during movement or synchornize motion state, for example

    i set the ArmState:=TRAFO.Kin_6DOF_J0_State.ARMSTRAIGHT but the MC_GroupReadActualPosition change the value itself, maybe ArmState:=TRAFO.Kin_6DOF_J0_State.ARMFORWARD ,so it's not my configuration.


    i have another problem with the value of ''Machine coordinate System''(MC_COORD_REF) in MC_GroupReadActualPosition,
    'A'(Angle of rotation around z-axis [deg]) value and 'C'(Angle of rotation around z’‘-axis [deg]) value always vary while there's no movement, for example, C value vary between -180 and 180
    How can I set 'A' and 'C' value to be static.

     

Log in to post a comment.