Go to the documentation of this file.
13 #include <SpaceVecAlg/SpaceVecAlg>
16 #include <rbdyn/config.hh>
32 std::vector<std::vector<double>>
q;
35 std::vector<std::vector<double>>
alpha;
38 std::vector<std::vector<double>>
alphaD;
41 std::vector<sva::ForceVecd>
force;
75 std::vector<Eigen::MatrixXd> python_motionSubspace();
76 void python_motionSubspace(
const std::vector<Eigen::MatrixXd> & v);
95 void convertJoint(
const std::vector<T> & from, std::vector<T> & to)
const;
98 std::vector<T> convertJoint(
const std::vector<T> & from)
const;
116 void sConvertJoint(
const std::vector<T> & from, std::vector<T> & to)
const;
119 std::vector<int> jInd_;
120 std::vector<int> bInd_;
128 RBDYN_DLLAPI
void paramToVector(
const std::vector<std::vector<double>> & v, Eigen::Ref<Eigen::VectorXd> e);
134 RBDYN_DLLAPI
void sParamToVector(
const std::vector<std::vector<double>> & v, Eigen::Ref<Eigen::VectorXd> e);
142 RBDYN_DLLAPI Eigen::VectorXd
paramToVector(
const MultiBody & mb,
const std::vector<std::vector<double>> & v);
156 RBDYN_DLLAPI Eigen::VectorXd
dofToVector(
const MultiBody & mb,
const std::vector<std::vector<double>> & v);
162 RBDYN_DLLAPI Eigen::VectorXd
sDofToVector(
const MultiBody & mb,
const std::vector<std::vector<double>> & v);
169 RBDYN_DLLAPI
void vectorToParam(
const Eigen::Ref<const Eigen::VectorXd> & e, std::vector<std::vector<double>> & v);
175 RBDYN_DLLAPI
void sVectorToParam(
const Eigen::Ref<const Eigen::VectorXd> & e, std::vector<std::vector<double>> & v);
183 RBDYN_DLLAPI std::vector<std::vector<double>>
vectorToParam(
const MultiBody & mb,
const Eigen::VectorXd & e);
197 RBDYN_DLLAPI std::vector<std::vector<double>>
vectorToDof(
const MultiBody & mb,
const Eigen::VectorXd & e);
203 RBDYN_DLLAPI std::vector<std::vector<double>>
sVectorToDof(
const MultiBody & mb,
const Eigen::VectorXd & e);
253 if(
int(vec.size()) != mb.
nrBodies())
255 std::ostringstream str;
256 str << name <<
" size mismatch: expected size " << mb.
nrBodies() <<
" gived " << vec.size();
257 throw std::domain_error(str.str());
264 if(
int(vec.size()) != mb.
nrJoints())
266 std::ostringstream str;
267 str << name <<
" size mismatch: expected size " << mb.
nrJoints() <<
" gived " << vec.size();
268 throw std::domain_error(str.str());
275 for(std::size_t i = 0; i < jInd_.size(); ++i)
277 to[
static_cast<size_t>(jInd_[i])] = from[i + 1];
284 if(from.size() != to.size())
286 throw std::domain_error(
"from and to vector must have the same size");
295 std::vector<T> to(from.size());
296 for(std::size_t i = 0; i < jInd_.size(); ++i)
298 to[
static_cast<size_t>(jInd_[i])] = from[i + 1];
std::vector< sva::ForceVecd > force
Total external force acting on each body in world coordinate.
Definition: MultiBodyConfig.h:41
std::vector< Eigen::Matrix< double, 6, Eigen::Dynamic > > motionSubspace
Motion subspace (Xj.j.subspace).
Definition: MultiBodyConfig.h:53
void checkMatchJointsVector(const MultiBody &mb, const std::vector< T > &vec, const std::string &name)
Definition: MultiBodyConfig.h:262
Definition: MultiBodyConfig.h:83
RBDYN_DLLAPI void sParamToVector(const std::vector< std::vector< double >> &v, Eigen::Ref< Eigen::VectorXd > e)
RBDYN_DLLAPI void checkMatchAlphaD(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchBodyVel(const MultiBody &mb, const MultiBodyConfig &mbc)
std::vector< sva::PTransformd > jointConfig
Joints configuration (Xj).
Definition: MultiBodyConfig.h:44
std::vector< sva::PTransformd > parentToSon
Transformation from parent(i) to i in body coordinate (Xj*Xt).
Definition: MultiBodyConfig.h:59
void convertJoint(const std::vector< T > &from, std::vector< T > &to) const
Definition: MultiBodyConfig.h:273
RBDYN_DLLAPI void checkMatchMotionSubspace(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI Eigen::VectorXd sDofToVector(const MultiBody &mb, const std::vector< std::vector< double >> &v)
RBDYN_DLLAPI std::vector< std::vector< double > > sVectorToDof(const MultiBody &mb, const Eigen::VectorXd &e)
int nrBodies() const
Definition: MultiBody.h:50
RBDYN_DLLAPI Eigen::VectorXd dofToVector(const MultiBody &mb, const std::vector< std::vector< double >> &v)
Definition: MultiBody.h:29
RBDYN_DLLAPI std::vector< std::vector< double > > vectorToDof(const MultiBody &mb, const Eigen::VectorXd &e)
Eigen::Vector3d gravity
gravity acting on the multibody.
Definition: MultiBodyConfig.h:71
std::vector< sva::MotionVecd > bodyVelB
Bodies speed in Body coordinate.
Definition: MultiBodyConfig.h:65
RBDYN_DLLAPI void checkMatchJointConf(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchAlpha(const MultiBody &mb, const MultiBodyConfig &mbc)
std::vector< std::vector< double > > alphaD
Generalized acceleration variable.
Definition: MultiBodyConfig.h:38
std::vector< std::vector< double > > jointTorque
Joints torque.
Definition: MultiBodyConfig.h:50
void sConvertJoint(const std::vector< T > &from, std::vector< T > &to) const
Definition: MultiBodyConfig.h:282
int nrJoints() const
Definition: MultiBody.h:56
std::vector< sva::PTransformd > bodyPosW
Bodies transformation in world coordinate.
Definition: MultiBodyConfig.h:56
std::vector< sva::MotionVecd > jointVelocity
Joints velocity (Xj*j.motion()).
Definition: MultiBodyConfig.h:47
RBDYN_DLLAPI void checkMatchQ(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchParentToSon(const MultiBody &mb, const MultiBodyConfig &mbc)
MultiBodyConfig()
Definition: MultiBodyConfig.h:25
RBDYN_DLLAPI void sVectorToParam(const Eigen::Ref< const Eigen::VectorXd > &e, std::vector< std::vector< double >> &v)
Definition: MultiBodyConfig.h:23
RBDYN_DLLAPI void checkMatchJointTorque(const MultiBody &mb, const MultiBodyConfig &mbc)
std::vector< std::vector< double > > alpha
Generalized speed variable.
Definition: MultiBodyConfig.h:35
std::vector< sva::MotionVecd > bodyAccB
Bodies acceleration in Body coordinate.
Definition: MultiBodyConfig.h:68
RBDYN_DLLAPI void vectorToParam(const Eigen::Ref< const Eigen::VectorXd > &e, std::vector< std::vector< double >> &v)
std::vector< std::vector< double > > q
Generalized position variable.
Definition: MultiBodyConfig.h:32
RBDYN_DLLAPI void checkMatchForce(const MultiBody &mb, const MultiBodyConfig &mbc)
std::vector< sva::MotionVecd > bodyVelW
Bodies speed in world coordinate.
Definition: MultiBodyConfig.h:62
RBDYN_DLLAPI void checkMatchBodyAcc(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void paramToVector(const std::vector< std::vector< double >> &v, Eigen::Ref< Eigen::VectorXd > e)
void checkMatchBodiesVector(const MultiBody &mb, const std::vector< T > &vec, const std::string &name)
Definition: MultiBodyConfig.h:251
RBDYN_DLLAPI void checkMatchBodyPos(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchJointVelocity(const MultiBody &mb, const MultiBodyConfig &mbc)