wbc
wbc::VelocityScene Class Reference

Velocity-based implementation of the WBC Scene. It sets up and solves the following problem: More...

#include <VelocityScene.hpp>

Inheritance diagram for wbc::VelocityScene:
wbc::Scene wbc::VelocitySceneQP

Public Member Functions

 VelocityScene (RobotModelPtr robot_model, QPSolverPtr solver, const double dt)
 
virtual ~VelocityScene ()
 
virtual const HierarchicalQPupdate ()
 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 TasksStatusupdateTasksStatus ()
 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 TasksStatusgetTasksStatus () 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 JointWeightsgetJointWeights () const
 Get Joint weights as Named vector.
 
const JointWeightsgetActuatedJointWeights () const
 Get Joint weights as Named vector.
 
RobotModelPtr getRobotModel ()
 Return the current robot model.
 
QPSolverPtr getSolver ()
 Return the current solver.
 
std::vector< TaskConfiggetWbcConfig ()
 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< TaskConfigwbc_config
 
base::VectorXd solver_output
 

Static Protected Attributes

static SceneRegistry< VelocityScenereg
 

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.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ VelocityScene()

wbc::VelocityScene::VelocityScene ( RobotModelPtr robot_model,
QPSolverPtr solver,
const double dt )

◆ ~VelocityScene()

virtual wbc::VelocityScene::~VelocityScene ( )
inlinevirtual

Member Function Documentation

◆ createTask()

TaskPtr wbc::VelocityScene::createTask ( const TaskConfig & config)
protectedvirtual

Create a task and add it to the WBC scene.

Implements wbc::Scene.

◆ solve()

const base::commands::Joints & wbc::VelocityScene::solve ( const HierarchicalQP & hqp)
virtual

Solve the given optimization problem.

Returns
Solver output as joint velocity command

Implements wbc::Scene.

◆ update()

const HierarchicalQP & wbc::VelocityScene::update ( )
virtual

Update the wbc scene and setup the optimization problem.

Implements wbc::Scene.

Reimplemented in wbc::VelocitySceneQP.

◆ updateTasksStatus()

const TasksStatus & wbc::VelocityScene::updateTasksStatus ( )
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.

Member Data Documentation

◆ q

base::VectorXd wbc::VelocityScene::q
protected

◆ qd

base::VectorXd wbc::VelocityScene::qd
protected

◆ qdd

base::VectorXd wbc::VelocityScene::qdd
protected

◆ reg

SceneRegistry< VelocityScene > wbc::VelocityScene::reg
staticprotected

The documentation for this class was generated from the following files: