本文整理汇总了C++中rbd::MultiBody::nrDof方法的典型用法代码示例。如果您正苦于以下问题:C++ MultiBody::nrDof方法的具体用法?C++ MultiBody::nrDof怎么用?C++ MultiBody::nrDof使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rbd::MultiBody
的用法示例。
在下文中一共展示了MultiBody::nrDof方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
CoMTask::CoMTask(const rbd::MultiBody& mb, const Eigen::Vector3d& com):
com_(com),
jac_(mb),
eval_(3),
speed_(3),
normalAcc_(3),
jacMat_(3, mb.nrDof()),
jacDotMat_(3, mb.nrDof())
{}
示例2:
MotionConstrCommon::MotionConstrCommon(const rbd::MultiBody& mb):
fd_(mb),
cont_(),
fullJac_(6, mb.nrDof()),
A_(),
AL_(),
AU_(),
XL_(),
XU_(),
curTorque_(mb.nrDof()),
nrDof_(0),
nrFor_(0),
nrTor_(0)
{
}
示例3: nrVars
void QPSolver::nrVars(const rbd::MultiBody& mb,
std::vector<UnilateralContact> uni,
std::vector<BilateralContact> bi)
{
data_.normalAccB_.resize(mb.nrBodies());
data_.alphaD_ = mb.nrDof();
data_.lambda_ = 0;
data_.torque_ = (mb.nrDof() - mb.joint(0).dof());
data_.uniCont_ = uni;
data_.biCont_ = bi;
// counting unilateral contact
for(const UnilateralContact& c: data_.uniCont_)
{
for(std::size_t i = 0; i < c.points.size(); ++i)
{
data_.lambda_ += c.nrLambda(int(i));
}
}
data_.lambdaUni_ = data_.lambda_;
// counting bilateral contact
for(const BilateralContact& c: data_.biCont_)
{
for(std::size_t i = 0; i < c.points.size(); ++i)
{
data_.lambda_ += c.nrLambda(int(i));
}
}
data_.lambdaBi_ = data_.lambda_ - data_.lambdaUni_;
data_.nrVars_ = data_.alphaD_ + data_.lambda_;
for(Task* t: tasks_)
{
t->updateNrVars(mb, data_);
}
for(Constraint* c: constr_)
{
c->updateNrVars(mb, data_);
}
solver_->updateSize(data_.nrVars_, maxEqLines_, maxInEqLines_, maxGenInEqLines_);
}
示例4: checkMultiBodyEq
void checkMultiBodyEq(const rbd::MultiBody& mb, std::vector<rbd::Body> bodies,
std::vector<rbd::Joint> joints, std::vector<int> pred, std::vector<int> succ,
std::vector<int> parent,
std::vector<sva::PTransformd> Xt)
{
// bodies
BOOST_CHECK_EQUAL_COLLECTIONS(mb.bodies().begin(), mb.bodies().end(),
bodies.begin(), bodies.end());
// joints
BOOST_CHECK_EQUAL_COLLECTIONS(mb.joints().begin(), mb.joints().end(),
joints.begin(), joints.end());
// pred
BOOST_CHECK_EQUAL_COLLECTIONS(mb.predecessors().begin(), mb.predecessors().end(),
pred.begin(), pred.end());
// succ
BOOST_CHECK_EQUAL_COLLECTIONS(mb.successors().begin(), mb.successors().end(),
succ.begin(), succ.end());
// parent
BOOST_CHECK_EQUAL_COLLECTIONS(mb.parents().begin(), mb.parents().end(),
parent.begin(), parent.end());
// Xt
BOOST_CHECK_EQUAL_COLLECTIONS(mb.transforms().begin(),
mb.transforms().end(),
Xt.begin(), Xt.end());
// nrBodies
BOOST_CHECK_EQUAL(mb.nrBodies(), bodies.size());
// nrJoints
BOOST_CHECK_EQUAL(mb.nrJoints(), bodies.size());
int params = 0, dof = 0;
for(int i = 0; i < static_cast<int>(joints.size()); ++i)
{
BOOST_CHECK_EQUAL(mb.jointPosInParam(i), params);
BOOST_CHECK_EQUAL(mb.jointsPosInParam()[i], params);
BOOST_CHECK_EQUAL(mb.sJointPosInParam(i), params);
BOOST_CHECK_EQUAL(mb.jointPosInDof(i), dof);
BOOST_CHECK_EQUAL(mb.jointsPosInDof()[i], dof);
BOOST_CHECK_EQUAL(mb.sJointPosInDof(i), dof);
params += joints[i].params();
dof += joints[i].dof();
}
BOOST_CHECK_EQUAL(params, mb.nrParams());
BOOST_CHECK_EQUAL(dof, mb.nrDof());
BOOST_CHECK_THROW(mb.sJointPosInParam(mb.nrJoints()), std::out_of_range);
BOOST_CHECK_THROW(mb.sJointPosInDof(mb.nrJoints()), std::out_of_range);
}
示例5:
IDIM::IDIM(const rbd::MultiBody& mb):
Y_(Eigen::MatrixXd::Zero(mb.nrDof(), mb.nrBodies()*10))
{ }