Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KDL_JACOBIAN_HPP
00023 #define KDL_JACOBIAN_HPP
00024
00025 #include "frames.hpp"
00026 #include <Eigen/Core>
00027
00028 namespace KDL
00029 {
00030 class Jacobian
00031 {
00032 public:
00033
00034 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
00035 Eigen::Matrix<double,6,Eigen::Dynamic> data;
00036 Jacobian();
00037 explicit Jacobian(unsigned int nr_of_columns);
00038 Jacobian(const Jacobian& arg);
00039
00041 void resize(unsigned int newNrOfColumns);
00042
00044 Jacobian& operator=(const Jacobian& arg);
00045
00046 bool operator ==(const Jacobian& arg)const;
00047 bool operator !=(const Jacobian& arg)const;
00048
00049 friend bool Equal(const Jacobian& a,const Jacobian& b,double eps=epsilon);
00050
00051
00052 ~Jacobian();
00053
00054 double operator()(unsigned int i,unsigned int j)const;
00055 double& operator()(unsigned int i,unsigned int j);
00056 unsigned int rows()const;
00057 unsigned int columns()const;
00058
00059 friend void SetToZero(Jacobian& jac);
00060
00061 friend bool changeRefPoint(const Jacobian& src1, const Vector& base_AB, Jacobian& dest);
00062 friend bool changeBase(const Jacobian& src1, const Rotation& rot, Jacobian& dest);
00063 friend bool changeRefFrame(const Jacobian& src1,const Frame& frame, Jacobian& dest);
00064
00065 Twist getColumn(unsigned int i) const;
00066 void setColumn(unsigned int i,const Twist& t);
00067
00068 void changeRefPoint(const Vector& base_AB);
00069 void changeBase(const Rotation& rot);
00070 void changeRefFrame(const Frame& frame);
00071
00072
00073 };
00074
00075 bool changeRefPoint(const Jacobian& src1, const Vector& base_AB, Jacobian& dest);
00076 bool changeBase(const Jacobian& src1, const Rotation& rot, Jacobian& dest);
00077 bool changeRefFrame(const Jacobian& src1,const Frame& frame, Jacobian& dest);
00078
00079
00080 }
00081
00082 #endif