|
| VelocitySceneQP (RobotModelPtr robot_model, QPSolverPtr solver, const double dt) |
| WbcVelocityScene.
|
|
virtual | ~VelocitySceneQP () |
|
virtual const HierarchicalQP & | update () |
| Update the wbc scene.
|
|
void | setHessianRegularizer (const double reg) |
| setHessianRegularizer
|
|
double | getHessianRegularizer () |
| Return the current value of hessian regularizer.
|
|
| VelocityScene (RobotModelPtr robot_model, QPSolverPtr solver, const double dt) |
|
virtual | ~VelocityScene () |
|
virtual const base::commands::Joints & | solve (const HierarchicalQP &hqp) |
| Solve the given optimization problem.
|
|
virtual const TasksStatus & | updateTasksStatus () |
| Compute y and y_solution for each task. y_solution denotes the task velocity that can be achieved with the solution generated by the solver and y denotes the actual joint velocity achieved by the robot. Both values can be used to evaluate the performance of WBC.
|
|
| Scene (RobotModelPtr robot_model, QPSolverPtr solver, const double dt) |
|
| ~Scene () |
|
virtual bool | configure (const std::vector< TaskConfig > &config) |
| Configure the WBC scene. Create tasks and sort them by priority.
|
|
void | setReference (const std::string &task_name, const base::samples::Joints &ref) |
| Set reference input for a joint space task.
|
|
void | setReference (const std::string &task_name, const base::samples::RigidBodyStateSE3 &ref) |
| Set reference input for a cartesian space task.
|
|
void | setTaskWeights (const std::string &task_name, const base::VectorXd &weights) |
| Set Task weights input for a task.
|
|
void | setTaskActivation (const std::string &task_name, double activation) |
| Set Task activation for a task.
|
|
TaskPtr | getTask (const std::string &name) |
| Return a Particular task. Throw if the task does not exist.
|
|
bool | hasTask (const std::string &name) |
| True in case the given task exists.
|
|
const TasksStatus & | getTasksStatus () const |
| Returns all tasks as vector.
|
|
void | getHierarchicalQP (HierarchicalQP &_hqp) |
| Return tasks sorted by priority for the solver.
|
|
const base::commands::Joints & | getSolverOutput () const |
| Get current solver output.
|
|
const base::VectorXd & | getSolverOutputRaw () const |
| Get current solver output in raw values.
|
|
void | setJointWeights (const JointWeights &weights) |
| set Joint weights by given name
|
|
const JointWeights & | getJointWeights () const |
| Get Joint weights as Named vector.
|
|
const JointWeights & | getActuatedJointWeights () const |
| Get Joint weights as Named vector.
|
|
RobotModelPtr | getRobotModel () |
| Return the current robot model.
|
|
QPSolverPtr | getSolver () |
| Return the current solver.
|
|
std::vector< TaskConfig > | getWbcConfig () |
| Return task configuration.
|
|
Velocity-based implementation of the WBC Scene. It sets up and solves the following problem:
\[
\begin{array}{ccc}
minimize & \| \mathbf{J}_w\dot{\mathbf{q}} - \mathbf{v}_d\|_2& \\
\mathbf{\dot{q}} & & \\
& & \\
s.t. & \mathbf{J}_{c,i}\dot{\mathbf{q}}=0, \, \forall i & \\
& \dot{\mathbf{q}}_{m} \leq \dot{\mathbf{q}} \leq \dot{\mathbf{q}}_{M} & \\
\end{array}
\]
In contrast to the VelocityScene class, the tasks are formulated within the cost function instead of modeling them as tasks. The problem is solved with respect to a number of rigid contacts \(\mathbf{J}_{c,i}\dot{\mathbf{q}}=0, \, \forall i \) and under consideration of the joint velocity limits of the robot.
\(\dot{\mathbf{q}}\) - Vector of robot joint velocities
\(\mathbf{v}_{d}\) - Desired Spatial velocities of all tasks stacked in a vector
\(\mathbf{J}\) - Task Jacobians of all tasks stacked in a single matrix
\(\mathbf{J}_w = \mathbf{W}\mathbf{J}\) - Weighted task Jacobians
\(\mathbf{W}\) - Diagonal task weight matrix
\(\dot{\mathbf{q}}_{m},\dot{\mathbf{q}}_{M}\) - Joint velocity limits
\(\mathbf{J}_{c,i}\) - Contact Jcaobian of i-th contact point