本文整理汇总了C++中eigen::MatrixXd::unaryExpr方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixXd::unaryExpr方法的具体用法?C++ MatrixXd::unaryExpr怎么用?C++ MatrixXd::unaryExpr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::MatrixXd
的用法示例。
在下文中一共展示了MatrixXd::unaryExpr方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: inverseKinematics
bool InverseKinematics::inverseKinematics(const MultiBody& mb, MultiBodyConfig& mbc,
const sva::PTransformd& ef_target)
{
int iter = 0;
bool converged = false;
int dof = 0;
rbd::forwardKinematics(mb, mbc);
Eigen::MatrixXd jacMat;
Eigen::Vector6d v = Eigen::Vector6d::Ones();
Eigen::Vector3d rotErr;
Eigen::VectorXd res = Eigen::VectorXd::Zero(3);
while( ! converged && iter < max_iterations_)
{
jacMat = jac_.jacobian(mb, mbc);
//non-strict zeros in jacobian can be a problem...
jacMat = jacMat.unaryExpr(CwiseRoundOp(-almost_zero_, almost_zero_));
svd_.compute(jacMat, Eigen::ComputeThinU | Eigen::ComputeThinV);
rotErr = sva::rotationError(mbc.bodyPosW[ef_index_].rotation(),
ef_target.rotation());
v << rotErr, ef_target.translation() - mbc.bodyPosW[ef_index_].translation();
converged = v.norm() < threshold_;
res = svd_.solve(v);
dof = 0;
for(auto index : jac_.jointsPath())
{
std::vector<double>& qi = mbc.q[index];
for(auto &qv : qi)
{
qv += lambda_*res[dof];
++dof;
}
}
rbd::forwardKinematics(mb, mbc);
rbd::forwardVelocity(mb, mbc);
iter++;
}
return converged;
}
示例2: proj
void FunctionApproximatorIRFRLS::proj(const MatrixXd& vecs, const MatrixXd& periods, const VectorXd& phases, Eigen::MatrixXd& projected)
{
projected = vecs * periods.transpose();
projected.rowwise() += phases.transpose();
projected = projected.unaryExpr(ptr_fun(double_cosine));
}