本文整理汇总了C++中eigen::VectorXd::coeffRef方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorXd::coeffRef方法的具体用法?C++ VectorXd::coeffRef怎么用?C++ VectorXd::coeffRef使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::VectorXd
的用法示例。
在下文中一共展示了VectorXd::coeffRef方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Eigen::VectorXd L2R_Huber_SVC::productXtVsub2(const Eigen::VectorXd &V) {
Eigen::VectorXd ans = Eigen::VectorXd::Zero(n);
int sizeD = indexs_D2.size();
for (int i = 0; i < sizeD; ++i) {
for (Eigen::SparseMatrix<double, 1, std::ptrdiff_t>::InnerIterator it(
X, indexs_D2[i]);
it; ++it) {
ans.coeffRef(it.index()) += V.coeffRef(i) * it.value();
}
}
return ans;
}
示例2: main
int main(int argc, char** argv)
{
ros::init(argc, argv, "parser_test");
ros::NodeHandle nh;
try
{
std::string name = "red_arm";
RobotPtr robot = std::make_shared<Robot>(name);
ParserPtr parser = std::make_shared<Parser>();
std::string path = "/home/daichi/Work/catkin_ws/src/ahl_ros_pkg/ahl_robot/ahl_robot/yaml/red_arm.yaml";
parser->load(path, robot);
ros::MultiThreadedSpinner spinner;
TfPublisherPtr tf_publisher = std::make_shared<TfPublisher>();
const std::string mnp_name = "mnp";
unsigned long cnt = 0;
ros::Rate r(10.0);
while(ros::ok())
{
Eigen::VectorXd q = Eigen::VectorXd::Zero(robot->getDOF(mnp_name));
ManipulatorPtr mnp = robot->getManipulator(mnp_name);
double goal = sin(2.0 * M_PI * 0.2 * cnt * 0.1);
++cnt;
for(uint32_t i = 0; i < q.rows(); ++i)
{
q.coeffRef(6) = M_PI / 4.0 * goal;
}
std::cout << M_PI / 4.0 * goal << std::endl;
//q = Eigen::VectorXd::Constant(q.rows(), 0.0 * M_PI / 4.0);
robot->update(q);
robot->computeJacobian(mnp_name);
robot->computeMassMatrix(mnp_name);
M = robot->getMassMatrix(mnp_name);
J = robot->getJacobian(mnp_name, "gripper");
calc();
tf_publisher->publish(robot, false);
r.sleep();
}
}
catch(ahl_utils::Exception& e)
{
ROS_ERROR_STREAM(e.what());
}
return 0;
}
示例3: main
int main(int argc, char** argv)
{
ros::init(argc, argv, "parser_test");
ros::NodeHandle nh;
try
{
std::string name = "youbot";
RobotPtr robot = RobotPtr(new Robot(name));
ParserPtr parser = ParserPtr(new Parser());
std::string path = "/home/daichi/Work/catkin_ws/src/ahl_ros_pkg/ahl_robot/ahl_robot/yaml/youbot.yaml";
parser->load(path, robot);
robot->getMobility()->print();
ros::MultiThreadedSpinner spinner;
TfPublisherPtr tf_publisher = TfPublisherPtr(new TfPublisher());
const std::string mnp_name = "mnp";
unsigned long cnt = 0;
const double period = 0.001;
ros::Rate r(1 / period);
ahl_filter::DifferentiatorPtr differentiator = ahl_filter::DifferentiatorPtr(new ahl_filter::PseudoDifferentiator(period, 1.0));
Eigen::VectorXd q = Eigen::VectorXd::Constant(robot->getDOF(mnp_name), 0.0);
Eigen::VectorXd dq = Eigen::VectorXd::Constant(robot->getDOF(mnp_name), 0.0);
differentiator->init(q, dq);
Eigen::VectorXd pre_q = q;
//std::ofstream ofs1;
//ofs1.open("result1.hpp");
//std::ofstream ofs2;
//ofs2.open("result2.hpp");
//std::ofstream ofs3;
//ofs3.open("result3.hpp");
while(ros::ok())
{
q = Eigen::VectorXd::Constant(robot->getDOF(mnp_name), 1.0);
double coeff = 1.0 * sin(2.0 * M_PI * 0.1 * cnt * period);
++cnt;
q = coeff * q;
//q = Eigen::VectorXd::Constant(robot->getDOF(mnp_name), M_PI / 2.0);
q.coeffRef(0) = 0.0;
q.coeffRef(1) = 0.0;
q.coeffRef(2) = 0.0;
robot->update(mnp_name, q);
robot->computeBasicJacobian(mnp_name);
robot->computeMassMatrix(mnp_name);
differentiator->apply(q);
Eigen::VectorXd dq1 = robot->getJointVelocity(mnp_name);
Eigen::VectorXd dq2;
differentiator->copyDerivativeValueTo(dq2);
std::cout << "p : " << q.transpose() << std::endl;
std::cout << "pre_p : " << pre_q.transpose() << std::endl;
Eigen::VectorXd dq3 = (q - pre_q) / period;
pre_q = q;
//std::cout << "dq1 : " << dq1.block(3, 0, dq.rows() - 3, 1).transpose() << std::endl;
//std::cout << "dq2 : " << dq2.block(3, 0, dq.rows() - 3, 1).transpose() << std::endl;
//std::cout << "dq3 : " << dq3.block(3, 0, dq.rows() - 3, 1).transpose() << std::endl;
//std::cout << dq << std::endl << std::endl;
//std::cout << cos(2.0 * M_PI * 0.1 * cnt * 0.1) << std::endl;
tf_publisher->publish(robot, false);
/*
ofs1 << cnt * period << " ";
ofs2 << cnt * period << " ";
ofs3 << cnt * period << " ";
for(unsigned int i = 0; i < dq.rows() - 3; ++i)
{
ofs1 << dq1[i + 3] << " ";
ofs2 << dq2[i + 3] << " ";
ofs3 << dq3[i + 3] << " ";
}
ofs1 << std::endl;
ofs2 << std::endl;
ofs3 << std::endl;
*/
r.sleep();
}
}
catch(ahl_robot::Exception& e)
{
ROS_ERROR_STREAM(e.what());
}
//.........这里部分代码省略.........