当前位置: 首页>>代码示例>>C++>>正文


C++ VectorXd::block方法代码示例

本文整理汇总了C++中eigen::VectorXd::block方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorXd::block方法的具体用法?C++ VectorXd::block怎么用?C++ VectorXd::block使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在eigen::VectorXd的用法示例。


在下文中一共展示了VectorXd::block方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: computeGeneralizedForce

void GravityCompensation::computeGeneralizedForce(Eigen::VectorXd& tau)
{
  tau = Eigen::VectorXd::Zero(robot_->getDOF());
  uint32_t macro_dof = robot_->getMacroManipulatorDOF();

  mnp_ = robot_->getManipulator().begin()->second;
  for(uint32_t i = 0; i < macro_dof; ++i)
  {
    tau.block(0, 0, macro_dof, 1) -= mnp_->getLink(i)->m * mnp_->getJacobian()[i].block(0, 0, 3, macro_dof).transpose() * param_->getG();
  }

  uint32_t offset = 0;

  for(uint32_t i = 0; i < mnp_name_.size(); ++i)
  {
    mnp_ = robot_->getManipulator(mnp_name_[i]);
    uint32_t mini_dof = mnp_->getDOF() - macro_dof;

    for(uint32_t j = 0; j < mini_dof; ++j)
    {
      tau.block(macro_dof + offset, 0, mini_dof, 1) -= mnp_->getLink(j + macro_dof)->m * mnp_->getJacobian()[j + macro_dof].block(0, macro_dof, 3, mini_dof).transpose() * param_->getG();
    }

    offset += mini_dof;
  }

  tau_ = tau;
}
开发者ID:bilynbk,项目名称:ahl_wbc,代码行数:28,代码来源:gravity_compensation.cpp

示例2: control

void YouBot::control(const ros::TimerEvent&)
{
  try
  {
    boost::mutex::scoped_lock lock(mutex_);

    if(gazebo_interface_->subscribed())
    {
      Eigen::VectorXd q = gazebo_interface_->getJointStates();
      robot_->update(q);
      joint_updated_ = true;

      q_base_ = q.block(0, 0, robot_->getMacroManipulatorDOF(), 1);
    }

    if(!model_updated_) return;

    Eigen::VectorXd tau = Eigen::VectorXd::Zero(robot_->getDOF());
    controller_->computeGeneralizedForce(tau);
    gazebo_interface_->applyJointEfforts(tau);

    tau_base_ = tau.block(0, 0, robot_->getMacroManipulatorDOF(), 1);
  }
  catch(ahl_robot::Exception& e)
  {
    ROS_ERROR_STREAM(e.what());
  }
  catch(ahl_ctrl::Exception& e)
  {
    ROS_ERROR_STREAM(e.what());
  }
}
开发者ID:ChefOtter,项目名称:ahl_ros_pkg,代码行数:32,代码来源:youbot.cpp

示例3: unflattenSymmetric

Eigen::MatrixXd unflattenSymmetric(Eigen::VectorXd flat)
{
  //todo: other data types?
  //todo: safety/size checking?

  int num_rows = (-1 + sqrt(1 + 4 * 2 * flat.rows())) / 2; //solve for number of rows using quadratic eq
  Eigen::MatrixXd symm(num_rows, num_rows);
  int count = 0;
  for (int i = 0; i < num_rows; i++) {
    int ltcsz = num_rows - i;
    symm.block(i, i, ltcsz, 1) = flat.block(count, 0, ltcsz, 1);
    symm.block(i, i, 1, ltcsz) = flat.block(count, 0, ltcsz, 1).transpose();
    count += ltcsz;
  }
  return symm;
}
开发者ID:andybarry,项目名称:pronto-distro,代码行数:16,代码来源:eigen_utils_common.cpp

示例4: deleteVectorBlock

void deleteVectorBlock( Eigen::VectorXd &matrix, const int block_start_index, const int block_length ){

  assert( 1==matrix.cols() );
  assert( matrix.rows()>=block_start_index+block_length );

  int size = matrix.rows();
  /*
    R
    D
    M
  */

  matrix.block( block_start_index, 0, size-block_start_index-block_length, 1 ) = matrix.block( block_start_index+block_length, 0,  size-block_start_index-block_length, 1 );
  matrix.conservativeResize( size-block_length, 1 );

}
开发者ID:krisoft,项目名称:panovis,代码行数:16,代码来源:matrix_utils.cpp

