When we move the robot, many examples will use the second case shown in the below screenshot from the documentation, where we assign position targets for the DOFs of the robot:
My question, however, is how does IsaacGym simulation handle the need for the robots to not move too much in each simulation step to reach large DOF targets? I am testing code using
franka_cube_ik_osc.py in the provided examples, via running
python franka_cube_ik_osc.py. When we have to assign a set of DOF targets which are far away from the current DOFs of the robot, then one simulation step will not be enough to get the current DOFs of the robot to reach the target, and I verify by querying the resulting robot DOFs (after
gym.simulate) that they do not exactly match the targets.
Is there a formula for how each IsaacGym simulation step “decides” how much to change the current robot DOF positions to get them closer to the target? If this were a simple 2D navigation and a straight line to a target, for example, then we could take the straight line to the target, and find some small “delta” on the line to get closer to the target. But I am not sure how this works for a 7DOF robot arm.
To clarify, this seems related to numerical integration which IsaacGym documentation describes briefly, but I am not sure about how exactly to decide how much each robot’s DOF position should change a bit at each simulation step to reach the ultimate target. (Or is this exactly done via numerical integration and I should abstract away all of
gym.simulate as a numerical integration step?) Mainly, I just really want to understand what is going on under the hood. :)
Please let me know if this question is unclear.