00001 /* 00002 * Shared copyright notice and LGPLv3 license statement. 00003 * 00004 * Copyright (C) 2011 The Board of Trustees of The Leland Stanford Junior University. All rights reserved. 00005 * Copyright (C) 2011 University of Texas at Austin. All rights reserved. 00006 * 00007 * Authors: Roland Philippsen (Stanford) and Luis Sentis (UT Austin) 00008 * http://cs.stanford.edu/group/manips/ 00009 * http://www.me.utexas.edu/~hcrl/ 00010 * 00011 * This program is free software: you can redistribute it and/or 00012 * modify it under the terms of the GNU Lesser General Public License 00013 * as published by the Free Software Foundation, either version 3 of 00014 * the License, or (at your option) any later version. 00015 * 00016 * This program is distributed in the hope that it will be useful, but 00017 * WITHOUT ANY WARRANTY; without even the implied warranty of 00018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 * Lesser General Public License for more details. 00020 * 00021 * You should have received a copy of the GNU Lesser General Public 00022 * License along with this program. If not, see 00023 * <http://www.gnu.org/licenses/> 00024 */ 00025 00026 #ifndef OPSPACE_CONTROLLER_HPP 00027 #define OPSPACE_CONTROLLER_HPP 00028 00029 #include <opspace/Parameter.hpp> 00030 #include <opspace/Skill.hpp> 00031 00032 namespace opspace { 00033 00034 class Controller 00035 : public ParameterReflection 00036 { 00037 protected: 00038 explicit Controller(std::string const & name); 00039 00040 public: 00041 virtual Status init(Model const & model) = 0; 00042 00043 virtual Status computeCommand(Model const & model, 00044 Skill & skill, 00045 Vector & gamma) = 0; 00046 00047 virtual void dbg(std::ostream & os, 00048 std::string const & title, 00049 std::string const & prefix) const {} 00050 }; 00051 00052 } 00053 00054 #endif // OPSPACE_CONTROLLER_HPP