Sorry for the clickbait title 😼
Currently tasks::qp::PostureTask is a bit of an outlier: it is a direct tasks::qp::Task while most other are tasks::qp::HighLevelTask. The other offenders are either:
- Multi-robot related tasks (They can also probably be modified)
- Force related tasks (
TorqueTask, ContactTask)
The only thing standing in the way of making it a HighLevelTask is to define it... Indeed, it already behaves as a SetPointTask with the assumption that the jacobian is constant, equal to something that looks like the identity:
Q is set to J but it is equal to J^TJ in that case
normalAcc is omitted because \dot{J} = 0
Making it a HighLevelTask would allow access, among other things to JointsSelector, and allow to set reference velocity/acceleration.
Sorry for the clickbait title 😼
Currently
tasks::qp::PostureTaskis a bit of an outlier: it is a directtasks::qp::Taskwhile most other aretasks::qp::HighLevelTask. The other offenders are either:TorqueTask,ContactTask)The only thing standing in the way of making it a
HighLevelTaskis to define it... Indeed, it already behaves as aSetPointTaskwith the assumption that the jacobian is constant, equal to something that looks like the identity:Qis set toJbut it is equal toJ^TJin that casenormalAccis omitted because\dot{J} = 0Making it a
HighLevelTaskwould allow access, among other things toJointsSelector, and allow to set reference velocity/acceleration.