KDL 1.5.1
Loading...
Searching...
No Matches
chainiksolvervel_pinv_nso.hpp
Go to the documentation of this file.
1// Copyright (C) 2007 Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
2
3// Version: 1.0
4// Author: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
5// Maintainer: Ruben Smits <ruben dot smits at mech dot kuleuven dot be>
6// URL: http://www.orocos.org/kdl
7
8// This library is free software; you can redistribute it and/or
9// modify it under the terms of the GNU Lesser General Public
10// License as published by the Free Software Foundation; either
11// version 2.1 of the License, or (at your option) any later version.
12
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16// Lesser General Public License for more details.
17
18// You should have received a copy of the GNU Lesser General Public
19// License along with this library; if not, write to the Free Software
20// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
22#ifndef KDL_CHAIN_IKSOLVERVEL_PINV_NSO_HPP
23#define KDL_CHAIN_IKSOLVERVEL_PINV_NSO_HPP
24
25#include "chainiksolver.hpp"
27#include <Eigen/Core>
28
29namespace KDL
30{
47 {
48 public:
63 ChainIkSolverVel_pinv_nso(const Chain& chain, const JntArray& opt_pos, const JntArray& weights, double eps=0.00001,int maxiter=150, double alpha = 0.25);
64 explicit ChainIkSolverVel_pinv_nso(const Chain& chain, double eps=0.00001,int maxiter=150, double alpha = 0.25);
66
67 virtual int CartToJnt(const JntArray& q_in, const Twist& v_in, JntArray& qdot_out);
72 virtual int CartToJnt(const JntArray& /*q_init*/, const FrameVel& /*v_in*/, JntArrayVel& /*q_out*/){return -1;};
73
80 const JntArray& getWeights()const
81 {
82 return weights;
83 }
84
91 const JntArray& getOptPos()const
92 {
93 return opt_pos;
94 }
95
102 const double& getAlpha()const
103 {
104 return alpha;
105 }
106
113 virtual int setWeights(const JntArray &weights);
114
121 virtual int setOptPos(const JntArray &opt_pos);
122
129 virtual int setAlpha(const double alpha);
130
135 int getSVDResult()const {return svdResult;};
136
138 virtual void updateInternalDataStructures();
139
140 private:
141 const Chain& chain;
143 unsigned int nj;
145 Eigen::MatrixXd U;
146 Eigen::VectorXd S;
147 Eigen::VectorXd Sinv;
148 Eigen::MatrixXd V;
149 Eigen::VectorXd tmp;
150 Eigen::VectorXd tmp2;
151 double eps;
154 double alpha;
157 };
158}
159#endif
160
Implementation of a inverse velocity kinematics algorithm based on the generalize pseudo inverse to c...
Definition chainiksolvervel_pinv_nso.hpp:47
~ChainIkSolverVel_pinv_nso()
Definition chainiksolvervel_pinv_nso.cpp:79
Eigen::MatrixXd U
Definition chainiksolvervel_pinv_nso.hpp:145
virtual int CartToJnt(const JntArray &, const FrameVel &, JntArrayVel &)
not (yet) implemented.
Definition chainiksolvervel_pinv_nso.hpp:72
int getSVDResult() const
Retrieve the latest return code from the SVD algorithm.
Definition chainiksolvervel_pinv_nso.hpp:135
JntArray opt_pos
Definition chainiksolvervel_pinv_nso.hpp:156
virtual void updateInternalDataStructures()
Update the internal data structures.
Definition chainiksolvervel_pinv_nso.cpp:65
const double & getAlpha() const
Request null space velocity gain.
Definition chainiksolvervel_pinv_nso.hpp:102
const JntArray & getOptPos() const
Request the optimal joint positions.
Definition chainiksolvervel_pinv_nso.hpp:91
Eigen::VectorXd S
Definition chainiksolvervel_pinv_nso.hpp:146
virtual int setAlpha(const double alpha)
Set null space velocity gain.
Definition chainiksolvervel_pinv_nso.cpp:182
Jacobian jac
Definition chainiksolvervel_pinv_nso.hpp:144
const JntArray & getWeights() const
Request the joint weights for optimization criterion.
Definition chainiksolvervel_pinv_nso.hpp:80
double alpha
Definition chainiksolvervel_pinv_nso.hpp:154
int svdResult
Definition chainiksolvervel_pinv_nso.hpp:153
double eps
Definition chainiksolvervel_pinv_nso.hpp:151
Eigen::VectorXd Sinv
Definition chainiksolvervel_pinv_nso.hpp:147
Eigen::MatrixXd V
Definition chainiksolvervel_pinv_nso.hpp:148
const Chain & chain
Definition chainiksolvervel_pinv_nso.hpp:141
JntArray weights
Definition chainiksolvervel_pinv_nso.hpp:155
virtual int setWeights(const JntArray &weights)
Set joint weights for optimization criterion.
Definition chainiksolvervel_pinv_nso.cpp:166
Eigen::VectorXd tmp2
Definition chainiksolvervel_pinv_nso.hpp:150
unsigned int nj
Definition chainiksolvervel_pinv_nso.hpp:143
virtual int setOptPos(const JntArray &opt_pos)
Set optimal joint positions.
Definition chainiksolvervel_pinv_nso.cpp:174
ChainJntToJacSolver jnt2jac
Definition chainiksolvervel_pinv_nso.hpp:142
Eigen::VectorXd tmp
Definition chainiksolvervel_pinv_nso.hpp:149
ChainIkSolverVel_pinv_nso(const Chain &chain, const JntArray &opt_pos, const JntArray &weights, double eps=0.00001, int maxiter=150, double alpha=0.25)
Constructor of the solver.
Definition chainiksolvervel_pinv_nso.cpp:27
virtual int CartToJnt(const JntArray &q_in, const Twist &v_in, JntArray &qdot_out)
Calculate inverse velocity kinematics, from joint positions and cartesian velocity to joint velocitie...
Definition chainiksolvervel_pinv_nso.cpp:84
int maxiter
Definition chainiksolvervel_pinv_nso.hpp:152
Definition chainiksolver.hpp:66
Class to calculate the jacobian of a general KDL::Chain, it is used by other solvers.
Definition chainjnttojacsolver.hpp:39
Definition chain.hpp:35
Definition framevel.hpp:219
Definition jacobian.hpp:37
Definition jntarrayvel.hpp:46
Definition jntarray.hpp:70
represents both translational and rotational velocities.
Definition frames.hpp:720
Definition articulatedbodyinertia.cpp:26