kdlTypekit.hpp
Go to the documentation of this file.
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


kdl_typekit
Author(s): Steven Bellens, Ruben Smits
autogenerated on Thu Aug 27 2015 14:59:41