qpOASES 3.2.1
An Implementation of the Online Active Set Strategy
Classes | Macros | Enumerations | Functions | Variables
MessageHandling.hpp File Reference
#include <stdio.h>
#include <string.h>
#include <qpOASES/Constants.hpp>
#include <qpOASES/MessageHandling.ipp>

Go to the source code of this file.

Classes

class  MessageHandling
 Handles all kind of error messages, warnings and other information. More...
 
struct  MessageHandling::ReturnValueList
 Data structure for entries in global message list. More...
 

Macros

#define __FILE__   0
 
#define __LINE__   0
 
#define __FUNC__   ("(no function name provided)")
 
#define THROWERROR(retval)   ( getGlobalMessageHandler( )->throwError((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )
 
#define THROWWARNING(retval)   ( getGlobalMessageHandler( )->throwWarning((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )
 
#define THROWINFO(retval)   ( getGlobalMessageHandler( )->throwInfo((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )
 

Enumerations

enum  returnValue {
  TERMINAL_LIST_ELEMENT = -1 , SUCCESSFUL_RETURN = 0 , RET_DIV_BY_ZERO , RET_INDEX_OUT_OF_BOUNDS ,
  RET_INVALID_ARGUMENTS , RET_ERROR_UNDEFINED , RET_WARNING_UNDEFINED , RET_INFO_UNDEFINED ,
  RET_EWI_UNDEFINED , RET_AVAILABLE_WITH_LINUX_ONLY , RET_UNKNOWN_BUG , RET_PRINTLEVEL_CHANGED ,
  RET_NOT_YET_IMPLEMENTED , RET_INDEXLIST_MUST_BE_REORDERD , RET_INDEXLIST_EXCEEDS_MAX_LENGTH , RET_INDEXLIST_CORRUPTED ,
  RET_INDEXLIST_OUTOFBOUNDS , RET_INDEXLIST_ADD_FAILED , RET_INDEXLIST_INTERSECT_FAILED , RET_INDEX_ALREADY_OF_DESIRED_STATUS ,
  RET_ADDINDEX_FAILED , RET_REMOVEINDEX_FAILED , RET_SWAPINDEX_FAILED , RET_NOTHING_TO_DO ,
  RET_SETUP_BOUND_FAILED , RET_SETUP_CONSTRAINT_FAILED , RET_MOVING_BOUND_FAILED , RET_MOVING_CONSTRAINT_FAILED ,
  RET_SHIFTING_FAILED , RET_ROTATING_FAILED , RET_QPOBJECT_NOT_SETUP , RET_QP_ALREADY_INITIALISED ,
  RET_NO_INIT_WITH_STANDARD_SOLVER , RET_RESET_FAILED , RET_INIT_FAILED , RET_INIT_FAILED_TQ ,
  RET_INIT_FAILED_CHOLESKY , RET_INIT_FAILED_HOTSTART , RET_INIT_FAILED_INFEASIBILITY , RET_INIT_FAILED_UNBOUNDEDNESS ,
  RET_INIT_FAILED_REGULARISATION , RET_INIT_SUCCESSFUL , RET_OBTAINING_WORKINGSET_FAILED , RET_SETUP_WORKINGSET_FAILED ,
  RET_SETUP_AUXILIARYQP_FAILED , RET_NO_CHOLESKY_WITH_INITIAL_GUESS , RET_NO_EXTERN_SOLVER , RET_QP_UNBOUNDED ,
  RET_QP_INFEASIBLE , RET_QP_NOT_SOLVED , RET_QP_SOLVED , RET_UNABLE_TO_SOLVE_QP ,
  RET_INITIALISATION_STARTED , RET_HOTSTART_FAILED , RET_HOTSTART_FAILED_TO_INIT , RET_HOTSTART_FAILED_AS_QP_NOT_INITIALISED ,
  RET_ITERATION_STARTED , RET_SHIFT_DETERMINATION_FAILED , RET_STEPDIRECTION_DETERMINATION_FAILED , RET_STEPLENGTH_DETERMINATION_FAILED ,
  RET_OPTIMAL_SOLUTION_FOUND , RET_HOMOTOPY_STEP_FAILED , RET_HOTSTART_STOPPED_INFEASIBILITY , RET_HOTSTART_STOPPED_UNBOUNDEDNESS ,
  RET_WORKINGSET_UPDATE_FAILED , RET_MAX_NWSR_REACHED , RET_CONSTRAINTS_NOT_SPECIFIED , RET_INVALID_FACTORISATION_FLAG ,
  RET_UNABLE_TO_SAVE_QPDATA , RET_STEPDIRECTION_FAILED_TQ , RET_STEPDIRECTION_FAILED_CHOLESKY , RET_CYCLING_DETECTED ,
  RET_CYCLING_NOT_RESOLVED , RET_CYCLING_RESOLVED , RET_STEPSIZE , RET_STEPSIZE_NONPOSITIVE ,
  RET_SETUPSUBJECTTOTYPE_FAILED , RET_ADDCONSTRAINT_FAILED , RET_ADDCONSTRAINT_FAILED_INFEASIBILITY , RET_ADDBOUND_FAILED ,
  RET_ADDBOUND_FAILED_INFEASIBILITY , RET_REMOVECONSTRAINT_FAILED , RET_REMOVEBOUND_FAILED , RET_REMOVE_FROM_ACTIVESET ,
  RET_ADD_TO_ACTIVESET , RET_REMOVE_FROM_ACTIVESET_FAILED , RET_ADD_TO_ACTIVESET_FAILED , RET_CONSTRAINT_ALREADY_ACTIVE ,
  RET_ALL_CONSTRAINTS_ACTIVE , RET_LINEARLY_DEPENDENT , RET_LINEARLY_INDEPENDENT , RET_LI_RESOLVED ,
  RET_ENSURELI_FAILED , RET_ENSURELI_FAILED_TQ , RET_ENSURELI_FAILED_NOINDEX , RET_ENSURELI_FAILED_CYCLING ,
  RET_BOUND_ALREADY_ACTIVE , RET_ALL_BOUNDS_ACTIVE , RET_CONSTRAINT_NOT_ACTIVE , RET_BOUND_NOT_ACTIVE ,
  RET_HESSIAN_NOT_SPD , RET_HESSIAN_INDEFINITE , RET_MATRIX_SHIFT_FAILED , RET_MATRIX_FACTORISATION_FAILED ,
  RET_PRINT_ITERATION_FAILED , RET_NO_GLOBAL_MESSAGE_OUTPUTFILE , RET_DISABLECONSTRAINTS_FAILED , RET_ENABLECONSTRAINTS_FAILED ,
  RET_ALREADY_ENABLED , RET_ALREADY_DISABLED , RET_NO_HESSIAN_SPECIFIED , RET_USING_REGULARISATION ,
  RET_EPS_MUST_BE_POSITVE , RET_REGSTEPS_MUST_BE_POSITVE , RET_HESSIAN_ALREADY_REGULARISED , RET_CANNOT_REGULARISE_IDENTITY ,
  RET_CANNOT_REGULARISE_SPARSE , RET_NO_REGSTEP_NWSR , RET_FEWER_REGSTEPS_NWSR , RET_CHOLESKY_OF_ZERO_HESSIAN ,
  RET_ZERO_HESSIAN_ASSUMED , RET_CONSTRAINTS_ARE_NOT_SCALED , RET_INITIAL_BOUNDS_STATUS_NYI , RET_ERROR_IN_CONSTRAINTPRODUCT ,
  RET_FIX_BOUNDS_FOR_LP , RET_USE_REGULARISATION_FOR_LP , RET_UPDATEMATRICES_FAILED , RET_UPDATEMATRICES_FAILED_AS_QP_NOT_SOLVED ,
  RET_UNABLE_TO_OPEN_FILE , RET_UNABLE_TO_WRITE_FILE , RET_UNABLE_TO_READ_FILE , RET_FILEDATA_INCONSISTENT ,
  RET_OPTIONS_ADJUSTED , RET_UNABLE_TO_ANALYSE_QPROBLEM , RET_NWSR_SET_TO_ONE , RET_UNABLE_TO_READ_BENCHMARK ,
  RET_BENCHMARK_ABORTED , RET_INITIAL_QP_SOLVED , RET_QP_SOLUTION_STARTED , RET_BENCHMARK_SUCCESSFUL ,
  RET_NO_DIAGONAL_AVAILABLE , RET_DIAGONAL_NOT_INITIALISED , RET_ENSURELI_DROPPED , RET_KKT_MATRIX_SINGULAR ,
  RET_QR_FACTORISATION_FAILED , RET_INERTIA_CORRECTION_FAILED , RET_NO_SPARSE_SOLVER , RET_SIMPLE_STATUS_P1 ,
  RET_SIMPLE_STATUS_P0 , RET_SIMPLE_STATUS_M1 , RET_SIMPLE_STATUS_M2 , RET_SIMPLE_STATUS_M3
}
 Defines all symbols for global return values. More...
 

