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;
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_;
128RBDYN_DLLAPI
void paramToVector(
const std::vector<std::vector<double>> & v, Eigen::Ref<Eigen::VectorXd> e);
134RBDYN_DLLAPI
void sParamToVector(
const std::vector<std::vector<double>> & v, Eigen::Ref<Eigen::VectorXd> e);
169RBDYN_DLLAPI
void vectorToParam(
const Eigen::Ref<const Eigen::VectorXd> & e, std::vector<std::vector<double>> & v);
175RBDYN_DLLAPI
void sVectorToParam(
const Eigen::Ref<const Eigen::VectorXd> & e, std::vector<std::vector<double>> & v);
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];
Definition MultiBodyConfig.h:84
void sConvert(const MultiBodyConfig &from, MultiBodyConfig &to) const
ConfigConverter(const MultiBody &from, const MultiBody &to)
static ConfigConverter * sConstructor(const MultiBody &from, const MultiBody &to)
void convertJoint(const std::vector< T > &from, std::vector< T > &to) const
Definition MultiBodyConfig.h:273
void convert(const MultiBodyConfig &from, MultiBodyConfig &to) const
void sConvertJoint(const std::vector< T > &from, std::vector< T > &to) const
Definition MultiBodyConfig.h:282
Definition MultiBody.h:30
int nrBodies() const
Definition MultiBody.h:50
int nrJoints() const
Definition MultiBody.h:56
RBDYN_DLLAPI std::vector< std::vector< double > > sVectorToDof(const MultiBody &mb, const Eigen::VectorXd &e)
RBDYN_DLLAPI void checkMatchMotionSubspace(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchQ(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI Eigen::VectorXd sDofToVector(const MultiBody &mb, const std::vector< std::vector< double > > &v)
RBDYN_DLLAPI void checkMatchBodyAcc(const MultiBody &mb, const MultiBodyConfig &mbc)
void checkMatchJointsVector(const MultiBody &mb, const std::vector< T > &vec, const std::string &name)
Definition MultiBodyConfig.h:262
RBDYN_DLLAPI void checkMatchAlphaD(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void vectorToParam(const Eigen::Ref< const Eigen::VectorXd > &e, std::vector< std::vector< double > > &v)
RBDYN_DLLAPI void checkMatchAlpha(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchForce(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchBodyVel(const MultiBody &mb, const MultiBodyConfig &mbc)
void checkMatchBodiesVector(const MultiBody &mb, const std::vector< T > &vec, const std::string &name)
Definition MultiBodyConfig.h:251
RBDYN_DLLAPI void sVectorToParam(const Eigen::Ref< const Eigen::VectorXd > &e, std::vector< std::vector< double > > &v)
RBDYN_DLLAPI void checkMatchBodyPos(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void sParamToVector(const std::vector< std::vector< double > > &v, Eigen::Ref< Eigen::VectorXd > e)
RBDYN_DLLAPI Eigen::VectorXd dofToVector(const MultiBody &mb, const std::vector< std::vector< double > > &v)
RBDYN_DLLAPI void checkMatchJointConf(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchParentToSon(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void checkMatchJointTorque(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI std::vector< std::vector< double > > vectorToDof(const MultiBody &mb, const Eigen::VectorXd &e)
RBDYN_DLLAPI void checkMatchJointVelocity(const MultiBody &mb, const MultiBodyConfig &mbc)
RBDYN_DLLAPI void paramToVector(const std::vector< std::vector< double > > &v, Eigen::Ref< Eigen::VectorXd > e)
Definition MultiBodyConfig.h:24
Eigen::Vector3d gravity
gravity acting on the multibody.
Definition MultiBodyConfig.h:71
void zero(const MultiBody &mb)
Set the multibody at zero configuration.
std::vector< sva::MotionVecd > bodyAccB
Bodies acceleration in Body coordinate.
Definition MultiBodyConfig.h:68
std::vector< sva::MotionVecd > bodyVelW
Bodies speed in world coordinate.
Definition MultiBodyConfig.h:62
std::vector< std::vector< double > > alphaD
Generalized acceleration variable.
Definition MultiBodyConfig.h:38
std::vector< sva::PTransformd > jointConfig
Joints configuration (Xj).
Definition MultiBodyConfig.h:44
MultiBodyConfig()
Definition MultiBodyConfig.h:25
void python_motionSubspace(const std::vector< Eigen::MatrixXd > &v)
std::vector< sva::PTransformd > parentToSon
Transformation from parent(i) to i in body coordinate (Xj*Xt).
Definition MultiBodyConfig.h:59
std::vector< Eigen::Matrix< double, 6, Eigen::Dynamic > > motionSubspace
Motion subspace (Xj.j.subspace).
Definition MultiBodyConfig.h:53
std::vector< sva::PTransformd > bodyPosW
Bodies transformation in world coordinate.
Definition MultiBodyConfig.h:56
std::vector< std::vector< double > > jointTorque
Joints torque.
Definition MultiBodyConfig.h:50
std::vector< sva::MotionVecd > bodyVelB
Bodies speed in Body coordinate.
Definition MultiBodyConfig.h:65
std::vector< std::vector< double > > q
Generalized position variable.
Definition MultiBodyConfig.h:32
MultiBodyConfig(const MultiBody &mb)
std::vector< sva::ForceVecd > force
Total external force acting on each body in world coordinate.
Definition MultiBodyConfig.h:41
std::vector< std::vector< double > > alpha
Generalized speed variable.
Definition MultiBodyConfig.h:35
std::vector< sva::MotionVecd > jointVelocity
Joints velocity (Xj*j.motion()).
Definition MultiBodyConfig.h:47
std::vector< Eigen::MatrixXd > python_motionSubspace()