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