38 #ifndef vpRobotFrankaSim_h 39 #define vpRobotFrankaSim_h 45 #include <visp3/core/vpConfig.h> 46 #include <visp3/core/vpPoseVector.h> 47 #include <visp3/core/vpThetaUVector.h> 48 #include <visp3/robot/vpRobot.h> 50 #if defined( VISP_HAVE_OROCOS_KDL ) 52 #ifdef VISP_HAVE_OROCOS_KDL 53 #include <kdl/chain.hpp> 54 #include <kdl/chainfksolver.hpp> 55 #include <kdl/chainfksolverpos_recursive.hpp> 56 #include <kdl/chainiksolverpos_nr.hpp> 57 #include <kdl/chainiksolverpos_nr_jl.hpp> 58 #include <kdl/chainiksolvervel_pinv.hpp> 59 #include <kdl/chainjnttojacsolver.hpp> 60 #include <kdl/frames_io.hpp> 61 #include <kdl/solveri.hpp> 73 vpRobot::vpRobotStateType getRobotState(
void );
75 void get_fJe( vpMatrix &fJe );
76 void get_fJe(
const vpColVector &q, vpMatrix &fJe );
77 void get_eJe( vpMatrix &eJe_ );
78 void get_eJe(
const vpColVector &q, vpMatrix &fJe );
79 vpHomogeneousMatrix get_eMc()
const;
80 vpHomogeneousMatrix get_fMe(
const vpColVector &q );
81 vpHomogeneousMatrix get_fMe();
82 vpHomogeneousMatrix get_flMe()
const;
83 vpHomogeneousMatrix get_flMcom()
const;
84 double get_tool_mass()
const;
86 void getGravity( vpColVector &gravity );
87 void getMass( vpMatrix &mass );
88 void getCoriolis( vpColVector &coriolis );
89 void getCoriolisMatrix( vpMatrix &coriolis );
90 void getFriction( vpColVector &
friction );
92 virtual void getForceTorque(
const vpRobot::vpControlFrameType frame, vpColVector &force );
93 virtual void getPosition(
const vpRobot::vpControlFrameType frame, vpColVector &position );
94 virtual void getPosition(
const vpRobot::vpControlFrameType frame, vpPoseVector &position );
95 virtual void getVelocity(
const vpRobot::vpControlFrameType frame, vpColVector &d_position );
97 virtual void set_eMc(
const vpHomogeneousMatrix &eMc );
98 virtual void setForceTorque(
const vpRobot::vpControlFrameType frame,
const vpColVector &force );
99 virtual void setPosition(
const vpRobot::vpControlFrameType frame,
const vpColVector &position );
100 virtual void setVelocity(
const vpRobot::vpControlFrameType frame,
const vpColVector &vel );
102 virtual void add_tool(
const vpHomogeneousMatrix &flMe,
const double mL,
const vpHomogeneousMatrix &flMcom,
103 const vpMatrix &I_L );
104 virtual void set_flMe(
const vpHomogeneousMatrix &flMe );
105 virtual void set_g0(
const vpColVector &g0 );
111 inline void setVerbose(
bool verbose ) { m_verbose = verbose; }
129 vpColVector solveIK(
const vpHomogeneousMatrix &edMw );
130 vpColVector getVelDes();
132 #ifdef VISP_HAVE_OROCOS_KDL vpColVector friction(const vpColVector &dq)
vpColVector m_dq_des_filt
vpColVector m_tau_J_des_filt
KDL::JntArray m_q_max_kdl
KDL::JntArray m_dq_des_kdl
KDL::ChainFkSolverPos_recursive * m_fksolver_kdl
KDL::JntArray m_q_min_kdl
KDL::ChainIkSolverVel_pinv * m_diffIkSolver_kdl
vpVelocityTwistMatrix m_eVc
KDL::ChainJntToJacSolver * m_jacobianSolver_kdl
void setVerbose(bool verbose)
vpHomogeneousMatrix m_flMcom
vpHomogeneousMatrix m_eMc
vpHomogeneousMatrix m_flMe
vpRobot::vpRobotStateType m_stateRobot
KDL::ChainIkSolverPos_NR_JL * m_iksolver_JL_kdl