I am setting the position of the articulation joint with this command
but after joint moves, when I get the position of the joint, it has 2 to cm difference!!!
for example if I set the position to 1 meter, it will go to 98 cm
what is the problem? how can I make it accurate?
Hello! the position target is not the joint value itself. it is actually the target value used by the driver to get the joint to the desired pose.
Along with the target position, there is the joint drive stiffness and damping parameter. Increasing the joint stiffness will yield better precision, but it makes the robot more reactive to changes (pretty much a PD control on the position target), while Damping does exactly that, and dampen the movement of the robot.
As an aside, the damping parameter is also a proportional gain for the target joint velocity.
Check Dynamic Control [omni.isaac.dynamic_control] — isaac_sim 2022.1.1-release.1 documentation for the dof properties as damping / stiffness.
Thanks for your help, I have increased the stiffness and that increased the accuracy, however is there any way to run set position mode in blocking mode?
I want to know when set_dof_position_target finished.
What do you mean by blocking mode?
I believe you’d need to come with your own form for tracking check if it reached the target - The remainder of the simulation should not be stopped waiting for the robot to reach the position, it’d be a behavior loop you’d add to your robot control.
Think of the simulation as being a real world process - how would you check if the robot has achieved the pose?