Functions

MessageHandlinggetGlobalMessageHandler ()
 

Variables

BEGIN_NAMESPACE_QPOASES FILE * stdFile
 

Detailed Description

Author
Hans Joachim Ferreau, Andreas Potschka, Christian Kirches (thanks to Leonard Wirsching)
Version
3.2
Date
2007-2017

Declaration of the MessageHandling class including global return values.

Macro Definition Documentation

◆ __FILE__

#define __FILE__   0

Ensures that FILE macro is defined.

◆ __FUNC__

#define __FUNC__   ("(no function name provided)")

Define FUNC macro providing current function for debugging.

◆ __LINE__

#define __LINE__   0

Ensures that LINE macro is defined.

◆ THROWERROR

#define THROWERROR (   retval)    ( getGlobalMessageHandler( )->throwError((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )

Short version of throwError with default values, only returnValue is needed

◆ THROWINFO

#define THROWINFO (   retval)    ( getGlobalMessageHandler( )->throwInfo((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )

Short version of throwInfo with default values, only returnValue is needed

◆ THROWWARNING

#define THROWWARNING (   retval)    ( getGlobalMessageHandler( )->throwWarning((retval),0,__FUNC__,__FILE__,__LINE__,VS_VISIBLE) )

Short version of throwWarning with default values, only returnValue is needed

