00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <kdl/chainfksolver.hpp>
00021 #include <kdl/chainiksolver.hpp>
00022
00023 namespace OCL{
00024 using namespace KDL;
00025
00026 #define KUKA361_L1 1.020
00027 #define KUKA361_L2 0.480
00028 #define KUKA361_L3 0.645
00029 #define KUKA361_L6 0.120
00030
00031 class Kuka361Kinematics : public ChainFkSolverPos,
00032 public ChainFkSolverVel,
00033 public ChainIkSolverVel
00034
00035 {
00036 public:
00037 Kuka361Kinematics():l1(KUKA361_L1),l2(KUKA361_L2),l3(KUKA361_L3),l6(KUKA361_L6)
00038 {};
00039 ~Kuka361Kinematics(){};
00040
00041 virtual int JntToCart(const JntArray& q_in, Frame& p_out,int segmentNr=-1);
00042 virtual int JntToCart(const JntArrayVel& q_in, FrameVel& out,int segmentNr=-1);
00043
00044 virtual int CartToJnt(const JntArray& q_in, const Twist& v_in, JntArray& qdot_out);
00045 virtual int CartToJnt(const JntArray& q_init, const FrameVel& v_in, JntArrayVel& q_out);
00046
00047 int JntToJac(const JntArray& q, Jacobian& J);
00048
00049 private:
00050 double l1,l2,l3,l6;
00051 void calc_eq(const JntArray& q_in,JntArray& q_out);
00052 void calc_eq(const JntArrayVel& q_in, JntArrayVel& q_out);
00053 void calc_eq_inv(const JntArray& q_in,JntArray& q_out);
00054 void calc_eq_inv(const JntArrayVel& q_in, JntArrayVel& q_out);
00055
00056 };
00057 }
00058
00059