merge with/from trunk at r35190
[blender.git] / intern / itasc / kdl / treefksolverpos_recursive.hpp
1 // Copyright  (C)  2007  Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
2 // Copyright  (C)  2008 Julia Jesse
3
4 // Version: 1.0
5 // Author: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
6 // Maintainer: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
7 // URL: http://www.orocos.org/kdl
8
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the GNU Lesser General Public
11 // License as published by the Free Software Foundation; either
12 // version 2.1 of the License, or (at your option) any later version.
13
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 // Lesser General Public License for more details.
18
19 // You should have received a copy of the GNU Lesser General Public
20 // License along with this library; if not, write to the Free Software
21 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22
23 #ifndef KDLTREEFKSOLVERPOS_RECURSIVE_HPP
24 #define KDLTREEFKSOLVERPOS_RECURSIVE_HPP
25
26 #include "treefksolver.hpp"
27
28 namespace KDL {
29
30     /**
31      * Implementation of a recursive forward position kinematics
32      * algorithm to calculate the position transformation from joint
33      * space to Cartesian space of a general kinematic tree (KDL::Tree).
34      *
35      * @ingroup KinematicFamily
36      */
37     class TreeFkSolverPos_recursive : public TreeFkSolverPos
38     {
39     public:
40         TreeFkSolverPos_recursive(const Tree& tree);
41         ~TreeFkSolverPos_recursive();
42
43                 virtual int JntToCart(const JntArray& q_in, Frame& p_out, const std::string& segmentName, const std::string& baseName);
44
45     private:
46         const Tree tree;
47         
48         Frame recursiveFk(const JntArray& q_in, const SegmentMap::const_iterator& it, const SegmentMap::const_iterator& baseit);
49     };
50
51 }
52
53 #endif