# Why does the velocity limit also limit effort?

A low <limit> velocity </limit> in the URDF also limits the effective effort a joint can apply.

I am loading robot arms from a urdf xacro with a hardware_interface/EffortJointInterface using a roslaunch script. I am spawning an effort_controllers/JointPositionController for each joint. I am commanding the arms "straight out":

With a high effort limit (3000) and low velocity limit (20) on each joint the arms droop:

With the same effort limit but a larger velocity limit (50) the arms successfully reach their goal position:

My best guess is that the controller outputs a large effort which leads to a large velocity, and this velocity is clipped before gravity terms are added.

i.e.

vel_limit(controller) + gravity = 0

vel_limit(controller + gravity) = "upwards motion"
Is the argument paused false when you bring up the empty world?