How to achieve precise position control?

As shown in figure, I want to excute the Grasp task. At some point, I’ll give you the action (joint_position) that the current robot should take. But when I apply_action, I printed out the position of the robot’s joints after taking the action.

For example, the apply_action is {‘joint_positions’: [0.8238084055528784, 3.258773222356317, -5.2842312866369926e-08, 4.434514459746221, -1.0435168082945858, -3.1561408382919662, -0.462833, 0.026872018, -0.21439794, -0.5247767, 0.006703197, -0.5795436, -0.10016193, -0.44172207, -0.6632077, -0.15272766, -0.12983315, 0.9999972, -0.6881444, -0.48795903, 0.07503456, 0.24684206, -0.31400064, 0.10682098, -0.26788008, -0.20708056, -0.10136456, 0.9999972, -0.17098865, -0.49769205], ‘joint_velocities’: None, ‘joint_efforts’: None}.

After applying it, I get the joint position of the robot that is [ 2.55941534e+00 4.96243834e-02 -4.69358434e-04 -9.02150154e-01
1.25002220e-01 1.04570496e+00 -2.66553283e-01 2.70956308e-02
-2.10936531e-01 -7.97990616e-03 1.01097552e-02 -3.46905112e-01
-9.33504850e-02 -2.64399916e-01 -1.20298907e-01 -1.62740126e-01
-1.08440764e-01 1.00214159e+00 -2.10572057e-03 -2.37248108e-01
8.09433535e-02 2.53379375e-01 -2.09707350e-01 1.05606794e-01
1.36539683e-01 -1.60144788e-04 -4.65726662e-05 6.98533356e-01
1.49451604e-04 -2.61799544e-01].

How to achieve precise position control?

Is the stiffness of joint set? It should be set to a high enough value to hold position.


I don’t think this will solve my problem. I took a look at the stiffness I set, and it was big enough. Is there a better solution?

This is the code for the robot to excute the action. I use the lula kinematics solver to obtain the arm joint position. And I set up an extra hand joint.

It’s worth noting that I took my robot to execute franka_follow_ik.py and used the Lula Kinematics Solver. After execution, the arm’s joint position is correct. I don’t know why it doesn’t work when I add hand joint position. Another difference from franka_follow_ik.py is that I give Lula Kinematics Solver a target position at every moment. I initially thought that the target position was sent too often, so I set up a loop to execute the apply_action more so that the robot had a cached time. But it don’t work.

I would like to know how to solve this problem (Given the position of the robot joints at each moment so that it can reach quickly).

I wish there were professional developers to solve this problem.

If you want to get a critical answer, you should at least the full script and USD to reproduce the scene.
I think that solving problems in one shot with limited information is the job of a great detective, not a engineer.

Didn’t anyone help me see what was going on? This affects the progress of my follow-up work.

Hi @1878720579 - Developers are working on solution (will be available in upcoming release) that would help solve the issue.

Meanwhile, can you share you USD file, so I can redirect it to right dev to help you further.