A handle used to enforce position and velocity limits of a position-controlled joint.
This class implements a very simple position and velocity limits enforcing policy, and tries to impose the least amount of requisites on the underlying hardware platform. This lowers considerably the entry barrier to use it, but also implies some limitations.
Requisites
- Position (for non-continuous joints) and velocity limits specification.
- Soft limits specification. The
k_velocity
parameter is not used.
Open loop nature
Joint position and velocity limits are enforced in an open-loop fashion, that is, the command is checked for validity without relying on the actual position/velocity values.
- Actual position values are not used because in some platforms there might be a substantial lag between sending a command and executing it (propagate command to hardware, reach control objective, read from hardware).
- Actual velocity values are not used because of the above reason, and because some platforms might not expose trustworthy velocity measurements, or none at all.
The downside of the open loop behavior is that velocity limits will not be enforced when recovering from large position tracking errors. Only the command is guaranteed to comply with the limits specification.
- Note
- : This handle type is stateful, ie. it stores the previous position command to estimate the command velocity.
Definition at line 160 of file joint_limits_interface.h.