Enumeration Type Documentation

◆ returnValue

The enumeration returnValueType defines all symbols for global return values. Important: All return values are assumed to be nonnegative!

Author
Hans Joachim Ferreau
Enumerator
TERMINAL_LIST_ELEMENT 

Terminal list element, internal usage only!

SUCCESSFUL_RETURN 

Successful return.

RET_DIV_BY_ZERO 

Division by zero.

RET_INDEX_OUT_OF_BOUNDS 

Index out of bounds.

RET_INVALID_ARGUMENTS 

At least one of the arguments is invalid.

RET_ERROR_UNDEFINED 

Error number undefined.

RET_WARNING_UNDEFINED 

Warning number undefined.

RET_INFO_UNDEFINED 

Info number undefined.

RET_EWI_UNDEFINED 

Error/warning/info number undefined.

RET_AVAILABLE_WITH_LINUX_ONLY 

This function is available under Linux only.

RET_UNKNOWN_BUG 

The error occurred is not yet known.

RET_PRINTLEVEL_CHANGED 

Print level changed. (10)

RET_NOT_YET_IMPLEMENTED 

Requested function is not yet implemented in this version of qpOASES.

RET_INDEXLIST_MUST_BE_REORDERD 

Index list has to be reordered.

RET_INDEXLIST_EXCEEDS_MAX_LENGTH 

Index list exceeds its maximal physical length.

RET_INDEXLIST_CORRUPTED 

Index list corrupted.

RET_INDEXLIST_OUTOFBOUNDS 

Physical index is out of bounds.

RET_INDEXLIST_ADD_FAILED 

Adding indices from another index set failed.

RET_INDEXLIST_INTERSECT_FAILED 

Intersection with another index set failed.

RET_INDEX_ALREADY_OF_DESIRED_STATUS 

Index is already of desired status. (18)

RET_ADDINDEX_FAILED 

Adding index to index set failed.

RET_REMOVEINDEX_FAILED 

Removing index from index set failed. (20)

RET_SWAPINDEX_FAILED 

