Go to the documentation of this file.
10 #include <unordered_map>
14 #include <SpaceVecAlg/SpaceVecAlg>
17 #include <rbdyn/config.hh>
43 std::vector<Joint> joints,
44 std::vector<int> pred,
45 std::vector<int> succ,
46 std::vector<int> parent,
47 std::vector<sva::PTransformd> Xt);
52 return static_cast<int>(bodies_.size());
58 return static_cast<int>(joints_.size());
62 const std::vector<Body> &
bodies()
const
70 bodies_ = std::move(b);
76 return bodies_[
static_cast<std::size_t
>(num)];
82 bodies_[
static_cast<std::size_t
>(num)] = b;
86 const std::vector<Joint> &
joints()
const
94 return joints_[
static_cast<std::size_t
>(num)];
106 return pred_[
static_cast<std::size_t
>(num)];
118 return succ_[
static_cast<std::size_t
>(num)];
130 return parent_[
static_cast<std::size_t
>(num)];
148 return Xt_[
static_cast<std::size_t
>(num)];
154 Xt_[
static_cast<std::size_t
>(num)] = Xt;
160 return bodyNameToInd_.find(name)->second;
166 return jointNameToInd_.find(name)->second;
172 return bodyNameToInd_;
178 return jointNameToInd_;
184 return jointPosInParam_[
static_cast<std::size_t
>(i)];
190 return jointPosInDof_[
static_cast<std::size_t
>(i)];
196 return jointPosInParam_;
202 return jointPosInDof_;
224 if(b.size() != bodies_.size())
226 std::ostringstream str;
227 str <<
"bodies vector size mismatch: expected size " << bodies_.size() <<
" gived " << b.size();
228 throw std::runtime_error(str.str());
238 return bodies_.at(
static_cast<std::size_t
>(num));
246 bodies_.at(
static_cast<std::size_t
>(num)) = b;
254 return joints_.at(
static_cast<std::size_t
>(num));
262 return pred_.at(
static_cast<std::size_t
>(num));
270 return succ_.at(
static_cast<std::size_t
>(num));
278 return parent_.at(
static_cast<std::size_t
>(num));
286 if(Xt.size() != Xt_.size())
288 std::ostringstream str;
289 str <<
"transform vector size mismatch: expected size " << Xt_.size() <<
" gived " << Xt.size();
290 throw std::runtime_error(str.str());
300 return Xt_.at(
static_cast<std::size_t
>(num));
308 Xt_.at(
static_cast<std::size_t
>(num)) = Xt;
316 return jointPosInParam_.at(
static_cast<std::size_t
>(i));
324 return jointPosInDof_.at(
static_cast<std::size_t
>(i));
333 return bodyNameToInd_.at(name);
342 return jointNameToInd_.at(name);
353 std::vector<sva::PTransformd>
Xt_;
std::vector< int > parent_
Definition: MultiBody.h:351
int sSuccessor(int num) const
Definition: MultiBody.h:268
const std::vector< int > & jointsPosInParam() const
Definition: MultiBody.h:194
int jointPosInParam(int i) const
Definition: MultiBody.h:182
void sBodies(std::vector< Body > b)
Definition: MultiBody.h:222
std::vector< Joint > joints_
Definition: MultiBody.h:347
int sJointPosInParam(int i) const
Definition: MultiBody.h:314
int nrBodies() const
Definition: MultiBody.h:50
void transform(int num, const sva::PTransformd &Xt)
Set the transformation from the body base to joint num.
Definition: MultiBody.h:152
void body(int num, const Body &b)
Set the body num in bodies list.
Definition: MultiBody.h:80
Definition: MultiBody.h:29
int nrParams_
Definition: MultiBody.h:363
const std::vector< int > & predecessors() const
Definition: MultiBody.h:98
int bodyIndexByName(const std::string &name) const
Definition: MultiBody.h:158
const Body & body(int num) const
Definition: MultiBody.h:74
const std::vector< Body > & bodies() const
Definition: MultiBody.h:62
int parent(int num) const
Definition: MultiBody.h:128
const std::unordered_map< std::string, int > & bodyIndexByName() const
Definition: MultiBody.h:170
const Joint & joint(int num) const
Definition: MultiBody.h:92
std::unordered_map< std::string, int > bodyNameToInd_
Definition: MultiBody.h:355
void sTransforms(std::vector< sva::PTransformd > Xt)
Definition: MultiBody.h:284
int nrParams() const
Definition: MultiBody.h:206
int nrDof() const
Definition: MultiBody.h:212
const Joint & sJoint(int num) const
Definition: MultiBody.h:252
void sTransform(int num, const sva::PTransformd &Xt)
Definition: MultiBody.h:306
int sBodyIndexByName(const std::string &name) const
Definition: MultiBody.h:331
const std::unordered_map< std::string, int > & jointIndexByName() const
Definition: MultiBody.h:176
void bodies(std::vector< Body > b)
Set bodies of the multibody system.
Definition: MultiBody.h:68
const std::vector< Joint > & joints() const
Definition: MultiBody.h:86
int sParent(int num) const
Definition: MultiBody.h:276
const sva::PTransformd & transform(int num) const
Definition: MultiBody.h:146
int nrJoints() const
Definition: MultiBody.h:56
const std::vector< int > & successors() const
Definition: MultiBody.h:110
int sJointIndexByName(const std::string &name) const
Definition: MultiBody.h:340
int jointIndexByName(const std::string &name) const
Definition: MultiBody.h:164
std::vector< int > succ_
Definition: MultiBody.h:350
const sva::PTransformd & sTransform(int num) const
Definition: MultiBody.h:298
int successor(int num) const
Definition: MultiBody.h:116
std::vector< int > jointPosInParam_
Position of joint i in parameter vector.
Definition: MultiBody.h:359
const Body & sBody(int num) const
Definition: MultiBody.h:236
int sJointPosInDof(int i) const
Definition: MultiBody.h:322
void sBody(int num, const Body &b)
Definition: MultiBody.h:244
const std::vector< sva::PTransformd > & transforms() const
Definition: MultiBody.h:134
int predecessor(int num) const
Definition: MultiBody.h:104
int sPredecessor(int num) const
Definition: MultiBody.h:260
int nrDof_
Definition: MultiBody.h:364
std::vector< int > jointPosInDof_
Position of joint i in dof vector (velocity, acceleration...).
Definition: MultiBody.h:361
std::vector< int > pred_
Definition: MultiBody.h:349
void transforms(std::vector< sva::PTransformd > Xt)
Definition: MultiBody.h:140
const std::vector< int > & parents() const
Definition: MultiBody.h:122
std::unordered_map< std::string, int > jointNameToInd_
Definition: MultiBody.h:356
int jointPosInDof(int i) const
Definition: MultiBody.h:188
std::vector< sva::PTransformd > Xt_
Transformation from the body base to joint i.
Definition: MultiBody.h:353
const std::vector< int > & jointsPosInDof() const
Definition: MultiBody.h:200
std::vector< Body > bodies_
Definition: MultiBody.h:346