-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
Description
Reading the documentation, it is not entirely clear to me what are the differences of the joint control modes supported in pybullet.
I try to recap them here, please @erwincoumans feel free to jump in to add more details and address holes in my understanding.
Let's assume that in all cases (excluding torque), the reference error is the following:
error = kp * (pos_des - pos) + kd * (vel_des - vel)
VELOCITY_CONTROL: This is a pure proportional control for velocity that by default haskp=0andkd=1. Gains should be in the range[0, 1].POSITION_CONTROL(alias forCONTROL_MODE_POSITION_VELOCITY_PD): Similar toVELOCITY_CONTROL. By default it haskp=1andkd=0. It allows to optionally specify both the target position and target velocity.TORQUE_CONTROL: It should be enabled by disabling the default motorized joints passing aforce=0. Later calls using this mode will send directly the torque to the joint.PD_CONTROL: Similar toPOSITIONcontrol but it allows specifying not normalized gains.
Questions:
- Is
kpignored inVELOCITY_CONTROL? - What is the logic behind the normalized gains in
VELOCITY_CONTROLandPOSITION_CONTROL? - Is
kd=0by default inPOSITION_CONTROL? - Is correct that in
POSITION_CONTROLifkd=0and a velocity reference is specified, it has no effect? - Is the description of
PD_CONTROLcorrect? There's not much information about it. - Should
PD_CONTROLwithkp=0andkd=1behave asVELOCITY_CONTROL?
I think that a big difference of PD_CONTROL with respect to POSITION and VELOCITY is how the error is treated. I suspect that in the former case a joint force is generated, in the latter ones instead the error is minimized as constraint. Is this correct?
raffaello-camoriano, traversaro, shrutij01 and amirrazmjoo