Cannot swap between different indexsets.

RET_NOTHING_TO_DO 

Nothing to do.

RET_SETUP_BOUND_FAILED 

Setting up bound index failed.

RET_SETUP_CONSTRAINT_FAILED 

Setting up constraint index failed.

RET_MOVING_BOUND_FAILED 

Moving bound between index sets failed.

RET_MOVING_CONSTRAINT_FAILED 

Moving constraint between index sets failed.

RET_SHIFTING_FAILED 

Shifting of bounds/constraints failed.

RET_ROTATING_FAILED 

Rotating of bounds/constraints failed.

RET_QPOBJECT_NOT_SETUP 

The QP object has not been setup correctly, use another constructor.

RET_QP_ALREADY_INITIALISED 

QProblem has already been initialised. (30)

RET_NO_INIT_WITH_STANDARD_SOLVER 

Initialisation via extern QP solver is not yet implemented.

RET_RESET_FAILED 

Reset failed.

RET_INIT_FAILED 

Initialisation failed.

RET_INIT_FAILED_TQ 

Initialisation failed due to TQ factorisation.

RET_INIT_FAILED_CHOLESKY 

Initialisation failed due to Cholesky decomposition.

RET_INIT_FAILED_HOTSTART 

Initialisation failed! QP could not be solved!

RET_INIT_FAILED_INFEASIBILITY 

Initial QP could not be solved due to infeasibility!

RET_INIT_FAILED_UNBOUNDEDNESS 

Initial QP could not be solved due to unboundedness!

RET_INIT_FAILED_REGULARISATION 

Initialisation failed as Hessian matrix could not be regularised.

RET_INIT_SUCCESSFUL 

Initialisation done. (40)

RET_OBTAINING_WORKINGSET_FAILED 

Failed to obtain working set for auxiliary QP.

RET_SETUP_WORKINGSET_FAILED 

Failed to setup working set for auxiliary QP.

RET_SETUP_AUXILIARYQP_FAILED 

Failed to setup auxiliary QP for initialised homotopy.

RET_NO_CHOLESKY_WITH_INITIAL_GUESS 

Externally computed Cholesky factor cannot be combined with an initial guess.

RET_NO_EXTERN_SOLVER 

No extern QP solver available.

RET_QP_UNBOUNDED 

QP is unbounded.

RET_QP_INFEASIBLE 

QP is infeasible.

RET_QP_NOT_SOLVED 

Problems occurred while solving QP with standard solver.

RET_QP_SOLVED 

QP successfully solved.

RET_UNABLE_TO_SOLVE_QP 

Problems occurred while solving QP. (50)

RET_INITIALISATION_STARTED 

Starting problem initialisation...

RET_HOTSTART_FAILED 

Unable to perform homotopy due to internal error.

RET_HOTSTART_FAILED_TO_INIT 

Unable to initialise problem.

RET_HOTSTART_FAILED_AS_QP_NOT_INITIALISED 

Unable to perform homotopy as previous QP is not solved.

RET_ITERATION_STARTED 

Iteration...

RET_SHIFT_DETERMINATION_FAILED 

Determination of shift of the QP data failed.

RET_STEPDIRECTION_DETERMINATION_FAILED 

Determination of step direction failed.

RET_STEPLENGTH_DETERMINATION_FAILED 

Determination of step direction failed.

RET_OPTIMAL_SOLUTION_FOUND 

Optimal solution of neighbouring QP found.

RET_HOMOTOPY_STEP_FAILED 

Unable to perform homotopy step. (60)

RET_HOTSTART_STOPPED_INFEASIBILITY 

Premature homotopy termination because QP is infeasible.

RET_HOTSTART_STOPPED_UNBOUNDEDNESS 

Premature homotopy termination because QP is unbounded.

RET_WORKINGSET_UPDATE_FAILED 

Unable to update working sets according to initial guesses.

RET_MAX_NWSR_REACHED 

Maximum number of working set recalculations performed.

RET_CONSTRAINTS_NOT_SPECIFIED 

Problem does comprise constraints! You also have to specify new constraints' bounds.

RET_INVALID_FACTORISATION_FLAG 

