jacobian.hpp
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 Eigen::Matrix<double,6,Eigen::Dynamic> data;
00034 Jacobian();
00035 Jacobian(unsigned int nr_of_columns);
00036 Jacobian(const Jacobian& arg);
00037
00039 void resize(unsigned int newNrOfColumns);
00040
00042 Jacobian& operator=(const Jacobian& arg);
00043
00044 bool operator ==(const Jacobian& arg)const;
00045 bool operator !=(const Jacobian& arg)const;
00046
00047 friend bool Equal(const Jacobian& a,const Jacobian& b,double eps=epsilon);
00048
00049
00050 ~Jacobian();
00051
00052 double operator()(unsigned int i,unsigned int j)const;
00053 double& operator()(unsigned int i,unsigned int j);
00054 unsigned int rows()const;
00055 unsigned int columns()const;
00056
00057 friend void SetToZero(Jacobian& jac);
00058
00059 friend bool changeRefPoint(const Jacobian& src1, const Vector& base_AB, Jacobian& dest);
00060 friend bool changeBase(const Jacobian& src1, const Rotation& rot, Jacobian& dest);
00061 friend bool changeRefFrame(const Jacobian& src1,const Frame& frame, Jacobian& dest);
00062
00063 Twist getColumn(unsigned int i) const;
00064 void setColumn(unsigned int i,const Twist& t);
00065
00066 void changeRefPoint(const Vector& base_AB);
00067 void changeBase(const Rotation& rot);
00068 void changeRefFrame(const Frame& frame);
00069
00070
00071 };
00072
00073 bool changeRefPoint(const Jacobian& src1, const Vector& base_AB, Jacobian& dest);
00074 bool changeBase(const Jacobian& src1, const Rotation& rot, Jacobian& dest);
00075 bool changeRefFrame(const Jacobian& src1,const Frame& frame, Jacobian& dest);
00076
00077
00078 }
00079
00080 #endif