示例5: addVectorBlock

void addVectorBlock( Eigen::VectorXd &matrix, const int block_length ){
  assert( 1==matrix.cols() );

  int old_size = matrix.rows();
  matrix.conservativeResize( old_size+block_length, 1 );
  matrix.block( old_size, 0, block_length, 1 ) = Eigen::MatrixXd::Zero( block_length, 1);

}
开发者ID:krisoft,项目名称:panovis,代码行数:8,代码来源:matrix_utils.cpp

示例6: computeGeneralizedForce

void FrictionCompensation::computeGeneralizedForce(Eigen::VectorXd& tau)
{
  tau = Eigen::VectorXd::Zero(robot_->getDOF());
  unsigned int macro_dof = robot_->getMacroManipulatorDOF();

  unsigned int offset = 0;
  for(unsigned int i = 0; i < mnp_name_.size(); ++i)
  {
    mnp_ = robot_->getManipulator(mnp_name_[i]);
    unsigned int mini_dof = mnp_->getDOF() - macro_dof;

    tau.block(macro_dof + offset, 0, mini_dof, 1) = b_.block(macro_dof + offset, macro_dof + offset, mini_dof, mini_dof) * mnp_->dq().block(macro_dof, 0, mini_dof, 1);

    offset += mini_dof;
  }

  tau_ = tau;
}
开发者ID:skohlbr,项目名称:ahl_wbc,代码行数:18,代码来源:friction_compensation.cpp

示例7: evaluateErrorImplementation

  /// \brief evaluate the error term and return the weighted squared error e^T invR e
  double ErrorTermTransformation::evaluateErrorImplementation()
  {
    _errorMatrix = _T.toTransformationMatrix()*_prior.inverse().T();

    Eigen::VectorXd errorVector = Eigen::VectorXd::Zero(6);
    errorVector.block(0,0,3,1) = _errorMatrix.block(0,3,3,1);
    errorVector.block(3,0,3,1) = sm::kinematics::R2AxisAngle(_errorMatrix.block(0,0,3,3));
    setError(errorVector);

    if (_debug == 1)
    {
      std::cout << "\n\n\nPriorEstim:\n" << _T.toTransformationMatrix() << "\n";
      std::cout << "PriorGiven:\n" << _prior.T() << "\n";
      std::cout << "invPrior:\n" << _prior.inverse().T() << "\n";

      std::cout << "errorMatrix:\n" << _errorMatrix << "\n";
      std::cout << "error:\n" << error() <<  "\ninvR:\n" << invR() << "\n\n\n";
    }

    return evaluateChiSquaredError();
  }
开发者ID:AnnaDaiZH,项目名称:Kalibr,代码行数:22,代码来源:ErrorTermTransformation.cpp

示例8: copyToFlatVector

        ///  Copy ::Spacy::Vector to flat coefficient vector of %Eigen .
        void copyToFlatVector( const ::Spacy::Vector& x, Eigen::VectorXd& y,
                               unsigned& currentIndex )
        {
            if ( is< Vector >( x ) )
            {
                y.block( currentIndex, 0, cast_ref< Vector >( x ).get().size(), 1 ) =
                    cast_ref< Vector >( x ).get();
                currentIndex += cast_ref< Vector >( x ).get().size();
                return;
            }

            if ( is<::Spacy::ProductSpace::Vector >( x ) )
            {
                for ( unsigned int i = 0;
                      i < cast_ref<::Spacy::ProductSpace::Vector >( x ).numberOfVariables(); ++i )
                {
                    copyToFlatVector( cast_ref<::Spacy::ProductSpace::Vector >( x ).component( i ),
                                      y, currentIndex );
                }
                return;
            }
        }
开发者ID:spacy-dev,项目名称:Spacy,代码行数:23,代码来源:Copy.cpp


注:本文中的eigen::VectorXd::block方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。