45 enum joint { Q1 = 0, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, MAX_JOINTS };
46 enum cart { X = 0, Y, Z, ROTX, ROTY, ROTZ, NUM_CART_COORDS };
48 bool configure(yarp::os::ResourceFinder & rf)
override;
49 bool updateModule()
override;
50 bool interruptModule()
override;
51 double getPeriod()
override;
52 bool close()
override;
55 enum control_modes { NOT_CONTROLLING, JOINT_MODE, CARTESIAN_MODE };
56 enum joint_mode { POSITION, VELOCITY };
58 static const std::plus<double> increment_functor;
59 static const std::minus<double> decrement_functor;
61 template <
typename func>
62 void incrementOrDecrementJointCommand(joint j, func op);
64 template <
typename func>
65 void incrementOrDecrementCartesianCommand(cart coord, func op);
67 void toggleJointMode();
68 void toggleReferenceFrame();
72 void printJointPositions();
73 void printCartesianPositions();
79#if YARP_VERSION_COMPARE(>=, 4,0,0)
86 double jointPosStep {0.0};
87 double jointVelStep {0.0};
90 std::string angleRepr;
92 control_modes controlMode {NOT_CONTROLLING};
93 joint_mode jointMode {VELOCITY};
95 bool supportsFrameToggle {
false};
96 bool usingThread {
false};
99 yarp::dev::PolyDriver controlBoardDevice;
100 yarp::dev::PolyDriver cartesianControlDevice;
102 yarp::dev::IEncoders * iEncoders {
nullptr};
103 yarp::dev::IControlMode * iControlMode {
nullptr};
104 yarp::dev::IControlLimits * iControlLimits {
nullptr};
105 yarp::dev::IPositionControl * iPositionControl {
nullptr};
106 yarp::dev::IVelocityControl * iVelocityControl {
nullptr};
110 std::vector<double> minPositionLimits;
111 std::vector<double> maxPositionLimits;
112 std::vector<double> maxVelocityLimits;
113 std::vector<double> currentJointVels;
114 std::vector<double> currentCartVels;