Apply a constant force on a point of contact

  • Hello,
    I would like to follow the outline of a circular metal piece which has a large diameter (2m) to perform a deburring operation, applying a very light but constant force at the point of contact.
    For this, I put the piece on a turntable next to the IIWA, and I asked the robot to remain static (positionhold). Then I changed different impedance control parameters (stiffness, additional strength, damping, etc ...).
    The problem I encounter is that my part is not perfectly centered on my turntable, or has slight defects (<1mm), so sometimes the TCP is in contact with the part, and sometimes it is not.
    I hoped that the sensitivity and flexibility of the robot would compensate for this, while always applying the same effort on the part. But even changing the different parameters I mentioned earlier, I cannot get constant pressure on the part: the IIWA will not press enough in some places, and will press too much in other places.


    What would be the best approach to achieve what I am trying to do?


    Because for now I use a "positionhold», but the results are inconclusive. In addition, is there a way to achieve a "positionhold" having as origin a point that the robot has not yet reached? Because I thought to put the origin of the "positionhold" (and thus the virtual spring) inside the part rather than on a point of contact, so that the spring force is directed inwards of the part and not outward as is currently the case.


    Thank you in advance for your help

  • every time you command a positionHold, the held position and modeled spring forces get reset. You may be able to try something like:


    Code
    while (<partNotDone>){
    TCP.move(positionHold(impMode, 1, TimeUnits.Milliseconds));
    }


    with the impedance mode used in the positionHold command having some force bias toward the center of the part on the turntable, such that the 'zero point' of the modeled spring damper is constantly updated, and the robot will apply X newtons into the part regardless of imperfections in the part itself, rather than the bias force being absorbed by the modeled spring damper system.


    Hope this helps !

  • I know you say you've tried changing stiffness and additional force, but that does sound like the standard way to approach the problem you have. If that doesn't work with the sensitivity you need I expect you may be near too the robot limits of sensitivity. That said, it's worth considering exactly how best to set up your impedance mode.


    So we can get better understanding of your process, how much force are you looking to apply?


    Stiffness, damping and additional forces in an impedance control mode are applied in the direction of the tool coordinate frame, rather than base or world. Make sure you have configured the TCP orientation and set up your CartesianImpedanceControlMode correctly. As you want to follow the surface with a constant force, you don't want a significant contribution to the TCP force to be based on displacement from the 'hold' position, as such you want a very low Stiffness in the working direction. Damping is probably fine as the default. All of the work you want to be done by an AdditionalControlForce in the tool working direction.


    It's worth considering the robot pose you are using during the operation. Near to any singularities the torque sensors become less accurate at calculating the TCP force. A quick way to do this is to set up a program with an endless while loop that prints the Force/Torque and ForceInaccuracy (ForceSensorData.getForceInaccuracy()), then jog the robot around. Limit your print outputs to every 500ms.


    It might be worth spinning up your tool and seeing what effect that has on the recorded forces/torques. Gyroscopic effects and all sorts might be throwing off the force readings. Also, thinking about it, you must be running with some sort of powerchain up the robot flange - that is likely to be harming your force accuracy if it's strapped to the iiwa along it's length.


    If you aren't able to get the results you need just using an impedance mode position hold, you could try mounting a roller/low friction surface on your tool and recording the positions that makes with the surface as the turntable rotates. You could use a higher force to ensure that surface contact is maintained. This would require either knowing the absolute position of the turntable, or being able to synchronise the movement. You could then actively drive the robot to match those positions.

  • Hello, thank you both for your answers, and sorry for this late response.
    I tried what you told me, but I could not get the result I wanted.
    I had to stop my tests. I'm going to see Kuka directly to see if they can help me on the subject.

Advertising from our partners