555 std::string _boardname;
558 std::map<std::string, Pid_Algorithm*> minjerkAlgoMap;
560 std::map<std::string, Pid_Algorithm*> torqueAlgoMap;
565 std::vector<std::string> _positionControlLaw;
566 std::vector<std::string> _velocityControlLaw;
567 std::vector<std::string> _mixedControlLaw;
570 std::vector<std::string> _torqueControlLaw;
571 std::vector<std::string> _currentControlLaw;
572 std::vector<std::string> _speedControlLaw;
581 double *_velocityThres;
588 bool parseControlsGroup(yarp::os::Searchable &config);
590 bool parseSelectedPositionControl(yarp::os::Searchable &config);
591 bool parseSelectedVelocityControl(yarp::os::Searchable &config);
592 bool parseSelectedMixedControl(yarp::os::Searchable &config);
595 bool parseSelectedTorqueControl(yarp::os::Searchable &config);
597 bool parseSelectedCurrentPid(yarp::os::Searchable &config,
bool pidisMandatory,
PidInfo *pids);
598 bool parseSelectedSpeedPid(yarp::os::Searchable &config,
bool pidisMandatory,
PidInfo *pids);
600 bool parsePid_minJerk_outPwm(yarp::os::Bottle &b_pid, std::string controlLaw);
601 bool parsePid_minJerk_outCur(yarp::os::Bottle &b_pid, std::string controlLaw);
602 bool parsePid_minJerk_outVel(yarp::os::Bottle &b_pid, std::string controlLaw);
608 bool parsePid_torque_outPwm(yarp::os::Bottle &b_pid, std::string controlLaw);
609 bool parsePid_torque_outCur(yarp::os::Bottle &b_pid, std::string controlLaw);
610 bool parsePid_torque_outVel(yarp::os::Bottle &b_pid, std::string controlLaw);
612 bool parsePidsGroup2FOC(yarp::os::Bottle& pidsGroup, Pid myPid[]);
613 bool parsePidsGroupSimple(yarp::os::Bottle& pidsGroup, Pid myPid[]);
614 bool parsePidsGroupExtended(yarp::os::Bottle& pidsGroup, Pid myPid[]);
615 bool parsePidsGroupDeluxe(yarp::os::Bottle& pidsGroup, Pid myPid[]);
617 bool parsePidsGroup(yarp::os::Bottle& pidsGroup, yarp::dev::Pid myPid[], std::string prefix);
619 bool parsePidUnitsType(yarp::os::Bottle &bPid, yarp::dev::PidFeedbackUnitsEnum &fbk_pidunits, yarp::dev::PidOutputUnitsEnum& out_pidunits);
621 bool checkJointTypes(
PidInfo *pids,
const std::string &pid_type);
622 bool checkSinglePid(
PidInfo &firstPid,
PidInfo ¤tPid,
const int &firstjoint,
const int ¤tjoint,
const std::string &pid_type);
624 bool convert(std::string
const &fromstring, eOmc_jsetconstraint_t &jsetconstraint,
bool& formaterror);
625 bool convert(yarp::os::Bottle &bottle, std::vector<double> &matrix,
bool &formaterror,
int targetsize);
628 bool extractGroup(yarp::os::Bottle &input, yarp::os::Bottle &
out,
const std::string &key1,
const std::string &txt,
int size,
bool mandatory=
true);
630 bool checkAndSetVectorSize(std::vector<T> &vec,
int size,
const std::string &funcName)
632 if(size > (
int)vec.capacity())
634 yError() <<
"embObjMC BOARD " << _boardname <<
" in " << funcName.c_str() <<
": try to insert " << size <<
"element in vector with " << vec.capacity() <<
" elements";
643 void debugUtil_printControlLaws(
void);
647 Parser(
int numofjoints, std::string boardname);
651 bool parseFocGroup(yarp::os::Searchable &config,
focBasedSpecificInfo_t *foc_based_info, std::string groupName, std::vector<std::unique_ptr<eomc::ITemperatureSensor>>& temperatureSensorsVector);
653 bool parseJointsetCfgGroup(yarp::os::Searchable &config, std::vector<JointsSet> &jsets, std::vector<int> &jointtoset);
654 bool parseTimeoutsGroup(yarp::os::Searchable &config, std::vector<timeouts_t> &timeouts,
int defaultTimeout);
655 bool parseCurrentLimits(yarp::os::Searchable &config, std::vector<motorCurrentLimits_t> &currLimits);
656 bool parseTemperatureLimits(yarp::os::Searchable &config, std::vector<temperatureLimits_t> &temperatureLimits);
657 bool parseJointsLimits(yarp::os::Searchable &config, std::vector<jointLimits_t> &jointsLimits);
658 bool parseRotorsLimits(yarp::os::Searchable &config, std::vector<rotorLimits_t> &rotorsLimits);
661 bool parseBehaviourFalgs(yarp::os::Searchable &config,
bool &useRawEncoderData,
bool &pwmIsLimited);
663 bool parseAxisInfo(yarp::os::Searchable &config,
int axisMap[], std::vector<axisInfo_t> &axisInfo);
667 bool parseGearboxValues(yarp::os::Searchable &config,
double gearbox_M2J[],
double gearbox_E2J[]);
669 bool parseImpedanceGroup(yarp::os::Searchable &config,std::vector<impedanceParameters_t> &impedance);
670 bool parseLugreGroup(yarp::os::Searchable &config,std::vector<lugreParameters_t> &lugre);
671 bool parseDeadzoneValue(yarp::os::Searchable &config,
double deadzone[],
bool *found);
672 bool parseKalmanFilterParams(yarp::os::Searchable &config, std::vector<kalmanFilterParams_t> &kalmanFilterParams);