Axis lock KRC2

  • Hello all.

    In our company, we are solving one problem.

    Is it somehow possible to lock one of the axis (A5) for LIN_REL motion? I mean I need to change possition of robot head by straight vertical motion but need to keep "A5" constant.


    Thank you very much

  • describing the problem is half work to a solution and you are going wrong about it... instead of explaining what the system, challenge and possible constraints are, you are telling how this incompletely defined problem is supposed to be solved.


    if you tell robot to move one way (Cartesian) then robot has to have SOME freedom to adjust something else (joint angles). But if you tell robot to both move in Cartesian and not change axes position you will most likely end up with overconstrained / locked system or robot will not move the way you expected.


    what have you tried and why those attempts did not work for you?

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Yeah... almost any LIN motion has to move all axes, by definition. Even if you calculated the end orientation of the LIN motion such that A5 ended up at the same angle as the motion started, it's probably going to move some across the interval.


    So, what exactly are you trying to accomplish?

  • Hello, sorry. My problem is quite difficult. I don't know if my english is good enough to explain it clearly.

    I'll try it but please be patient.


    I use robot for dipping parts in special suspension.

    The problem is that the suspenison level in tank varies.

    Because of that there is laser instaled on the robot which measures level of suspension.


    See attached picture. This is initial possition before dipping.

    P is the point which has to touch the level of suspension.


    I can set value for laser which represents distance between laser and suspension level.

    This should guarantee that no matter how low the level is, P point will always touch the level.


    Now I use LIN_REL (z-1) in loop. When laser reaches the set value there is input which stops the loop.

    Problem is that during motion the angle A5 is increasing -> distance X is changing -> As suspension level decreases I need to change value for laser.


    So I need to keep angle A5 constant which guarantee the dimension X will be kept constant too.


    There is one external axis E1. Robot is on track and can be moved as shown at pic.


    I'm quite new in robotics so if you need any more info please dont hesitate to ask me.


    Thank you very much.


  • that is better but you are still way off.

    you correctly marked angle A5.

    so when P is lowered, and A5 angle is constant, you get this...

    is this really what you want? how does it look for X?




    if you want to lower the P by keeping tool orientation constant, you get this....

    is this better? note that A5 angle has changed (it is larger) and laser that is fixed on arm is still pointing in wrong direction, which is closer to vertical then in previous case but still different.




    if you lower the P but keep constant both A5 angle and laser direction, P will move away from robot base.

    it may hit the edge of the tank, or even get past it. is this what you want?

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • 1. mounting location of laser is not convenient for programming. sensors should be mounted / linked to EOAT (if mobile) or to a separate statinary structure. that gives you SIMPLE relationship that is easy to calculate and repeating measurement is ALWAYS possible. mounting sensor on other part of arm requires more complex math to get correct result and taking measurement may NOT be always possible even if your math is correct. if you don't trust me, get two goPro cameras, strap one to your head, and another to your knee then go jogging and compare footage. pay attention to image stability and think why vital parts (brain, vision etc) have evolved so far from our feet.


    2. Relative motion... something to be avoided. this is only disaster waiting to happen. sooner or later some idiot will block select it and run it when robot has already completed 90% the REL motion. then you will have nice crash. much better / safer to use absolute position.


    3. you probably want to forget about keeping A5 angle constant. i see no reason for it. most reasonable choice is to go STRAIGHT DOWN from initial position, keeping tool orientation constant (rather than A5 angle). if robot is always starting from fixed initial position (and i don't see why not) than measurement can be done once at that position - unless if level is changing dynamically and can be different by the time P is submerged.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • Yes, the last one is correct. But as I have external axis E1 I can move whole robot on track and by A1 rotation get again to the middle of tank.

    See top view of my situation.


  • 3. you probably want to forget about keeping A5 angle constant. i see no reason for it. most reasonable choice is to go STRAIGHT DOWN from initial position, keeping tool orientation constant (rather than A5 angle). if robot is always starting from fixed initial position (and i don't see why not) than measurement can be done once at that position - unless if level is changing dynamically and can be different by the time P is submerged.

    I think you don't understand my problem.

    Robot always starts from same initial position. Then going down from this position as long as the input from laser is 0.

    Laser in initial position has value 7000. When going down value from laser is decreasing. When it reach f.e. 6000 input from laser changes to 1.

    (The value 6000 is just example, I can set whatever I want) And when input changes to 1 robot stops. It works fine.


    The problem is that as level of suspension decreasing I need to change value "6000". Because the lower the suspension level is the higher value I need to set.

    So every time the level is lower I need to set new value for laser. I don't want to do that.


    See picture. Two situations. The first one with full tank and second one with lower level.

    X1 and X2 are not the same. It is because angle A5 has changed and therefore distance from P point to laser (in Z axis) is different.


    If I set laser value for second situation same as for first one, P point would go under the level of suspension what I don't want.


  • well, how about that... one has to go through miles of text just to discover key details.

    ten posts later and we are still getting bits and pieces of the setup.


    the key problem is that sensor is NOT mounted conventionally and therefore robot ARM (from A3-to-A5) need to maintain constant angle to XY plane while robot is moving vertically. This is a VERY strange constraint, and you still did not explain WHY is the sensor need to be mounted this way. Beacuse of this, entire robot arm after A3 need to be fixed just to keep the sensor aimed - basically you are contraining three of robots six axes and need external axis just to make it POSSIBLE to use sensor. At least in this case this is a possibility since robot does already have E1. so this is completely doable with your approach though it makes need to make some calculations. when someone is GOOD with math and progamming, this is a reasonable approach. this is why nobody uses this approach unless they have no other choice.


    and you have been already given choices that are far better alternatives:


    1. it would be much more practical to mount sensor on the EOAT so that constraint in point 1 is removed. Then this becomes a VERY straight forward case. in fact you could use your existing logic though i would much rather use an interrupt instead of loop with series of relative motions.


    2. your laser sensor output is NOT an analog value (distance). Distance setpoint is adjustable but specified elsewhere (on the sensor) and robot only gets TRUE/FALSE. Another SIMPLE way to get result is to replace sensor from digital to analog and have the sensor either mounted stationary (not on a robot) or on EOAT (if needs to be mobile for some reason).


    3. how much are you willing to pay for program that makes it work with the existing sensor/robot configuration? i don't mind making money.

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

Advertising from our partners