11 #ifndef _RANDOMISER_HH_ 12 #define _RANDOMISER_HH_ 20 #include "yaml-cpp/yaml.h" 23 #include <gazebo/gazebo_client.hh> 26 #include "dr_request.pb.h" 28 #include "DRInterface.hh" 49 public:
virtual double sample(std::mt19937 & gen);
56 public: std::normal_distribution<double>
dist;
76 public:
double sample(std::mt19937 & gen)
override;
83 public: std::uniform_real_distribution<double>
dist;
90 private:
bool log_uniform {
false};
99 bool log_uniform=
false);
107 public:
double sample(std::mt19937 & gen)
override;
121 public:
static const char CFG_TARGET_OBJ[];
138 public:
virtual void fillMsg(
DRRequest & msg,
141 std::string & target);
158 std::vector<std::string> & models_);
171 std::string & target)
override;
180 public: std::vector<std::string>
links;
194 std::vector<std::string> & models_,
195 std::vector<std::string> & links_,
196 std::vector<double> & masses_);
209 std::string & target)
override;
218 public: std::vector<std::string>
links;
220 public: std::vector<double>
mu1;
222 public: std::vector<double>
mu2;
224 public: std::vector<double>
kp;
226 public: std::vector<double>
kd;
241 std::vector<std::string> & models_,
242 std::vector<std::string> & links_,
243 std::vector<double> & mu1_,
244 std::vector<double> & mu2_,
245 std::vector<double> & kp_,
246 std::vector<double> & kd_);
259 std::string & target)
override;
282 std::vector<std::string> & models_,
283 std::vector<std::string> & joints_,
284 std::vector<double> & damping_);
297 std::string & target)
override;
323 std::vector<std::string> & models_,
324 std::vector<std::string> & joints_,
325 std::vector<int> & types_,
326 std::vector<double> & p_gains_);
339 std::string & target)
override;
365 std::vector<std::string> & models_,
366 std::vector<std::string> & joints_,
367 std::vector<double> & lower_,
368 std::vector<double> & upper_);
381 std::string & target)
override;
398 std::vector<double> & gravity_);
411 std::string & target)
override;
429 private: std::string target {
"TARGET_OBJECT"};
432 public:
Randomiser(
const std::string & config);
439 public:
void randomise(
bool blocking=
true);
443 public:
void setTargetName(
const std::string & target);
449 public:
static const char CFG_PROPERTIES[];
451 public:
static const char CFG_MODEL_SCALE[];
453 public:
static const char CFG_LINK_MASS[];
455 public:
static const char CFG_FRICTION[];
457 public:
static const char CFG_JOINT_DAMPING[];
459 public:
static const char CFG_P_GAIN[];
461 public:
static const char CFG_JOINT_LIMIT[];
463 public:
static const char CFG_GRAVITY[];
466 public:
static const char CFG_DIST[];
468 public:
static const char CFG_UNIFORM[];
470 public:
static const char CFG_LOG_UNIFORM[];
472 public:
static const char CFG_UNIFORM_A[];
474 public:
static const char CFG_UNIFORM_B[];
476 public:
static const char CFG_GAUSSIAN[];
478 public:
static const char CFG_GAUSSIAN_MEAN[];
480 public:
static const char CFG_GAUSSIAN_STD[];
483 public:
static const char CFG_ADDITIVE[];
485 public:
static const char CFG_VECTOR[];
487 public:
static const char CFG_TARGET[];
490 public:
static const char CFG_MODEL[];
492 public:
static const char CFG_LINK[];
494 public:
static const char CFG_JOINT[];
496 public:
static const char CFG_MASS[];
498 public:
static const char CFG_DAMPING[];
500 public:
static const char CFG_LOWER[];
502 public:
static const char CFG_UPPER[];
504 public:
static const char CFG_MU1[];
506 public:
static const char CFG_MU2[];
508 public:
static const char CFG_KP[];
510 public:
static const char CFG_KD[];
512 public:
static const char CFG_TYPE[];
514 public:
static const char CFG_P[];
516 public:
static const char CFG_TYPE_POS[];
Gaussian distribution sampler.
Definition: Randomiser.hh:53
std::vector< double > lower
Respective list of initial joint lower limits.
Definition: Randomiser.hh:350
P controller gains random property.
Definition: Randomiser.hh:301
Link mass random property.
Definition: Randomiser.hh:175
Joint limits random property.
Definition: Randomiser.hh:343
std::vector< double > damping
Respective list of initial damping coefficients.
Definition: Randomiser.hh:270
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:266
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:346
std::vector< double > mu1
Respective list of initial mu1.
Definition: Randomiser.hh:220
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:178
std::vector< double > masses
Respective list of initial link masses.
Definition: Randomiser.hh:182
virtual ~IRandomSampler()
Destructor.
Definition: Randomiser.hh:44
Abstract class for random property.
Definition: Randomiser.hh:113
~Gravity() override
Destructor.
Definition: Randomiser.hh:401
~FrictionCoefficient() override
Destructor.
Definition: Randomiser.hh:249
gap::msgs::ModelCmd ModelCmdMsg
Declaration for model command message type.
Definition: Randomiser.hh:36
std::vector< std::string > joints
List of affected joints.
Definition: Randomiser.hh:348
virtual double sample(std::mt19937 &gen)
Gets random sample.
Definition: Randomiser.cc:541
Abstract PRNG sampler class.
Definition: Randomiser.hh:41
std::vector< std::string > joints
List of affected joints.
Definition: Randomiser.hh:268
~JointDampingCoefficient() override
Destructor.
Definition: Randomiser.hh:287
Joint limits random property.
Definition: Randomiser.hh:385
double mean
Gaussian mean.
Definition: Randomiser.hh:59
std::vector< double > gravity
Initial gravity vector.
Definition: Randomiser.hh:388
~LinkMass() override
Destructor.
Definition: Randomiser.hh:199
Friction coefficients random property.
Definition: Randomiser.hh:213
DRInterface api
DRInterface API.
Definition: Randomiser.hh:423
std::vector< int > types
Respective list of controller types.
Definition: Randomiser.hh:308
IRandomSampler * sampler
Random distribution sampler.
Definition: Randomiser.hh:116
std::mt19937 m_mt
Mersenne Twister pseudorandom number generator.
Definition: Randomiser.hh:427
~ModelScale() override
Destructor.
Definition: Randomiser.hh:161
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:304
std::vector< double > kp
Respective list of initial kp.
Definition: Randomiser.hh:224
double std
Gaussian standard deviation.
Definition: Randomiser.hh:61
std::vector< std::string > joints
List of affected joints.
Definition: Randomiser.hh:306
~GaussianSampler() override
Destructor.
Definition: Randomiser.hh:71
std::vector< double > kd
Respective list of initial kd.
Definition: Randomiser.hh:226
std::vector< double > mu2
Respective list of initial mu2.
Definition: Randomiser.hh:222
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:148
std::normal_distribution< double > dist
Gaussian distribution.
Definition: Randomiser.hh:56
~JointLimit() override
Destructor.
Definition: Randomiser.hh:371
Randomiser representation class.
Definition: Randomiser.hh:418
Joint damping coefficients random property.
Definition: Randomiser.hh:263
gap::msgs::DRRequest DRRequest
Declaration for request message type.
Definition: Randomiser.hh:34
std::vector< RandomProperty * > properties
Randomised properties.
Definition: Randomiser.hh:425
std::vector< std::string > models
List of affected models.
Definition: Randomiser.hh:216
bool additive
Whether term is additive or a scaling factor.
Definition: Randomiser.hh:118
Model scale random property.
Definition: Randomiser.hh:145
std::vector< double > upper
Respective list of initial joint upper limits.
Definition: Randomiser.hh:352
~PGain() override
Destructor.
Definition: Randomiser.hh:329
std::vector< std::string > links
List of affected links.
Definition: Randomiser.hh:218
std::vector< double > p_gains
Respective list of initial P controller gains.
Definition: Randomiser.hh:310
std::vector< std::string > links
List of affected links.
Definition: Randomiser.hh:180