set_target_payload() – Transition Time
During the transition phase, the change in the set_payload occurs at a constant rate. However, this may not accurately reflect the perceived change in payload when gripping using a vacuum.
To improve the transition process, a few suggestions can be followed:
Firstly, set the force limit safety limits to their highest values, granting the joint regulation maximum freedom.
Next, initiate data collection from the robot at a frequency of 500Hz.
Proceed to execute the gripping action (and optionally the dropping action as well).
Then, analyze the actual_current data for the joint responsible for holding the payload – typically the shoulder if the robot is horizontally mounted.
Our objective here is to align the payload_transition curve with the shape of the actual_current, ensuring a more accurate representation of the perceived payload change.
Example
If the curve looks like the following one:
One probably wants a program like this:
set_target_payload(gripper+36%, COG, inertia, 1.0)
sleep(1.0)
set_target_payload(gripper+84%, COG, inertia, 2.0)
sleep(2.0)
set_target_payload(gripper+100%, COG, inertia, 2.0)
The idea of setting the force limits less restricted during the development is because the joints will have maximum freedom and you will basically get the payload/current profile shape match on the first try. Later, you can tighten the force limits again when the application is completed. This minimizes the need to go through trial and error to find the optimal solution.
The transition time parameter in set_target_payload() determines how the internal dynamics model is updated. Any wait/sleep after while this happens is optional, but for some applications it may be needed to avoid protective stops.
If the transition needs to happen entirely to avoid a protective stop if a motion comes immediately after a payload transition, something similar will probably be required:
set_target_payload(mass, offset, inertia, transition_time=x)
sleep(x)
movej(somewhere)
but if the force limiting settings allow it, you can do something like e.g:
set_target_payload(mass, offset, inertia, transition_time=5)
sleep(4)
movej(somewhere)