In an effort to make the OSC and its components more flexible and re-useable, we need to break apart the OSC into separate classes and systems with more tightly scoped responsibility.
This PR takes the first step toward that goal by introducing inverse_dynamics_qp, a backend to the OSC (or other controllers) which owns all of the decision variables, costs, constraints, and kinematic evaluators.
A future PR will separate the OSC leaf system into a wrapper around inverse dynamics_qp, and a wrapper around the tracking datas, to separate the responsibility of updating/solving the QP from updating the desired accelerations, contact forces, etc.
In an effort to make the OSC and its components more flexible and re-useable, we need to break apart the OSC into separate classes and systems with more tightly scoped responsibility.
This PR takes the first step toward that goal by introducing
inverse_dynamics_qp
, a backend to the OSC (or other controllers) which owns all of the decision variables, costs, constraints, and kinematic evaluators.A future PR will separate the OSC leaf system into a wrapper around inverse dynamics_qp, and a wrapper around the tracking datas, to separate the responsibility of updating/solving the QP from updating the desired accelerations, contact forces, etc.
This change is