00001 /* 00002 * Software License Agreement (Apache License) 00003 * 00004 * Copyright (c) 2013, Southwest Research Institute 00005 * 00006 * Licensed under the Apache License, Version 2.0 (the "License"); 00007 * you may not use this file except in compliance with the License. 00008 * You may obtain a copy of the License at 00009 * 00010 * http://www.apache.org/licenses/LICENSE-2.0 00011 * 00012 * Unless required by applicable law or agreed to in writing, software 00013 * distributed under the License is distributed on an "AS IS" BASIS, 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 * See the License for the specific language governing permissions and 00016 * limitations under the License. 00017 */ 00018 00019 00020 #ifndef CONSTRAINT_GROUP_H 00021 #define CONSTRAINT_GROUP_H 00022 00023 #include "constraint.h" 00024 #include <boost/ptr_container/ptr_vector.hpp> 00025 00026 namespace constrained_ik 00027 { 00028 00032 class ConstraintGroup : public Constraint 00033 { 00034 public: 00035 ConstraintGroup(); 00036 virtual ~ConstraintGroup() {}; 00037 00038 virtual Eigen::MatrixXd calcJacobian(); 00039 virtual Eigen::VectorXd calcError(); 00040 00041 virtual void init(const Constrained_IK* ik); 00042 virtual void reset(); 00043 virtual void update(const SolverState &state); 00044 virtual bool checkStatus() const; 00045 00046 virtual void add(Constraint* constraint); 00047 virtual void clear() { constraints_.clear(); } 00048 bool empty() const { return constraints_.empty(); } 00049 00050 protected: 00051 boost::ptr_vector<Constraint> constraints_; 00052 00053 }; // class ConstraintGroup 00054 00055 } // namespace constrained_ik 00056 00057 00058 #endif // CONSTRAINT_GROUP_H 00059