Invalid factorisation flag.

RET_UNABLE_TO_SAVE_QPDATA 

Unable to save QP data.

RET_STEPDIRECTION_FAILED_TQ 

Abnormal termination due to TQ factorisation.

RET_STEPDIRECTION_FAILED_CHOLESKY 

Abnormal termination due to Cholesky factorisation.

RET_CYCLING_DETECTED 

Cycling detected. (70)

RET_CYCLING_NOT_RESOLVED 

Cycling cannot be resolved, QP probably infeasible.

RET_CYCLING_RESOLVED 

Cycling probably resolved.

RET_STEPSIZE 

For displaying performed stepsize.

RET_STEPSIZE_NONPOSITIVE 

For displaying non-positive stepsize.

RET_SETUPSUBJECTTOTYPE_FAILED 

Setup of SubjectToTypes failed.

RET_ADDCONSTRAINT_FAILED 

Addition of constraint to working set failed.

RET_ADDCONSTRAINT_FAILED_INFEASIBILITY 

Addition of constraint to working set failed (due to QP infeasibility).

RET_ADDBOUND_FAILED 

Addition of bound to working set failed.

RET_ADDBOUND_FAILED_INFEASIBILITY 

Addition of bound to working set failed (due to QP infeasibility).

RET_REMOVECONSTRAINT_FAILED 

Removal of constraint from working set failed. (80)

RET_REMOVEBOUND_FAILED 

Removal of bound from working set failed.

RET_REMOVE_FROM_ACTIVESET 

Removing from active set...

RET_ADD_TO_ACTIVESET 

Adding to active set...

RET_REMOVE_FROM_ACTIVESET_FAILED 

Removing from active set failed.

RET_ADD_TO_ACTIVESET_FAILED 

Adding to active set failed.

RET_CONSTRAINT_ALREADY_ACTIVE 

Constraint is already active.

RET_ALL_CONSTRAINTS_ACTIVE 

All constraints are active, no further constraint can be added.

RET_LINEARLY_DEPENDENT 

New bound/constraint is linearly dependent.

RET_LINEARLY_INDEPENDENT 

New bound/constraint is linearly independent.

RET_LI_RESOLVED 

Linear independence of active constraint matrix successfully resolved. (90)

RET_ENSURELI_FAILED 

Failed to ensure linear independence of active constraint matrix.

RET_ENSURELI_FAILED_TQ 

Abnormal termination due to TQ factorisation.

RET_ENSURELI_FAILED_NOINDEX 

QP is infeasible.

RET_ENSURELI_FAILED_CYCLING 

QP is infeasible.

RET_BOUND_ALREADY_ACTIVE 

Bound is already active.

RET_ALL_BOUNDS_ACTIVE 

All bounds are active, no further bound can be added.

RET_CONSTRAINT_NOT_ACTIVE 

Constraint is not active.

RET_BOUND_NOT_ACTIVE 

Bound is not active.

RET_HESSIAN_NOT_SPD 

Projected Hessian matrix not positive definite.

RET_HESSIAN_INDEFINITE 

Hessian matrix is indefinite. (100)

RET_MATRIX_SHIFT_FAILED 

Unable to update matrices or to transform vectors.

RET_MATRIX_FACTORISATION_FAILED 

Unable to calculate new matrix factorisations.

RET_PRINT_ITERATION_FAILED 

Unable to print information on current iteration.

RET_NO_GLOBAL_MESSAGE_OUTPUTFILE 

No global message output file initialised.

RET_DISABLECONSTRAINTS_FAILED 

Unable to disbable constraints.

RET_ENABLECONSTRAINTS_FAILED 

Unable to enbable constraints.

RET_ALREADY_ENABLED 

Bound or constraint is already enabled.

RET_ALREADY_DISABLED 

Bound or constraint is already disabled.

RET_NO_HESSIAN_SPECIFIED 

No Hessian matrix has been specified.

RET_USING_REGULARISATION 

Using regularisation as Hessian matrix is not positive definite. (110)

RET_EPS_MUST_BE_POSITVE 

Eps for regularisation must be sufficiently positive.

RET_REGSTEPS_MUST_BE_POSITVE 

