Michael Sherman
Michael Sherman
Good point. You would definitely get more MBP input and output ports. They wouldn't be connected to anything though. If they need to be connected in order for the modified...
(Forwarding from email discussion) `acos()` is always subject to numerical disaster because legitimate computations can produce 1+ε (or -1-ε) for a cosine that is analytically just 1 or -1. No...
> Should this be a free function, or yet another method in MultibodyPlant, among 100s of others? `plant.ComputeCompositeInertia(context, bodies)` is better than a free function IMO. For optimal performance the...
I guess you could say this is properly documented in the [doxygen](https://drake.mit.edu/doxygen_cxx/classdrake_1_1multibody_1_1_multibody_plant.html#af3d9f1dfe387a173b84c49a5bbe5a4c2) for this function: ``` Mathematically, this method computes: tau = M(q)v̇ + C(q, v)v - tau_app - ∑...
FYI here's how this issue is dealt with in Simbody. There are two inverse dynamics functions: [calcResidualForceIgnoringConstraints()](https://simbody.github.io/3.8.0/classSimTK_1_1SimbodyMatterSubsystem.html#a29a93fe311723421ff87117ab65f8f81): `f_residual = M udot + f_inertial - f_applied` [calcResidualForce()](https://simbody.github.io/3.8.0/classSimTK_1_1SimbodyMatterSubsystem.html#a2d70c8d0efb3850781dff2483a4cf017): `f_residual = M udot...
BTW now that I look at those equations it appears to me that the "ignoring constraints" version produces generalized forces that achieve the desired acceleration exactly as you would get...
Looks great except for the "801.125" allocations in this row: > DiagramBuild/3/0 0.019 ms 0.019 ms 801.125 37326 Is that spurious?
For edge/edge (non-parallel) contact a unique normal is the cross product between the two edges (each witness is on an edge). For vertex/face or edge/face the face normal is the...