556 std::string _boardname;
559 std::map<std::string, Pid_Algorithm*> minjerkAlgoMap;
561 std::map<std::string, Pid_Algorithm*> torqueAlgoMap;
566 std::vector<std::string> _positionControlLaw;
567 std::vector<std::string> _velocityControlLaw;
568 std::vector<std::string> _mixedControlLaw;
571 std::vector<std::string> _torqueControlLaw;
572 std::vector<std::string> _currentControlLaw;
573 std::vector<std::string> _speedControlLaw;
582 double *_velocityThres;
589 bool parseControlsGroup(yarp::os::Searchable &config);
591 bool parseSelectedPositionControl(yarp::os::Searchable &config);
592 bool parseSelectedVelocityControl(yarp::os::Searchable &config);
593 bool parseSelectedMixedControl(yarp::os::Searchable &config);
596 bool parseSelectedTorqueControl(yarp::os::Searchable &config);
598 bool parseSelectedCurrentPid(yarp::os::Searchable &config,
bool pidisMandatory,
PidInfo *pids);
599 bool parseSelectedSpeedPid(yarp::os::Searchable &config,
bool pidisMandatory,
PidInfo *pids);
601 bool parsePid_minJerk_outPwm(yarp::os::Bottle &b_pid, std::string controlLaw);
602 bool parsePid_minJerk_outCur(yarp::os::Bottle &b_pid, std::string controlLaw);
603 bool parsePid_minJerk_outVel(yarp::os::Bottle &b_pid, std::string controlLaw);
609 bool parsePid_torque_outPwm(yarp::os::Bottle &b_pid, std::string controlLaw);
610 bool parsePid_torque_outCur(yarp::os::Bottle &b_pid, std::string controlLaw);
611 bool parsePid_torque_outVel(yarp::os::Bottle &b_pid, std::string controlLaw);
613 bool parsePidsGroup2FOC(yarp::os::Bottle& pidsGroup, Pid myPid[]);
614 bool parsePidsGroupSimple(yarp::os::Bottle& pidsGroup, Pid myPid[]);
615 bool parsePidsGroupExtended(yarp::os::Bottle& pidsGroup, Pid myPid[]);
616 bool parsePidsGroupDeluxe(yarp::os::Bottle& pidsGroup, Pid myPid[]);
618 bool parsePidsGroup(yarp::os::Bottle& pidsGroup, yarp::dev::Pid myPid[], std::string prefix);
620 bool parsePidUnitsType(yarp::os::Bottle &bPid, yarp::dev::PidFeedbackUnitsEnum &fbk_pidunits, yarp::dev::PidOutputUnitsEnum& out_pidunits);
622 bool checkJointTypes(
PidInfo *pids,
const std::string &pid_type);
623 bool checkSinglePid(
PidInfo &firstPid,
PidInfo ¤tPid,
const int &firstjoint,
const int ¤tjoint,
const std::string &pid_type);
625 bool convert(std::string
const &fromstring, eOmc_jsetconstraint_t &jsetconstraint,
bool& formaterror);
626 bool convert(yarp::os::Bottle &bottle, std::vector<double> &matrix,
bool &formaterror,
int targetsize);
629 bool extractGroup(yarp::os::Bottle &input, yarp::os::Bottle &
out,
const std::string &key1,
const std::string &txt,
int size,
bool mandatory=
true);
631 bool checkAndSetVectorSize(std::vector<T> &vec,
int size,
const std::string &funcName)
633 if(size > (
int)vec.capacity())
635 yError() <<
"embObjMC BOARD " << _boardname <<
" in " << funcName.c_str() <<
": try to insert " << size <<
"element in vector with " << vec.capacity() <<
" elements";
644 void debugUtil_printControlLaws(
void);
648 Parser(
int numofjoints, std::string boardname);
652 bool parseFocGroup(yarp::os::Searchable &config,
focBasedSpecificInfo_t *foc_based_info, std::string groupName, std::vector<std::unique_ptr<eomc::ITemperatureSensor>>& temperatureSensorsVector);
654 bool parseJointsetCfgGroup(yarp::os::Searchable &config, std::vector<JointsSet> &jsets, std::vector<int> &jointtoset);
655 bool parseTimeoutsGroup(yarp::os::Searchable &config, std::vector<timeouts_t> &timeouts,
int defaultTimeout);
656 bool parseCurrentLimits(yarp::os::Searchable &config, std::vector<motorCurrentLimits_t> &currLimits);
657 bool parseTemperatureLimits(yarp::os::Searchable &config, std::vector<temperatureLimits_t> &temperatureLimits);
658 bool parseJointsLimits(yarp::os::Searchable &config, std::vector<jointLimits_t> &jointsLimits);
659 bool parseRotorsLimits(yarp::os::Searchable &config, std::vector<rotorLimits_t> &rotorsLimits);
662 bool parseBehaviourFalgs(yarp::os::Searchable &config,
bool &useRawEncoderData,
bool &pwmIsLimited);
664 bool parseAxisInfo(yarp::os::Searchable &config,
int axisMap[], std::vector<axisInfo_t> &axisInfo);
668 bool parseGearboxValues(yarp::os::Searchable &config,
double gearbox_M2J[],
double gearbox_E2J[]);
670 bool parseImpedanceGroup(yarp::os::Searchable &config,std::vector<impedanceParameters_t> &impedance);
671 bool parseLugreGroup(yarp::os::Searchable &config,std::vector<lugreParameters_t> &lugre);
672 bool parseDeadzoneValue(yarp::os::Searchable &config,
double deadzone[],
bool *found);
673 bool parseKalmanFilterParams(yarp::os::Searchable &config, std::vector<kalmanFilterParams_t> &kalmanFilterParams);