Maximum number of regularisation steps must be non-negative.

RET_HESSIAN_ALREADY_REGULARISED 

Hessian has been already regularised.

RET_CANNOT_REGULARISE_IDENTITY 

Identity Hessian matrix cannot be regularised.

RET_CANNOT_REGULARISE_SPARSE 

Sparse matrix cannot be regularised as diagonal entry is missing.

RET_NO_REGSTEP_NWSR 

No additional regularisation step could be performed due to limits.

RET_FEWER_REGSTEPS_NWSR 

Fewer additional regularisation steps have been performed due to limits.

RET_CHOLESKY_OF_ZERO_HESSIAN 

Cholesky decomposition of (unregularised) zero Hessian matrix.

RET_ZERO_HESSIAN_ASSUMED 

Zero Hessian matrix assumed as null pointer passed without specifying hessianType.

RET_CONSTRAINTS_ARE_NOT_SCALED 

(no longer in use) (120)

RET_INITIAL_BOUNDS_STATUS_NYI 

(no longer in use)

RET_ERROR_IN_CONSTRAINTPRODUCT 

Error in user-defined constraint product function.

RET_FIX_BOUNDS_FOR_LP 

All initial bounds must be fixed when solving an (unregularised) LP.

RET_USE_REGULARISATION_FOR_LP 

Set options.enableRegularisation=BT_TRUE for solving LPs.

RET_UPDATEMATRICES_FAILED 

Unable to update QP matrices.

RET_UPDATEMATRICES_FAILED_AS_QP_NOT_SOLVED 

Unable to update matrices as previous QP is not solved.

RET_UNABLE_TO_OPEN_FILE 

Unable to open file.

RET_UNABLE_TO_WRITE_FILE 

Unable to write into file.

RET_UNABLE_TO_READ_FILE 

Unable to read from file.

RET_FILEDATA_INCONSISTENT 

File contains inconsistent data. (130)

RET_OPTIONS_ADJUSTED 

Options needed to be adjusted for consistency reasons.

RET_UNABLE_TO_ANALYSE_QPROBLEM 

Unable to analyse (S)QProblem(B) object.

RET_NWSR_SET_TO_ONE 

Maximum number of working set changes was set to 1.

RET_UNABLE_TO_READ_BENCHMARK 

Unable to read benchmark data.

RET_BENCHMARK_ABORTED 

Benchmark aborted.

RET_INITIAL_QP_SOLVED 

Initial QP solved.

RET_QP_SOLUTION_STARTED 

Solving QP...

RET_BENCHMARK_SUCCESSFUL 

Benchmark terminated successfully.

RET_NO_DIAGONAL_AVAILABLE 

Sparse matrix does not have entries on full diagonal.

RET_DIAGONAL_NOT_INITIALISED 

Diagonal data of sparse matrix has not been initialised. (140)

RET_ENSURELI_DROPPED 

Linear independence resolved by dropping blocking constraint.

RET_KKT_MATRIX_SINGULAR 

KKT matrix is singular.

RET_QR_FACTORISATION_FAILED 

QR factorization of Schur complement failed.

RET_INERTIA_CORRECTION_FAILED 

Inertia correction failed after KKT matrix had too many negative eigenvalues.

RET_NO_SPARSE_SOLVER 

No factorization routine for the KKT matrix installed.

RET_SIMPLE_STATUS_P1 

QP problem could not be solved within given number of iterations.

RET_SIMPLE_STATUS_P0 

QP problem solved.

RET_SIMPLE_STATUS_M1 

QP problem could not be solved due to an internal error.

RET_SIMPLE_STATUS_M2 

QP problem is infeasible (and thus could not be solved).

RET_SIMPLE_STATUS_M3 

QP problem is unbounded (and thus could not be solved). (150)

Function Documentation

◆ getGlobalMessageHandler()

MessageHandling * getGlobalMessageHandler ( )

Variable Documentation

◆ stdFile

BEGIN_NAMESPACE_QPOASES FILE* stdFile
extern

Default file to display messages.

Referenced by getGlobalMessageHandler(), MessageHandling::MessageHandling(), and MessageHandling::reset().