22 #include <RBDyn/parsers/common.h>
24 #include <sch/S_Object/S_Object.h>
52 struct VisualMap :
public std::map<std::string, std::vector<rbd::parsers::Visual>>
62 using std::map<std::string, std::vector<rbd::parsers::Visual>>::operator=;
67 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
78 using bounds_t = std::vector<std::map<std::string, std::vector<double>>>;
96 using jerkBounds_t = std::vector<std::map<std::string, std::vector<double>>>;
114 static constexpr
double DEFAULT_PERCENT_VMAX = 0.25;
120 static constexpr
unsigned int DEFAULT_OVER_COMMAND_LIMIT_ITER_N = 5;
126 double actualCommandDiffTrigger = DEFAULT_ACTUAL_COMMAND_DIFF_TRIGGER,
127 double releaseSafetyOffset = DEFAULT_RELEASE_OFFSET,
128 unsigned int overCommandLimitIterN = DEFAULT_OVER_COMMAND_LIMIT_ITER_N)
129 : percentVMax(percentVMax), actualCommandDiffTrigger(actualCommandDiffTrigger),
130 releaseSafetyOffset(releaseSafetyOffset), overCommandLimitIterN(overCommandLimitIterN)
150 Gripper(
const std::string & name,
const std::vector<std::string> & joints,
bool reverse_limits);
154 const std::vector<std::string> & joints,
160 const std::vector<std::string> & joints,
163 const std::vector<Mimic> & mimics);
174 inline const Safety *
safety()
const {
return hasSafety_ ? &safety_ :
nullptr; }
177 inline const std::vector<Mimic> *
mimics()
const {
return hasMimics_ ? &mimics_ :
nullptr; }
181 bool hasSafety_ =
false;
185 bool hasMimics_ =
false;
187 std::vector<Mimic> mimics_;
189 Gripper(
const std::string & name,
190 const std::vector<std::string> & joints,
192 const Safety * safety,
193 const std::vector<Mimic> * mimics);
207 FrameDescription(
const std::string & n,
const std::string & p,
const sva::PTransformd & pt,
bool baked =
false)
208 : name(n), parent(p), X_p_f(pt), baked(baked)
238 :
RobotModule(path, name, path +
"/urdf/" + name +
".urdf")
254 RobotModule(
const std::string & path,
const std::string & name,
const std::string & urdf_path)
255 : path(path), name(name), urdf_path(urdf_path), convex_dir(
""), rsdf_dir(path +
"/rsdf/" + name),
256 calib_dir(path +
"/calib/" + name), _real_urdf(urdf_path)
261 RobotModule(
const std::string & name,
const rbd::parsers::ParserResult & res);
272 #define CONNECTION_PROPERTY(NAME, TYPE, DEFAULT) \
273 TYPE NAME##_ = DEFAULT; \
274 inline ConnectionParameters & NAME(const TYPE & b) noexcept \
279 inline auto & NAME() noexcept { return NAME##_; }
415 const std::string & this_body,
416 const std::string & other_body,
417 const std::string & prefix,
444 const std::string & this_body,
445 const std::string & other_body,
446 const std::string & prefix,
460 void init(
const rbd::parsers::ParserResult & res);
509 const std::vector<std::map<std::string, std::vector<double>>> &
bounds()
const {
return _bounds; }
522 return _accelerationBounds;
534 const std::vector<std::map<std::string, std::vector<double>>> &
jerkBounds()
const {
return _jerkBounds; }
547 return _torqueDerivativeBounds;
560 const std::map<std::string, std::vector<double>> &
stance()
const {
return _stance; }
575 const std::map<std::string, std::pair<std::string, std::string>> &
convexHull()
const {
return _convexHull; }
590 const std::map<std::string, std::pair<std::string, S_ObjectPtr>> &
collisionObjects()
const
592 return _collisionObjects;
606 const std::map<std::string, std::pair<std::string, std::string>> &
stpbvHull()
const {
return _stpbvHull; }
614 const std::map<std::string, sva::PTransformd> &
collisionTransforms()
const {
return _collisionTransforms; }
620 const std::vector<Flexibility> &
flexibility()
const {
return _flexibility; }
626 const std::vector<ForceSensor> &
forceSensors()
const {
return _forceSensors; }
638 const std::vector<JointSensor> &
jointSensors()
const {
return _jointSensors; }
669 const std::vector<Gripper> &
grippers()
const {
return _grippers; }
695 return _lipmStabilizerConfig;
731 inline const std::vector<std::string> &
parameters()
const {
return _parameters; }
773 inline const std::vector<FrameDescription> &
frames() const noexcept {
return _frames; }
803 std::map<std::string, std::vector<double>>
_stance;
805 std::map<std::string, std::pair<std::string, std::string>>
_convexHull;
809 std::map<std::string, std::pair<std::string, std::string>>
_stpbvHull;
837 std::array<double, 7> _default_attitude = {{1., 0., 0., 0., 0., 0., 0.}};
888 auto compareMimics = [&]()
890 auto lmimics = lhs.
mimics();
891 auto rmimics = rhs.
mimics();
892 if(lmimics ==
nullptr && rmimics ==
nullptr) {
return true; }
893 if(lmimics ==
nullptr || rmimics ==
nullptr) {
return false; }
894 return *lmimics == *rmimics;
896 auto compareSafety = [&]()
898 auto lsafety = lhs.
safety();
899 auto rsafety = rhs.
safety();
900 if(lsafety ==
nullptr && rsafety ==
nullptr) {
return true; }
901 if(lsafety ==
nullptr || rsafety ==
nullptr) {
return false; }
902 return *lsafety == *rsafety;
911 # define ROBOT_MODULE_API __declspec(dllexport)
914 # define ROBOT_MODULE_API __attribute__((visibility("default")))
916 # define ROBOT_MODULE_API
#define CONNECTION_PROPERTY(NAME, TYPE, DEFAULT)
Definition: RobotModule.h:272
#define MC_RBDYN_DLLAPI
Definition: api.h:50
Definition: generic_gripper.h:15
std::vector< BodySensor, Eigen::aligned_allocator< BodySensor > > BodySensorVector
Definition: BodySensor.h:145
MC_RBDYN_DLLAPI bool check_module_compatibility(const RobotModule &lhs, const RobotModule &rhs)
std::vector< RobotModule, Eigen::aligned_allocator< RobotModule > > RobotModuleVector
Definition: RobotModule.h:863
std::vector< CompoundJointConstraintDescription, Eigen::aligned_allocator< CompoundJointConstraintDescription > > CompoundJointConstraintDescriptionVector
Definition: CompoundJointConstraintDescription.h:33
std::shared_ptr< sch::S_Object > S_ObjectPtr
Definition: RobotModule.h:31
bool operator==(const mc_rbdyn::BodySensor &lhs, const mc_rbdyn::BodySensor &rhs)
Definition: BodySensor.h:147
MC_RBDYN_DLLAPI RobotModule::bounds_t urdf_limits_to_bounds(const rbd::parsers::Limits &limits)
Converts limits provided by RBDyn parsers to bounds.
std::shared_ptr< RobotModule > RobotModulePtr
Definition: RobotModule.h:854
constexpr double toRad(const double degrees)
Converts degrees to radians.
Definition: constants.h:39
Type
Definition: types.h:31
Definition: RobotModule.h:38
DevicePtrVector & operator=(DevicePtrVector &&v)=default
DevicePtrVector()=default
DevicePtrVector(DevicePtrVector &&v)=default
MC_RBDYN_DLLAPI DevicePtrVector(const DevicePtrVector &v)
MC_RBDYN_DLLAPI DevicePtrVector & operator=(const DevicePtrVector &v)
Configuration for mc_rbdyn::RobotConverter.
Definition: RobotConverterConfig.h:16
Definition: RobotModule.h:265
std::array< std::vector< double >, 2 > JointAccelerationLimits
Definition: RobotModule.h:330
std::array< std::vector< double >, 6 > JointLimits
Definition: RobotModule.h:326
std::unordered_map< std::string, std::string > mapping_t
Definition: RobotModule.h:357
std::array< std::vector< double >, 2 > JointJerkLimits
Definition: RobotModule.h:334
std::array< std::vector< double >, 2 > JointTorqueDerivativeLimits
Definition: RobotModule.h:338
Definition: RobotModule.h:205
std::string name
Definition: RobotModule.h:213
std::string parent
Definition: RobotModule.h:215
FrameDescription(const std::string &n, const std::string &p, const sva::PTransformd &pt, bool baked=false)
Definition: RobotModule.h:207
sva::PTransformd X_p_f
Definition: RobotModule.h:217
Definition: RobotModule.h:112
double actualCommandDiffTrigger
Definition: RobotModule.h:142
Safety()
Definition: RobotModule.h:123
mc_rtc::Configuration save() const
double percentVMax
Definition: RobotModule.h:140
Safety(double percentVMax, double actualCommandDiffTrigger=DEFAULT_ACTUAL_COMMAND_DIFF_TRIGGER, double releaseSafetyOffset=DEFAULT_RELEASE_OFFSET, unsigned int overCommandLimitIterN=DEFAULT_OVER_COMMAND_LIMIT_ITER_N)
Definition: RobotModule.h:125
unsigned int overCommandLimitIterN
Definition: RobotModule.h:146
void load(const mc_rtc::Configuration &config)
double releaseSafetyOffset
Definition: RobotModule.h:144
Definition: RobotModule.h:109
Gripper(const std::string &name, const std::vector< std::string > &joints, bool reverse_limits)
Gripper(const std::string &name, const std::vector< std::string > &joints, bool reverse_limits, const Safety &safety)
std::string name
Definition: RobotModule.h:166
bool reverse_limits
Definition: RobotModule.h:170
std::vector< std::string > joints
Definition: RobotModule.h:168
Gripper(const std::string &name, const std::vector< std::string > &joints, bool reverse_limits, const Safety &safety, const std::vector< Mimic > &mimics)
const std::vector< Mimic > * mimics() const
Definition: RobotModule.h:177
const Safety * safety() const
Definition: RobotModule.h:174
Definition: RobotModule.h:66
std::vector< mc_rbdyn::Collision > _commonSelfCollisions
Definition: RobotModule.h:829
std::map< std::string, std::pair< std::string, std::string > > _stpbvHull
Definition: RobotModule.h:809
CompoundJointConstraintDescriptionVector _compoundJoints
Definition: RobotModule.h:839
std::vector< ForceSensor > _forceSensors
Definition: RobotModule.h:819
const std::vector< Flexibility > & flexibility() const
Definition: RobotModule.h:620
std::vector< std::string > _parameters
Definition: RobotModule.h:841
std::vector< std::map< std::string, std::vector< double > >> accelerationBounds_t
Definition: RobotModule.h:87
const std::vector< Gripper > & grippers() const
Definition: RobotModule.h:669
RobotConverterConfig controlToCanonicalConfig
Definition: RobotModule.h:747
const std::vector< ForceSensor > & forceSensors() const
Definition: RobotModule.h:626
void make_default_ref_joint_order()
RobotModule(const std::string &name, const rbd::parsers::ParserResult &res)
std::vector< std::map< std::string, std::vector< double > >> torqueDerivativeBounds_t
Definition: RobotModule.h:105
const Springs & springs() const
Definition: RobotModule.h:644
const CompoundJointConstraintDescriptionVector & compoundJoints() const
Definition: RobotModule.h:728
const std::array< double, 7 > & default_attitude() const
Definition: RobotModule.h:690
VisualMap _visual
Definition: RobotModule.h:811
std::string calib_dir
Definition: RobotModule.h:787
const std::vector< std::map< std::string, std::vector< double > > > & torqueDerivativeBounds() const
Definition: RobotModule.h:545
void init(const rbd::parsers::ParserResult &res)
accelerationBounds_t _accelerationBounds
Definition: RobotModule.h:797
const DevicePtrVector & devices() const
Definition: RobotModule.h:770
RobotModule connect(const mc_rbdyn::RobotModule &other, const std::string &this_body, const std::string &other_body, const std::string &prefix, const ConnectionParameters ¶ms) const
const BodySensorVector & bodySensors() const
Definition: RobotModule.h:632
const std::vector< mc_rbdyn::Collision > & minimalSelfCollisions() const
Definition: RobotModule.h:653
std::map< std::string, sva::PTransformd > _collisionTransforms
Definition: RobotModule.h:815
std::string _real_urdf
Definition: RobotModule.h:847
Gripper::Safety _gripperSafety
Definition: RobotModule.h:833
std::vector< std::map< std::string, std::vector< double > >> bounds_t
Definition: RobotModule.h:78
RobotModule disconnect(const mc_rbdyn::RobotModule &other, const std::string &this_body, const std::string &other_body, const std::string &prefix, const ConnectionParameters ¶ms) const
std::string path
Definition: RobotModule.h:777
const std::map< std::string, std::pair< std::string, S_ObjectPtr > > & collisionObjects() const
Definition: RobotModule.h:590
std::string convex_dir
Definition: RobotModule.h:783
std::map< std::string, std::pair< std::string, std::string > > _convexHull
Definition: RobotModule.h:805
std::vector< Flexibility > _flexibility
Definition: RobotModule.h:817
rbd::MultiBodyGraph mbg
Definition: RobotModule.h:793
std::vector< FrameDescription > _frames
Definition: RobotModule.h:851
const std::map< std::string, std::pair< std::string, std::string > > & stpbvHull() const
Definition: RobotModule.h:606
const std::vector< JointSensor > & jointSensors() const
Definition: RobotModule.h:638
const std::vector< std::map< std::string, std::vector< double > > > & accelerationBounds() const
Definition: RobotModule.h:520
std::string urdf_path
Definition: RobotModule.h:781
void boundsFromURDF(const rbd::parsers::Limits &limits)
const std::vector< FrameDescription > & frames() const noexcept
Definition: RobotModule.h:773
mc_rbdyn::lipm_stabilizer::StabilizerConfiguration _lipmStabilizerConfig
Definition: RobotModule.h:845
std::map< std::string, std::vector< double > > _stance
Definition: RobotModule.h:803
const std::vector< std::string > & parameters() const
Definition: RobotModule.h:731
BodySensorVector _bodySensors
Definition: RobotModule.h:821
std::vector< std::string > _canonicalParameters
Definition: RobotModule.h:843
std::vector< std::map< std::string, std::vector< double > >> jerkBounds_t
Definition: RobotModule.h:96
std::vector< JointSensor > _jointSensors
Definition: RobotModule.h:823
std::string rsdf_dir
Definition: RobotModule.h:785
std::map< std::string, std::pair< std::string, S_ObjectPtr > > _collisionObjects
Definition: RobotModule.h:807
const std::vector< std::string > & canonicalParameters() const
Definition: RobotModule.h:737
std::string real_urdf() const
Definition: RobotModule.h:767
VisualMap _collision
Definition: RobotModule.h:813
rbd::MultiBody mb
Definition: RobotModule.h:789
DevicePtrVector _devices
Definition: RobotModule.h:849
const std::map< std::string, sva::PTransformd > & collisionTransforms() const
Definition: RobotModule.h:614
const std::vector< std::map< std::string, std::vector< double > > > & jerkBounds() const
Definition: RobotModule.h:534
std::vector< mc_rbdyn::Collision > _minimalSelfCollisions
Definition: RobotModule.h:827
std::string name
Definition: RobotModule.h:779
const std::vector< std::string > & ref_joint_order() const
Definition: RobotModule.h:684
const std::map< std::string, std::vector< double > > & stance() const
Definition: RobotModule.h:560
const std::vector< std::map< std::string, std::vector< double > > > & bounds() const
Definition: RobotModule.h:509
std::vector< std::string > _ref_joint_order
Definition: RobotModule.h:835
RobotModule(const std::string &path, const std::string &name)
Definition: RobotModule.h:237
rbd::MultiBodyConfig mbc
Definition: RobotModule.h:791
Springs _springs
Definition: RobotModule.h:825
const Gripper::Safety & gripperSafety() const
Definition: RobotModule.h:677
jerkBounds_t _jerkBounds
Definition: RobotModule.h:799
const std::map< std::string, std::pair< std::string, std::string > > & convexHull() const
Definition: RobotModule.h:575
RobotModule(const std::string &path, const std::string &name, const std::string &urdf_path)
Definition: RobotModule.h:254
const mc_rbdyn::lipm_stabilizer::StabilizerConfiguration & defaultLIPMStabilizerConfiguration() const
Definition: RobotModule.h:693
bounds_t _bounds
Definition: RobotModule.h:795
const std::vector< mc_rbdyn::Collision > & commonSelfCollisions() const
Definition: RobotModule.h:663
torqueDerivativeBounds_t _torqueDerivativeBounds
Definition: RobotModule.h:801
void generate_convexes(bool regenerate=false, unsigned int sampling_point=4000)
std::vector< Gripper > _grippers
Definition: RobotModule.h:831
Definition: RobotModule.h:53
VisualMap & operator=(VisualMap &&v)=default
VisualMap & operator=(const VisualMap &v)=default
VisualMap(VisualMap &&v)=default
VisualMap(const VisualMap &v)=default
Configuration of the LIPMStabilizer. This configuration is meant to be overriden from the RobotModule...
Definition: StabilizerConfiguration.h:435
Simplify access to values hold within a JSON file.
Definition: Configuration.h:166