00001 /* 00002 * This file is part of ACADO Toolkit. 00003 * 00004 * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. 00005 * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, 00006 * Milan Vukov, Rien Quirynen, KU Leuven. 00007 * Developed within the Optimization in Engineering Center (OPTEC) 00008 * under supervision of Moritz Diehl. All rights reserved. 00009 * 00010 * ACADO Toolkit is free software; you can redistribute it and/or 00011 * modify it under the terms of the GNU Lesser General Public 00012 * License as published by the Free Software Foundation; either 00013 * version 3 of the License, or (at your option) any later version. 00014 * 00015 * ACADO Toolkit is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * Lesser General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU Lesser General Public 00021 * License along with ACADO Toolkit; if not, write to the Free Software 00022 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00023 * 00024 */ 00025 00026 00033 #ifndef ACADO_TOOLKIT_CLIPPING_FUNCTIONALITY_HPP 00034 #define ACADO_TOOLKIT_CLIPPING_FUNCTIONALITY_HPP 00035 00036 00037 #include <acado/utils/acado_utils.hpp> 00038 00039 #include <acado/matrix_vector/matrix_vector.hpp> 00040 #include <acado/variables_grid/variables_grid.hpp> 00041 00042 00043 BEGIN_NAMESPACE_ACADO 00044 00045 00056 class ClippingFunctionality 00057 { 00058 // 00059 // PUBLIC MEMBER FUNCTIONS: 00060 // 00061 public: 00062 00065 ClippingFunctionality( ); 00066 00072 ClippingFunctionality( uint _nU, 00073 uint _nP = 0 00074 ); 00075 00080 ClippingFunctionality( const ClippingFunctionality& rhs 00081 ); 00082 00085 ~ClippingFunctionality( ); 00086 00091 ClippingFunctionality& operator=( const ClippingFunctionality& rhs 00092 ); 00093 00094 00102 returnValue setControlLowerLimits( const DVector& _lowerLimit 00103 ); 00104 00113 returnValue setControlLowerLimit( uint idx, 00114 double _lowerLimit 00115 ); 00116 00124 returnValue setControlUpperLimits( const DVector& _upperLimit 00125 ); 00126 00135 returnValue setControlUpperLimit( uint idx, 00136 double _upperLimit 00137 ); 00138 00139 00147 returnValue setParameterLowerLimits( const DVector& _lowerLimit 00148 ); 00149 00158 returnValue setParameterLowerLimit( uint idx, 00159 double _lowerLimit 00160 ); 00161 00169 returnValue setParameterUpperLimits( const DVector& _upperLimit 00170 ); 00171 00180 returnValue setParameterUpperLimit( uint idx, 00181 double _upperLimit 00182 ); 00183 00184 00185 // 00186 // PROTECTED MEMBER FUNCTIONS: 00187 // 00188 protected: 00189 00198 returnValue clipSignals( VariablesGrid& _u, 00199 VariablesGrid& _p = emptyVariablesGrid 00200 ); 00201 00210 returnValue clipSignals( DVector& _u, 00211 DVector& _p = emptyVector 00212 ); 00213 00214 00219 inline uint getNumControlLimits( ) const; 00220 00225 inline uint getNumParameterLimits( ) const; 00226 00227 00228 00229 // 00230 // DATA MEMBERS: 00231 // 00232 protected: 00233 00234 DVector lowerLimitControls; 00235 DVector upperLimitControls; 00237 DVector lowerLimitParameters; 00238 DVector upperLimitParameters; 00239 }; 00240 00241 00242 CLOSE_NAMESPACE_ACADO 00243 00244 00245 00246 #include <acado/control_law/clipping_functionality.ipp> 00247 00248 00249 #endif // ACADO_TOOLKIT_CLIPPING_FUNCTIONALITY_HPP 00250 00251 /* 00252 * end of file 00253 */