Joint velocity command for franka robot does not work in python script

I load /Isaac/Robots/Franka/franka.usd and use franka = world.sence.add(Robot(prim_path)) to add it to the scene.

Then I use franka.apply_action(ArticulationAction(joint_velocities=[1, 0, 0, 0, 0, 0, 0, 0, 0])) to set the velocity of the first joint to 1 and others 0 at each time step .

I used the api franka.get_joint_velocities() to check the velocities but found the velocity of the first joint was only around 1 at the first step, and then it decays to 0.

The velocity of the first joint should be 1 at each step to be expected.

1 Like

I found that apply_action(ArticulationAction(joint_velocities) just set the dof_velocity_targets of ArticulationView, and the get_joint_velocities api got the dof_velocities which are not the same as dof_velocity_targets.

dof_velocities are the current joint velocities from physics_vlew, which changes at each physics step. But the specific changes about dof_velocities in each physics step and its relationship to dof_velocity_targets are invisible. So I still don’t know why the velocity applied is different from the velocity got.

When I used apply_action(joint_velocities) at each step to set the joint_velocity to 1. But the velocities got with get_joint_velocities() is [0.58] which are different with the velocity([0]) in /joint_states with the ros node PublishJointState.