drake icon indicating copy to clipboard operation
drake copied to clipboard

InverseDynamicsController does not allow for output_projection_matrix which results in a not desired behavior

Open JoseBarreiros-TRI opened this issue 3 years ago • 2 comments
trafficstars

I noticed that IDC has an incorrect actuation mapping when used in the following plant:

image

From looking at the code, I believe the output needs to be multiplied by plant.MakeActuationMatrix() by default or at least allow the user to add the actuation_matrix in the arguments of the IDC in a similar way that is done for the PID controller (output_projection_matrix). I think the former is a better option because it reduces the overhead for the user.

For context, connecting the IDC straight to the plant results in a not desired behavior: idc_wrong

and multiplying the output of the IDC by the actuation_matrix results in the desired behavior: idc_good

JoseBarreiros-TRI avatar Jun 21 '22 14:06 JoseBarreiros-TRI

Relates fairly closely to #16908 (this may be a more concrete proposal to address that issue). Relates tangentially to #12270 (also an issue of the layout of q / v vectors)

ggould-tri avatar Jun 21 '22 14:06 ggould-tri

Assigned to @siyuanfeng-tri as the original author of InverseDynamicsController.

hongkai-dai avatar Jul 27 '22 20:07 hongkai-dai