00001 /************************************************************************ 00002 * Verve * 00003 * Copyright (C) 2004-2006 * 00004 * Tyler Streeter tylerstreeter@gmail.com * 00005 * All rights reserved. * 00006 * Web: http://verve-agents.sourceforge.net * 00007 * * 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of EITHER: * 00010 * (1) The GNU Lesser General Public License as published by the Free * 00011 * Software Foundation; either version 2.1 of the License, or (at * 00012 * your option) any later version. The text of the GNU Lesser * 00013 * General Public License is included with this library in the * 00014 * file license-LGPL.txt. * 00015 * (2) The BSD-style license that is included with this library in * 00016 * the file license-BSD.txt. * 00017 * * 00018 * This library is distributed in the hope that it will be useful, * 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * 00021 * license-LGPL.txt and license-BSD.txt for more details. * 00022 ************************************************************************/ 00023 00024 #ifndef VERVE_AGENT_DESCRIPTOR_H 00025 #define VERVE_AGENT_DESCRIPTOR_H 00026 00027 #include "Globals.h" 00028 00029 namespace verve 00030 { 00032 struct ContinuousSensorDescriptor 00033 { 00034 ContinuousSensorDescriptor() 00035 { 00036 isCircular = false; 00037 } 00038 00045 bool isCircular; 00046 }; 00047 00049 struct DiscreteSensorDescriptor 00050 { 00051 DiscreteSensorDescriptor() 00052 { 00053 numOptions = 0; 00054 } 00055 00059 unsigned int numOptions; 00060 }; 00061 00064 class AgentDescriptor 00065 { 00066 public: 00067 VERVE_DECL AgentDescriptor(); 00068 00069 VERVE_DECL AgentDescriptor(const AgentDescriptor& desc); 00070 00071 VERVE_DECL virtual ~AgentDescriptor(); 00072 00081 VERVE_DECL virtual void VERVE_CALL addDiscreteSensor( 00082 unsigned int numOptions); 00083 00085 VERVE_DECL virtual unsigned int VERVE_CALL 00086 getNumDiscreteSensors()const; 00087 00090 VERVE_DECL virtual unsigned int VERVE_CALL 00091 getDiscreteSensorNumOptions(unsigned int i)const; 00092 00101 VERVE_DECL virtual void VERVE_CALL addContinuousSensor( 00102 bool isCircular = false); 00103 00105 VERVE_DECL virtual unsigned int VERVE_CALL 00106 getNumContinuousSensors()const; 00107 00110 VERVE_DECL virtual bool VERVE_CALL 00111 getContinuousSensorIsCircular(unsigned int i)const; 00112 00114 VERVE_DECL virtual void VERVE_CALL setNumOutputs( 00115 unsigned int numOutputs); 00116 00118 VERVE_DECL virtual unsigned int VERVE_CALL getNumOutputs()const; 00119 00123 VERVE_DECL virtual void VERVE_CALL setContinuousSensorResolution( 00124 unsigned int resolution); 00125 00127 VERVE_DECL virtual unsigned int VERVE_CALL 00128 getContinuousSensorResolution()const; 00129 00133 VERVE_DECL virtual void VERVE_CALL setDynamicRBFEnabled( 00134 bool enabled); 00135 00137 VERVE_DECL virtual bool VERVE_CALL isDynamicRBFEnabled()const; 00138 00140 VERVE_DECL virtual void VERVE_CALL setArchitecture( 00141 AgentArchitecture arch); 00142 00144 VERVE_DECL virtual AgentArchitecture VERVE_CALL getArchitecture()const; 00145 00148 VERVE_DECL virtual void VERVE_CALL setMaxNumPlanningSteps( 00149 unsigned int steps); 00150 00153 VERVE_DECL virtual unsigned int VERVE_CALL 00154 getMaxNumPlanningSteps()const; 00155 00158 VERVE_DECL virtual void VERVE_CALL setPlanningUncertaintyThreshold( 00159 real threshold); 00160 00163 VERVE_DECL virtual real VERVE_CALL 00164 getPlanningUncertaintyThreshold()const; 00165 00166 private: 00168 std::vector<DiscreteSensorDescriptor> mDiscreteSensors; 00169 00171 std::vector<ContinuousSensorDescriptor> mContinuousSensors; 00172 00174 unsigned int mNumOutputs; 00175 00177 unsigned int mContinuousSensorResolution; 00178 00180 bool mDynamicRBFEnabled; 00181 00183 AgentArchitecture mAgentArchitecture; 00184 00186 unsigned int mMaxNumPlanningSteps; 00187 00190 real mPlanningUncertaintyThreshold; 00191 }; 00192 } 00193 00194 #endif