wbc
|
Velocity-based implementation of the WBC Scene. It sets up and solves the following problem: More...
#include <VelocityScene.hpp>
Public Member Functions | |
VelocityScene (RobotModelPtr robot_model, QPSolverPtr solver, const double dt) | |
virtual | ~VelocityScene () |
virtual const HierarchicalQP & | update () |
Update the wbc scene and setup the optimization problem. | |
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. | |
Public Member Functions inherited from wbc::Scene | |
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. | |
Protected Member Functions | |
virtual TaskPtr | createTask (const TaskConfig &config) |
Create a task and add it to the WBC scene. | |
Protected Member Functions inherited from wbc::Scene | |
void | clearTasks () |
Delete all tasks and free memory. | |
Protected Attributes | |
base::VectorXd | q |
base::VectorXd | qd |
base::VectorXd | qdd |
Protected Attributes inherited from wbc::Scene | |
RobotModelPtr | robot_model |
QPSolverPtr | solver |
std::vector< std::vector< TaskPtr > > | tasks |
std::vector< std::vector< ConstraintPtr > > | constraints |
TasksStatus | tasks_status |
HierarchicalQP | hqp |
std::vector< int > | n_task_variables_per_prio |
bool | configured |
base::commands::Joints | solver_output_joints |
JointWeights | joint_weights |
JointWeights | actuated_joint_weights |
std::vector< TaskConfig > | wbc_config |
base::VectorXd | solver_output |
Static Protected Attributes | |
static SceneRegistry< VelocityScene > | reg |
Additional Inherited Members | |
Static Public Member Functions inherited from wbc::Scene | |
static void | sortTaskConfig (const std::vector< TaskConfig > &config, std::vector< std::vector< TaskConfig > > &sorted_config) |
Sort task config by the priorities of the tasks. | |
static uint | getNTaskVariables (const std::vector< TaskConfig > &config) |
Return number of tasks per priority, given the task config. | |
static std::vector< int > | getNTaskVariablesPerPrio (const std::vector< TaskConfig > &config) |
Return number of tasks per priority, given the task config. | |
Velocity-based implementation of the WBC Scene. It sets up and solves the following problem:
\[ \begin{array}{ccc} minimize & \| \dot{\mathbf{q}} \|_2& \\ \mathbf{\dot{q}} & & \\ s.t. & \mathbf{J}_w\dot{\mathbf{q}}=\mathbf{v}_{d} \end{array} \]
\(\dot{\mathbf{q}}\) - Vector of robot joint velocities
\(\mathbf{v}_{d}\) - desired task space velocities of all tasks stacked in a vector
\(\mathbf{J}\) - task Jacobians of all tasks stacked in a single matrix
\(\mathbf{J}_w\) - Weighted task Jacobians
\(\mathbf{W}\) - Diagonal task weight matrix
The tasks are all modeled as linear equality tasks to the above optimization problem. The task hierarchies are kept, i.e., multiple priorities are possible, depending on the solver.
wbc::VelocityScene::VelocityScene | ( | RobotModelPtr | robot_model, |
QPSolverPtr | solver, | ||
const double | dt ) |
|
inlinevirtual |
|
protectedvirtual |
Create a task and add it to the WBC scene.
Implements wbc::Scene.
|
virtual |
Solve the given optimization problem.
Implements wbc::Scene.
|
virtual |
Update the wbc scene and setup the optimization problem.
Implements wbc::Scene.
Reimplemented in wbc::VelocitySceneQP.
|
virtual |
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.
Implements wbc::Scene.
|
protected |
|
protected |
|
protected |
|
staticprotected |