Joint_velocity targets never achieved and slowing down

Hi, I am trying to velocity control the RidgebackFranka robot ( RidgebackFranka/ridgeback_franka.usd) in the nvcr.io/nvidia/isaac-sim:2022.1.1 docker image.

In particular I am sending the following:

a = ArticulationAction(joint_velocities=[0.2, 0., 0.], joint_indices=[0,1,2])
self._robots.apply_action(a)

The result is the following:

  • the robot over a few timesteps achieves a max. velocity of around 0.15
  • as it moves away from the origin, it then slows down. If I change the sign of the commands, it then accelerates again in the other direction, until it is further away from the origin and slows down again

So I have two questions:

  • why does it never achieve the actual target velocity but is always a bit slower
  • why does it then slow down, even though I continue to apply the same actions at each timestep?

Thank you for your help.

Turns out even if never setting position targets, the underlying controller will assume position targets of 0. So the solution is to simulatenously pass in the current position as a target

Hi - Sorry for the delay in the response. Let us know if you still having this issue/question with the latest Isaac Sim 2022.2.1 release.

That is correct - The joint drive has two configuration parameters:

  • Damping: It drives a proportional gain on the joint velocity. For position-based drives, if target velocity is set to zero it acts as a dampener and softens the joint response (akin to a Derivative gain in a PD controller)
  • Stiffness: It drives a proportional gain on the joint position. for velocity-based drives (only really recommended for wheels) it must be set to zero, otherwise it will interfere and fight with the target velocity - making the joint slower as it moves away from the target position - proportional to how far it is from the target position.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.