Problem applying action (through target joint position) to ArticulaitonView

The target position calculated through inverse kinematics is correct, as has been examined by applying the position of each joint to the franka panda robot in isaac sim alone:

But the robot when given it as a target position won’t move to the correct joint position.

tried both apply_action and set_joint_target_position. neither works. Both result in the same weird behavior where robot moves to the same arbitrary joint position:


Following is the resulting incorrect position

When trying other target positions, calculating joint positions, and applying through the two above mentioned methods of ArticulationView, every time it result in/converges to an arbitrary joint position result.

Self collision is disabled by the way, so there should be no problem with that blocking movement.

Action control works just fine though… no idea why it is happening.

Using isaac sim 2023.1.1 on ubuntu 22.04.4

p.s., the apply_action of ArticulationView is broken due to type conversion of ArticulationAction. the issue and the fix I applied can be found here: ArticulationView apply_action fix - Google Docs

Nevermind. Resolved. But I don’t know why. using the same set_joint_position_targets with target position updated in the following manner as described in isaac gym example “franka_cabinet”, it works decently; note that the input I gave to “actions” is difference from target joint positions to current joint positions

self.actions = actions.clone().to(self._device)
targets = self.franka_dof_targets + self.franka_dof_speed_scales * self.dt * self.actions * self.action_scale
self.franka_dof_targets[:] = tensor_clamp(targets, self.franka_dof_lower_limits, self.franka_dof_upper_limits)