OpTaS
1.0.7
An optimization-based task specification library for trajectory optimization and model predictive control.
|
OptimizationBuilder allows you to build/specify an optimization problem. More...
Public Member Functions | |
def | __init__ (self, int T, List[RobotModel] robots=[], List[TaskModel] tasks=[], bool derivs_align=False) |
OptimizationBuilder constructor. More... | |
List[str] | get_model_names (self) |
Return the names of each model. More... | |
int | get_model_index (self, str name) |
Return the index of the model in the list of models. More... | |
Model | get_model (self, str name) |
Return the model with given name. More... | |
CasADiArrayType | get_model_state (self, str name, int t, int time_deriv=0) |
Get the model state at a given time. More... | |
CasADiArrayType | get_model_states (self, str name, int time_deriv=0) |
Get the full state trajectory for a given model. More... | |
CasADiArrayType | get_model_parameters (self, str name, int time_deriv=0) |
Get the array of parameters for a given model. More... | |
CasADiArrayType | get_model_parameter (self, str name, int t, int time_deriv=0) |
Get the model parameter at a given time. More... | |
CasADiArrayType | get_robot_states_and_parameters (self, str name, int time_deriv=0) |
Get the vector of states and parameters for a given model. More... | |
cs.DM | is_cost_quadratic (self) |
True DM(1) when cost function is quadratic in the decision variables, False DM(0) otherwise. More... | |
cs.SX | add_decision_variables (self, str name, int m=1, int n=1, bool is_discrete=False) |
Add decision variables to the optimization problem. More... | |
cs.SX | add_parameter (self, str name, int m=1, int n=1) |
Add a parameter to the optimization problem. More... | |
None | add_cost_term (self, str name, cs.SX cost_term) |
Add cost term to the optimization problem. More... | |
None | add_geq_inequality_constraint (self, str name, CasADiArrayType lhs, Union[None, CasADiArrayType] rhs=None) |
Add the inequality constraint lhs >= rhs to the optimization problem. More... | |
None | add_leq_inequality_constraint (self, str name, CasADiArrayType lhs, Union[None, CasADiArrayType] rhs=None) |
Add the inequality constraint lhs <= rhs to the optimization problem. More... | |
None | add_bound_inequality_constraint (self, str name, CasADiArrayType lhs, CasADiArrayType mid, CasADiArrayType rhs) |
Add the inequality constraint lhs <= mid <= rhs to the optimization problem. More... | |
None | add_equality_constraint (self, str name, CasADiArrayType lhs, Union[None, CasADiArrayType] rhs=None, reduce_constraint=False) |
Add the equality constraint lhs == rhs to the optimization problem. More... | |
None | sphere_collision_avoidance_constraints (self, name, obstacle_names, link_names=None, base_link=None) |
Add collision avoidance constraints, based on spherical representations attached to the robot links and placed in the world. More... | |
None | integrate_model_states (self, str name, int time_deriv, CasADiArrayType dt) |
Integrates the model states over time. More... | |
None | enforce_model_limits (self, str name, int time_deriv=0, Union[None, CasADiArrayType] lo=None, Union[None, CasADiArrayType] up=None, safe_frac=1.0) |
Enforce model limits. More... | |
None | initial_configuration (self, str name, Union[None, CasADiArrayType] init=None, int time_deriv=0) |
Set initial configuration. More... | |
None | fix_configuration (self, str name, CasADiArrayType config=None, int time_deriv=0, int t=0) |
Fix configuration. More... | |
Optimization | build (self) |
Build the optimization problem. More... | |
Public Attributes | |
T | |
Number of time steps for the trajectory. More... | |
derivs_align | |
When true, the time derivatives align for each time step. More... | |
Private Member Functions | |
CasADiArrayType | _x (self) |
Return the decision variables as a casadi.SX vector. More... | |
CasADiArrayType | _p (self) |
Return the parameters as a casadi.SX vector. More... | |
cs.DM | _is_linear_in_x (self, cs.SX y) |
Returns true DM(1) if y is a linear function of the decision variables, false DM(0) otherwise. More... | |
CasADiArrayType | _cost (self) |
Returns the cost function. More... | |
Private Attributes | |
_models | |
List of models. More... | |
_decision_variables | |
SXContainer containing decision variables. More... | |
_parameters | |
SXContainer containing parameters. More... | |
_cost_terms | |
SXContainer containing the cost terms. More... | |
_lin_eq_constraints | |
SXContainer containing the linear equality constraints. More... | |
_lin_ineq_constraints | |
SXContainer containing the linear inequality constraints. More... | |
_ineq_constraints | |
SXContainer containing the inequality constraints. More... | |
_eq_constraints | |
SXContainer containing the equality constraints. More... | |
OptimizationBuilder allows you to build/specify an optimization problem.
def optas.builder.OptimizationBuilder.__init__ | ( | self, | |
int | T, | ||
List[RobotModel] | robots = [] , |
||
List[TaskModel] | tasks = [] , |
||
bool | derivs_align = False |
||
) |
OptimizationBuilder constructor.
@param T Number of time steps for the trajectory. @param robots A list of robot models. @param tasks A list of task models. @param derivs_align When true, the time derivatives align for each time step. Default is False. @return An instance of the OptimizationBuilder class.
|
private |
Returns the cost function.
@return The symbolic cost function.
|
private |
Returns true DM(1) if y is a linear function of the decision variables, false DM(0) otherwise.
@param y Symbolic function of interest. @return True if y is linear in x.
|
private |
Return the parameters as a casadi.SX vector.
@return Symbolic parameters.
|
private |
Return the decision variables as a casadi.SX vector.
@return Symbolic decision variables.
None optas.builder.OptimizationBuilder.add_bound_inequality_constraint | ( | self, | |
str | name, | ||
CasADiArrayType | lhs, | ||
CasADiArrayType | mid, | ||
CasADiArrayType | rhs | ||
) |
Add the inequality constraint lhs <= mid <= rhs to the optimization problem.
@param name Name for the constraint. @param lhs Left-hand side for the inequality constraint. @param mid Middle part of the inequality constraint. @param rhs Right-hand side for the inequality constraint.
None optas.builder.OptimizationBuilder.add_cost_term | ( | self, | |
str | name, | ||
cs.SX | cost_term | ||
) |
Add cost term to the optimization problem.
@param name Name for cost function. @param cost_term Cost term, must be an array with shape 1-by-1.
cs.SX optas.builder.OptimizationBuilder.add_decision_variables | ( | self, | |
str | name, | ||
int | m = 1 , |
||
int | n = 1 , |
||
bool | is_discrete = False |
||
) |
Add decision variables to the optimization problem.
@param name Name of decision variable array. @param m Number of rows in decision variable array. Default is 1. @param n Number of columns in decision variable array. Default is 1. @param is_discret If true, then the decision variables are treated as discrete variables. Default is False. @return Array of the decision variables.
None optas.builder.OptimizationBuilder.add_equality_constraint | ( | self, | |
str | name, | ||
CasADiArrayType | lhs, | ||
Union[None, CasADiArrayType] | rhs = None , |
||
reduce_constraint = False |
|||
) |
Add the equality constraint lhs == rhs to the optimization problem.
@param name Name for the constraint. @param lhs Left-hand side for the inequality constraint. @param rhs Right-hand side for the inequality constraint. If None, then it is replaced with the zero array with the same shape as lhs. @param reduce_constraint When True, the constraints are specified by ||lhs - rhs||^2 = 0. This has the effect of reducing the number of equality constraints in the problem. However, if the constraints are linear they will be treated as nonlinear. Default is False.
None optas.builder.OptimizationBuilder.add_geq_inequality_constraint | ( | self, | |
str | name, | ||
CasADiArrayType | lhs, | ||
Union[None, CasADiArrayType] | rhs = None |
||
) |
Add the inequality constraint lhs >= rhs to the optimization problem.
@param name Name for the constraint. @param lhs Left-hand side for the inequality constraint. @param rhs Right-hand side for the inequality constraint. If None, then it is replaced with the zero array with the same shape as lhs.
None optas.builder.OptimizationBuilder.add_leq_inequality_constraint | ( | self, | |
str | name, | ||
CasADiArrayType | lhs, | ||
Union[None, CasADiArrayType] | rhs = None |
||
) |
Add the inequality constraint lhs <= rhs to the optimization problem.
@param name Name for the constraint. @param lhs Left-hand side for the inequality constraint. @param rhs Right-hand side for the inequality constraint. If None, then it is replaced with the zero array with the same shape as lhs.
cs.SX optas.builder.OptimizationBuilder.add_parameter | ( | self, | |
str | name, | ||
int | m = 1 , |
||
int | n = 1 |
||
) |
Add a parameter to the optimization problem.
@param name Name of parameter array. @param m Number of rows in parameter array. Default is 1. @param n Number of columns in parameter array. Default is 1. @return Array of the parameters.
Optimization optas.builder.OptimizationBuilder.build | ( | self | ) |
Build the optimization problem.
None optas.builder.OptimizationBuilder.enforce_model_limits | ( | self, | |
str | name, | ||
int | time_deriv = 0 , |
||
Union[None, CasADiArrayType] | lo = None , |
||
Union[None, CasADiArrayType] | up = None , |
||
safe_frac = 1.0 |
|||
) |
Enforce model limits.
@param name Name of model. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @param lo Lower limits, if None then model limits specified in the model class are used. @param up Upper limits, if None then model limits specified in the model class are used. @param safe_frac When safe_frac < 1.0, the joint limits are reduced by a fraction of their original values.
None optas.builder.OptimizationBuilder.fix_configuration | ( | self, | |
str | name, | ||
CasADiArrayType | config = None , |
||
int | time_deriv = 0 , |
||
int | t = 0 |
||
) |
Fix configuration.
@param name Name of model. @param config The configuration. When None is passed then it is considered to be zero. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @param t Index for the configuration in trajectory (by default this is the first element but it could also be the last for example in moving horizon estimation).
Model optas.builder.OptimizationBuilder.get_model | ( | self, | |
str | name | ||
) |
Return the model with given name.
@param name Name of the model. @return A task or robot model.
int optas.builder.OptimizationBuilder.get_model_index | ( | self, | |
str | name | ||
) |
Return the index of the model in the list of models.
@param name Name of the model. @return Index of the model in the list of models.
List[str] optas.builder.OptimizationBuilder.get_model_names | ( | self | ) |
Return the names of each model.
@return List of model names.
CasADiArrayType optas.builder.OptimizationBuilder.get_model_parameter | ( | self, | |
str | name, | ||
int | t, | ||
int | time_deriv = 0 |
||
) |
Get the model parameter at a given time.
@param name Name of the model. @param t Index of the desired state. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @return The parameter vector where dim is the model number of parameters
CasADiArrayType optas.builder.OptimizationBuilder.get_model_parameters | ( | self, | |
str | name, | ||
int | time_deriv = 0 |
||
) |
Get the array of parameters for a given model.
@param name Name of the model. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @return The array of parameters where dim is the number of model parameters, and T is the number of time-steps in the trajectory.
CasADiArrayType optas.builder.OptimizationBuilder.get_model_state | ( | self, | |
str | name, | ||
int | t, | ||
int | time_deriv = 0 |
||
) |
Get the model state at a given time.
@param name Name of the model. @param t Index of the desired state. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.) @return The state vector where dim is the model dimension.
CasADiArrayType optas.builder.OptimizationBuilder.get_model_states | ( | self, | |
str | name, | ||
int | time_deriv = 0 |
||
) |
Get the full state trajectory for a given model.
@param name Name of the model. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @return The state vector where dim is the model dimension, and T is the number of time-steps in the trajectory.
CasADiArrayType optas.builder.OptimizationBuilder.get_robot_states_and_parameters | ( | self, | |
str | name, | ||
int | time_deriv = 0 |
||
) |
Get the vector of states and parameters for a given model.
Note that method only applies to to RobotModel. To be replaced by get_model_states_and_parameters once parameters are added to base class Model. @param name Name of the model. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.) @return The vector of parameters where dim is the number of model states and parameters (for a robot it should correspond to the degrees of freedom), and T is the number of time-steps in the trajectory.
None optas.builder.OptimizationBuilder.initial_configuration | ( | self, | |
str | name, | ||
Union[None, CasADiArrayType] | init = None , |
||
int | time_deriv = 0 |
||
) |
Set initial configuration.
@param name Name of model. @param init Initial configuration. If None is passed then this is assumed to be zero. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). The default is 0.
None optas.builder.OptimizationBuilder.integrate_model_states | ( | self, | |
str | name, | ||
int | time_deriv, | ||
CasADiArrayType | dt | ||
) |
Integrates the model states over time.
@param name Name of the model. @param time_deriv The time-deriviative required (i.e. position is 0, velocity is 1, etc.). @param dt Integration time step. If the value is a scalar then the value is used as the time step for the trajectory. When an array is passed, it should have the correct length: ```n = T - (1 if derivs_align else time_deriv)``` where T and derivs_align are flags passed to the optimization builder constructor.
cs.DM optas.builder.OptimizationBuilder.is_cost_quadratic | ( | self | ) |
True DM(1) when cost function is quadratic in the decision variables, False DM(0) otherwise.
@return Truth value if the cost function is quadratic or not.
None optas.builder.OptimizationBuilder.sphere_collision_avoidance_constraints | ( | self, | |
name, | |||
obstacle_names, | |||
link_names = None , |
|||
base_link = None |
|||
) |
Add collision avoidance constraints, based on spherical representations attached to the robot links and placed in the world.
@param name Name of the model. @param obstacle_names A list of strings with names of obstacles. For each object, parameters will be created with labels NAME_position (size 3) and NAME_radii (size 1) that represent the obstacle position and radius respectively. @param link_names The links you want to attach collision avoidance constraints onto; for each link a parameter is created with label NAME_radii (size 1). When None is passed, a sphere is attcahed to each link specified in the URDF. @param base_link Name of the base frame link. When None is passed, the root link in the URDF is used.
|
private |
SXContainer containing the cost terms.
|
private |
SXContainer containing decision variables.
|
private |
SXContainer containing the equality constraints.
|
private |
SXContainer containing the inequality constraints.
|
private |
SXContainer containing the linear equality constraints.
|
private |
SXContainer containing the linear inequality constraints.
|
private |
List of models.
|
private |
SXContainer containing parameters.
optas.builder.OptimizationBuilder.derivs_align |
When true, the time derivatives align for each time step.
optas.builder.OptimizationBuilder.T |
Number of time steps for the trajectory.