You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							126 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							126 lines
						
					
					
						
							3.6 KiB
						
					
					
				| /*
 | |
|  *	This file is part of qpOASES.
 | |
|  *
 | |
|  *	qpOASES -- An Implementation of the Online Active Set Strategy.
 | |
|  *	Copyright (C) 2007-2008 by Hans Joachim Ferreau et al. All rights reserved.
 | |
|  *
 | |
|  *	qpOASES is free software; you can redistribute it and/or
 | |
|  *	modify it under the terms of the GNU Lesser General Public
 | |
|  *	License as published by the Free Software Foundation; either
 | |
|  *	version 2.1 of the License, or (at your option) any later version.
 | |
|  *
 | |
|  *	qpOASES is distributed in the hope that it will be useful,
 | |
|  *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  *	Lesser General Public License for more details.
 | |
|  *
 | |
|  *	You should have received a copy of the GNU Lesser General Public
 | |
|  *	License along with qpOASES; if not, write to the Free Software
 | |
|  *	Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | |
|  *
 | |
|  */
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *	\file INCLUDE/CyclingManager.hpp
 | |
|  *	\author Hans Joachim Ferreau
 | |
|  *	\version 1.3embedded
 | |
|  *	\date 2007-2008
 | |
|  *
 | |
|  *	Declaration of the CyclingManager class designed to detect
 | |
|  *	and handle possible cycling during QP iterations.
 | |
|  */
 | |
| 
 | |
| 
 | |
| #ifndef QPOASES_CYCLINGMANAGER_HPP
 | |
| #define QPOASES_CYCLINGMANAGER_HPP
 | |
| 
 | |
| 
 | |
| #include <Utils.hpp>
 | |
| 
 | |
| 
 | |
| 
 | |
| /** This class is intended to detect and handle possible cycling during QP iterations.
 | |
|  *	As cycling seems to occur quite rarely, this class is NOT FULLY IMPLEMENTED YET!
 | |
|  *
 | |
|  *	\author Hans Joachim Ferreau
 | |
|  *	\version 1.3embedded
 | |
|  *	\date 2007-2008
 | |
|  */
 | |
| class CyclingManager
 | |
| {
 | |
| 	/*
 | |
| 	 *	PUBLIC MEMBER FUNCTIONS
 | |
| 	 */
 | |
| 	public:
 | |
| 		/** Default constructor. */
 | |
| 		CyclingManager( );
 | |
| 
 | |
| 		/** Copy constructor (deep copy). */
 | |
| 		CyclingManager(	const CyclingManager& rhs	/**< Rhs object. */
 | |
| 						);
 | |
| 
 | |
| 		/** Destructor. */
 | |
| 		~CyclingManager( );
 | |
| 
 | |
| 		/** Copy asingment operator (deep copy). */
 | |
| 		CyclingManager& operator=(	const CyclingManager& rhs	/**< Rhs object. */
 | |
| 									);
 | |
| 
 | |
| 
 | |
| 		/** Pseudo-constructor which takes the number of bounds/constraints.
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		returnValue init(	int _nV,	/**< Number of bounds to be managed. */
 | |
| 							int _nC		/**< Number of constraints to be managed. */
 | |
| 							);
 | |
| 
 | |
| 
 | |
| 		/** Stores index of a bound/constraint that might cause cycling.
 | |
| 		 *	\return SUCCESSFUL_RETURN \n
 | |
| 					RET_INDEX_OUT_OF_BOUNDS */
 | |
| 		returnValue setCyclingStatus(	int number,				/**< Number of bound/constraint. */
 | |
| 										BooleanType isBound,	/**< Flag that indicates if given number corresponds to a
 | |
| 																 *   bound (BT_TRUE) or a constraint (BT_FALSE). */
 | |
| 										CyclingStatus _status	/**< Cycling status of bound/constraint. */
 | |
| 										);
 | |
| 
 | |
| 		/** Returns if bound/constraint might cause cycling.
 | |
| 		 *	\return BT_TRUE: bound/constraint might cause cycling \n
 | |
| 		 			BT_FALSE: otherwise */
 | |
| 		CyclingStatus getCyclingStatus(	int number,			/**< Number of bound/constraint. */
 | |
| 										BooleanType isBound	/**< Flag that indicates if given number corresponds to
 | |
| 															 *   a bound (BT_TRUE) or a constraint (BT_FALSE). */
 | |
| 										) const;
 | |
| 
 | |
| 
 | |
| 		/** Clears all previous cycling information.
 | |
| 		 *	\return SUCCESSFUL_RETURN */
 | |
| 		returnValue clearCyclingData( );
 | |
| 
 | |
| 
 | |
| 		/** Returns if cycling was detected.
 | |
| 		 *	\return BT_TRUE iff cycling was detected. */
 | |
| 		inline BooleanType isCyclingDetected( ) const;
 | |
| 
 | |
| 
 | |
| 	/*
 | |
| 	 *	PROTECTED MEMBER VARIABLES
 | |
| 	 */
 | |
| 	protected:
 | |
| 		int	nV;									/**< Number of managed bounds. */
 | |
| 		int	nC;									/**< Number of managed constraints. */
 | |
| 
 | |
| 		CyclingStatus status[NVMAX+NCMAX];		/**< Array to store cycling status of all bounds/constraints. */
 | |
| 
 | |
| 		BooleanType cyclingDetected;			/**< Flag if cycling was detected. */
 | |
| };
 | |
| 
 | |
| 
 | |
| #include <CyclingManager.ipp>
 | |
| 
 | |
| #endif	/* QPOASES_CYCLINGMANAGER_HPP */
 | |
| 
 | |
| 
 | |
| /*
 | |
|  *	end of file
 | |
|  */
 | |
| 
 |