00001 /****************************************************************************** 00002 * This file is part of the KDL project * 00003 * * 00004 * (C) 2010 Ruben Smits * 00005 * 2010 Steven Bellens * 00006 * ruben.smits@mech.kuleuven.be * 00007 * steven.bellens@mech.kuleuven.be * 00008 * Department of Mechanical Engineering, * 00009 * Katholieke Universiteit Leuven, Belgium. * 00010 * * 00011 * You may redistribute this software and/or modify it under either the * 00012 * terms of the GNU Lesser General Public License version 2.1 (LGPLv2.1 * 00013 * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>) or (at your * 00014 * discretion) of the Modified BSD License: * 00015 * Redistribution and use in source and binary forms, with or without * 00016 * modification, are permitted provided that the following conditions * 00017 * are met: * 00018 * 1. Redistributions of source code must retain the above copyright * 00019 * notice, this list of conditions and the following disclaimer. * 00020 * 2. Redistributions in binary form must reproduce the above copyright * 00021 * notice, this list of conditions and the following disclaimer in the * 00022 * documentation and/or other materials provided with the distribution. * 00023 * 3. The name of the author may not be used to endorse or promote * 00024 * products derived from this software without specific prior written * 00025 * permission. * 00026 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * 00027 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * 00028 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * 00029 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,* 00030 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * 00031 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * 00032 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * 00033 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * 00034 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * 00035 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * 00036 * POSSIBILITY OF SUCH DAMAGE. * 00037 * * 00038 *******************************************************************************/ 00039 /* @Description: 00040 * @brief KDL typekit for Orocos RTT 00041 * @Author: Ruben Smits, Steven Bellens 00042 */ 00043 00044 #ifndef ORO_KDL_TYPEKIT_HPP 00045 #define ORO_KDL_TYPEKIT_HPP 00046 00047 #include "kdlTypekitTypes.hpp" 00048 #include <rtt/types/TypekitPlugin.hpp> 00049 #include <kdl/frames.hpp> 00050 #include <rtt/types/Types.hpp> 00051 #include <rtt/types/TemplateTypeInfo.hpp> 00052 #include <rtt/types/SequenceTypeInfo.hpp> 00053 #include <rtt/types/StructTypeInfo.hpp> 00054 #include <rtt/types/Operators.hpp> 00055 #include <rtt/types/OperatorTypes.hpp> 00056 #include <rtt/internal/mystd.hpp> 00057 #include <rtt/os/StartStopManager.hpp> 00058 #include <rtt/internal/GlobalService.hpp> 00059 00060 #include <kdl/frames_io.hpp> 00061 00062 #include <kdl/jntarray.hpp> 00063 #include <kdl/jacobian.hpp> 00064 00065 #include "motionproperties.hpp" 00066 #include "kinfamproperties.hpp" 00067 00068 namespace KDL 00069 { 00070 using namespace RTT; 00071 using namespace RTT::detail; 00072 using namespace std; 00073 00077 class KDLTypekitPlugin 00078 : public RTT::types::TypekitPlugin 00079 { 00080 public: 00081 virtual std::string getName(); 00082 00083 virtual bool loadTypes(); 00084 virtual bool loadConstructors(); 00085 virtual bool loadOperators(); 00086 }; 00087 00091 template<class KDLType> 00092 struct KDLTypeInfo 00093 : public StructTypeInfo<KDLType,true> 00094 { 00095 KDLTypeInfo(std::string name) : StructTypeInfo<KDLType,true>(name) {} 00096 00097 virtual bool decomposeTypeImpl(const KDLType& source, PropertyBag& targetbag ) const { 00098 decomposeProperty( source, targetbag ); 00099 return true; 00100 } 00101 00102 virtual bool composeTypeImpl(const PropertyBag& source, KDLType& result) const { 00103 return composeProperty( source, result ); 00104 } 00105 }; 00106 00110 extern KDLTypekitPlugin KDLTypekit; 00111 } 00112 #endif