External axis DKP 400.1 syntax for src to activate $Base =EK(MACHINE DEF........

  • Does anyone know this syntax works also for DKP 400.1 , 2 rotary axis?

    It seems to not accept EK variant from only one axis table as below:


    DEF EX_BASE(BASE_NO :IN,MACH_IDX :IN)

    INT BASE_NO , MACH_IDX

    MY_FRAME = BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b 0.0, c 0.0}

    $BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b 0.0, c 0.0})

    $ACT_BASE=BASE_NO

    END



    Thank you

  • The Interface does not destinct between the number of axes. Only the kinematic setup is relevant. Any specific messages? How is external kinematic setup in machine data machine.dat? What's the setup in config.dat of the kinematic?


    Fubini

  • I do not see anything obvious wrong in the obove files. So we have to dig deeper:


    It seems to not accept EK variant from only one axis table as below

    Can you elaborate a bit more why you think its not working:

    • Your EK-Call uses what values for its parameters BASE_NO :IN,MACH_IDX :IN?
    • If you call the function with your parameters what are the messages you get, if any?
    • If no messages: what did you try to test and what are the reasons why you think its not working.
      Is for example the robot just not moving as expected? If yes: what did you expect compared to what you see.
    • ...


    I am sure is not well defined DKP 400.1

    What do you mean by this? If its not well defined, what is exactly is not well defined? How do you know its not well defined? What did you try to get it well defined?


    Fubini

  • On DKP 400.1 Base should be 18 or 17 ?

    Because E1 is just a joint has no sense to have base 17 which never used.


    I use Base 17 but Machine Def 2 or 3?

    Ex Base [17,2]

    Ex Base[17,3]

    Ex Base [18,2]

    Ex Base [18,3], which is correct ?

  • All of them or none. You are trying to incorporate stuff that is actually not needed at all to call EK. Lookup


    $BASE=EK(MACHINE_DEF[MACH_IDX].ROOT, MACHINE_DEF[MACH_IDX].MECH_TYPE,BASE_DATA[BASE_NO]:{x 0.0,y 0.0, z 0.0, a 0.0, b 0.0, c 0.0})


    in the code you pasted above. It has for example no reference to base_type hence base_type can be ignored. Same holds for some other of the above variables. Only


    MACHINE_DEF.ROOT, MACHINE_DEF.MECH_TYPE and BASE_DATA


    are of significance. I think you are convinced the indices in those array are axis numbers. They are not. They are indices of kinematic configurations. Of these you can have multiple per kinematic. It's a bit like Cartesian positions. You can command the same Cartesian position w.r.t. to different bases. So the same robot moves to the same coordinates in reference to active base but actually if the bases are different the robot is at completely different positions in space.


    There is an old post from myself where I explained the parameters of EK and their actual meaning. I have to search for it.


    That is the post I meant


    Hence the first parameter enables the robot to know where in space the external kinematic is located. The second parameter chooses the correct external kinematic according to machine.dat and the last one is a shift from the external kinematic flange system defined als by the kinematic chain in machine.dat.


    So you should only ask yourself is the .ROOT value correct? Something only you can know.

    The second parameter is easier because it should always have value EASYS in your case because according to machine data you only have a single DKP assigned to EASYS.

    The last one is again totally up to you and your process.


    Fubini

Advertising from our partners