Limiting speed in inverse kinematics mode

Typically: "How do I... ", "How can I... " questions
Post Reply
johnrowlay
Posts: 9
Joined: 09 Aug 2017, 18:52

Limiting speed in inverse kinematics mode

Post by johnrowlay » 06 Feb 2018, 19:04

I have a robot arm with all joints in IK (hybrid) mode, and a tip-target IK calculation set up. The IK calculation uses DLS with a damping of 0.1, and maximum 100 iterations.

When I start a simulation with the target about 50cm from the tip, the robot moves very quickly to the target, almost instantaneously. However, this is not realistic for when I want to apply my controller to a real robot. Instead, I want to be able to limit the speed at which the arm will move towards the target. How can I do this?

Here is what I have tried so far:

1) I have tried setting the "Upper velocity limit" to a very low number (almost 0) in the "Joint Dynamic Properties" dialog, for all joints. But this did not limit the speed of the arm; the joints are clearly moving much, much faster than the limit I defined.

2) I have setting the "Proportional parameter" for the PID Position Control, to a very low number (0, in fact) in the "Joint Dynamic Properties"dialog, for all joints. But again, this did not change anything.

From my understanding, the inverse kinematics works by calculating the required joint angles to achieve a target pose, and then using the PID controller to achieve these angles, by determining joint velocities according to the error between the current joint angle, and the target joint angle. The proportional parameter in the PID determines how quickly the joints try to achieve their target velocities. So why is it that reducing the proportional parameter to 0 has not effect, and why is it that limiting the upper velocities of each joint also has not effect?

coppelia
Site Admin
Posts: 6361
Joined: 14 Dec 2012, 00:25

Re: Limiting speed in inverse kinematics mode

Post by coppelia » 08 Feb 2018, 07:54

Hello,

this is strange. Setting the upper velocity limit should work normally. This will however not synchronize your joints! i.e. if joint 1 has to move 10 degrees and joint 2 20 degrees, joint 1 would arrive first, effectively following a different trajectory than what was intended by the IK.

For that reason it would be better to handle IK calculation step-by-step: if you want to reach point A, then generate intermediate points on the way to A.

But difficult to say what is going on in your scene if you don't post it.

Cheers

Post Reply