本文整理汇总了C++中eigen::Isometry3d::translation方法的典型用法代码示例。如果您正苦于以下问题:C++ Isometry3d::translation方法的具体用法?C++ Isometry3d::translation怎么用?C++ Isometry3d::translation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::Isometry3d
的用法示例。
在下文中一共展示了Isometry3d::translation方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cloud
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr Conversions::toPointCloudColor(const Eigen::Isometry3d &T, DepthImageDataPtr depth_data)
{
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>());
cv::Mat depth_img;
cv::Mat color_img;
cv_bridge::CvImagePtr depth_bridge;
cv_bridge::CvImagePtr rgb_bridge;
try {
depth_bridge = cv_bridge::toCvCopy(depth_data->depth_image_, sensor_msgs::image_encodings::TYPE_32FC1);
depth_img = depth_bridge->image;
rgb_bridge = cv_bridge::toCvCopy(depth_data->color_image_, sensor_msgs::image_encodings::BGR8);
color_img = rgb_bridge->image;
} catch (cv_bridge::Exception& e) {
ROS_ERROR("cv_bridge exception: %s",e.what());
return cloud;
}
// Get camera info for 3D point estimation.
image_geometry::PinholeCameraModel cam = depth_data->camera_model_;
cloud->header.frame_id = depth_data->sensor_frame_;
cloud->is_dense = false;
cloud->height = depth_img.rows;
cloud->width = depth_img.cols;
cloud->sensor_origin_ = Eigen::Vector4f( T.translation()(0), T.translation()(1), T.translation()(2), 1.f );
cloud->sensor_orientation_ = Eigen::Quaternionf(T.rotation().cast<float>());
cloud->points.resize( cloud->height * cloud->width );
size_t idx = 0;
const float* depthdata = reinterpret_cast<float*>( &depth_img.data[0] );
const unsigned char* colordata = &color_img.data[0];
for(int v = 0; v < depth_img.rows; ++v) {
for(int u = 0; u < depth_img.cols; ++u) {
pcl::PointXYZRGBA& p = cloud->points[ idx ]; ++idx;
float d = (*depthdata++);
if (d > 0 && !isnan(d)/* && p.z <= 7.5*/) {
p.z = d;
p.x = (u - cam.cx()) * d / cam.fx();
p.y = (v - cam.cy()) * d / cam.fy();
cv::Point3_<uchar>* rgb = color_img.ptr<cv::Point3_<uchar> >(v,u);
p.b = rgb->x;
p.g = rgb->y;
p.r = rgb->z;
p.a = 255;
} else {
p.x = std::numeric_limits<float>::quiet_NaN();;
p.y = std::numeric_limits<float>::quiet_NaN();;
p.z = std::numeric_limits<float>::quiet_NaN();;
p.rgb = 0;
colordata += 3;
}
}
}
return cloud;
}
示例2: setRootTransform
/**
* @function setRootTransform
* @brief Set q (SCREW) from pose <x,y,z,r,p,y>
*/
void InspectorTab::setRootTransform( dart::dynamics::Skeleton* robot,
const Eigen::Matrix<double, 6, 1>& pose ) {
dart::dynamics::Joint* joint = robot->getRootBodyNode()->getParentJoint();
if(dynamic_cast<dart::dynamics::FreeJoint*>(joint)) {
Matrix<double, 6, 1> q;
Eigen::Isometry3d transform = Eigen::Isometry3d::Identity();
transform.translation() = pose.head<3>();
transform.linear() = dart::math::eulerXYZToMatrix(pose.tail<3>());
q = dart::math::logMap(transform);
joint->set_q( q );
}
else {
Eigen::Isometry3d transform;
transform.makeAffine();
transform.linear() = dart::math::eulerXYZToMatrix(pose.tail<3>());
transform.translation() = pose.head<3>();
joint->setTransformFromParentBodyNode(transform);
}
for (int i = 0; i < robot->getNumBodyNodes(); ++i) {
robot->getBodyNode(i)->updateTransform();
}
}
示例3: draw
void PointMass::draw(renderer::RenderInterface* _ri,
const Eigen::Vector4d& _color,
bool _useDefaultColor) const
{
if (_ri == NULL)
return;
_ri->pushMatrix();
// render the self geometry
// mParentJoint->applyGLTransform(_ri);
Eigen::Isometry3d T = Eigen::Isometry3d::Identity();
T.translation() = mX;
_ri->transform(T);
Eigen::Vector4d color1;
color1 << 0.8, 0.3, 0.3, 1.0;
mShape->draw(_ri, color1, false);
_ri->popMatrix();
// _ri->pushName((unsigned)mID);
_ri->pushMatrix();
T.translation() = mX0;
_ri->transform(T);
Eigen::Vector4d color2;
color2 << 0.3, 0.8, 0.3, 1.0;
mShape->draw(_ri, color2, false);
_ri->popMatrix();
// _ri->popName();
}
示例4: getOdomPose
bool RosMessageContext::getOdomPose(Eigen::Isometry3d& _trans, double time){
bool transformFound = true;
_tfListener->waitForTransform(_odomReferenceFrameId, _baseReferenceFrameId,
ros::Time(time), ros::Duration(1.0));
try{
tf::StampedTransform t;
_tfListener->lookupTransform(_odomReferenceFrameId, _baseReferenceFrameId,
ros::Time(time), t);
Eigen::Isometry3d transform;
transform.translation().x()=t.getOrigin().x();
transform.translation().y()=t.getOrigin().y();
transform.translation().z()=t.getOrigin().z();
Eigen::Quaterniond rot;
rot.x()=t.getRotation().x();
rot.y()=t.getRotation().y();
rot.z()=t.getRotation().z();
rot.w()=t.getRotation().w();
transform.linear()=rot.toRotationMatrix();
_trans = transform;
transformFound = true;
}
catch (tf::TransformException ex){
ROS_ERROR("%s",ex.what());
transformFound = false;
}
return transformFound;
}
示例5: AdT
Eigen::Vector6d BodyNode::getWorldVelocity(
const Eigen::Vector3d& _offset, bool _isLocal) const {
Eigen::Isometry3d T = mW;
if (_isLocal)
T.translation() = mW.linear() * -_offset;
else
T.translation() = -_offset;
return math::AdT(T, mV);
}
示例6: getWorldJacobian
math::Jacobian BodyNode::getWorldJacobian(
const Eigen::Vector3d& _offset, bool _isOffsetLocal) {
Eigen::Isometry3d T = mW;
if (_isOffsetLocal)
T.translation() = mW.linear() * -_offset;
else
T.translation() = -_offset;
return math::AdTJac(T, getBodyJacobian());
}
示例7: getPoseAsBotPose
bot_core::pose_t getPoseAsBotPose(Eigen::Isometry3d pose, int64_t utime){
bot_core::pose_t pose_msg;
pose_msg.utime = utime;
pose_msg.pos[0] = pose.translation().x();
pose_msg.pos[1] = pose.translation().y();
pose_msg.pos[2] = pose.translation().z();
Eigen::Quaterniond r_x(pose.rotation());
pose_msg.orientation[0] = r_x.w();
pose_msg.orientation[1] = r_x.x();
pose_msg.orientation[2] = r_x.y();
pose_msg.orientation[3] = r_x.z();
return pose_msg;
}
示例8: weight
// TODO: consider orientations other than identity
std::vector<reachability_t> TestReachability(double rotation)
{
const double XMIN = -0.1, XMAX = 0.7, YMIN = -0.8, YMAX = .2, ZMIN = -1, ZMAX =
0.3, STEPSIZE = 0.05;
HK::HuboKin hubo;
std::vector<reachability_t> results;
Eigen::VectorXd weight(7);
weight << 1, 1, 1, 1, 1, 1, 1; //change this for weights!
Vector6d q;
int count = 0, valid = 0;
for (double x = XMIN; x <= XMAX; x += STEPSIZE)
{
for (double y = YMIN; y <= YMAX; y += STEPSIZE)
{
for (double z = ZMIN; z <= ZMAX; z += STEPSIZE)
{
++count;
Eigen::Isometry3d target = Eigen::Isometry3d::Identity();
Eigen::Isometry3d result;
target.translation().x() = x;
target.translation().y() = y;
target.translation().z() = z;
target.rotate(Eigen::AngleAxisd(-(M_PI/6) * rotation, Eigen::Vector3d::UnitX()));
hubo.armIK(q, target, Vector6d::Zero(), RIGHT);
hubo.armFK(result, q, RIGHT);
double ret = compareT(target, result, weight);
//std::cout << ret << "\t";
if (ret > 0.15)
{
continue;
}
else
{
valid++;
reachability_t pointScore;
pointScore.x = x;
pointScore.y = y;
pointScore.z = z;
pointScore.error = ret;
results.push_back(pointScore);
}
}
}
}
return results;
}
示例9: compareT
double compareT(Eigen::Isometry3d a, Eigen::Isometry3d b,
Eigen::VectorXd weight)
{
Eigen::Quaterniond qa(a.rotation());
Eigen::Quaterniond qb(b.rotation());
Eigen::Vector3d pa = a.translation();
Eigen::Vector3d pb = b.translation();
Eigen::VectorXd va(7), vb(7), verr(7), vScaled(7);
va << pa, qa.x(), qa.y(), qa.z(), qa.w();
vb << pb, qb.x(), qb.y(), qb.z(), qb.w();
verr = vb - va;
vScaled = weight.cwiseProduct(verr);
return vScaled.squaredNorm();
}
示例10: collideSphereSphere
int collideSphereSphere(CollisionObject* o1, CollisionObject* o2, const double& _r0, const Eigen::Isometry3d& c0,
const double& _r1, const Eigen::Isometry3d& c1,
CollisionResult& result)
{
double r0 = _r0;
double r1 = _r1;
double rsum = r0 + r1;
Eigen::Vector3d normal = c0.translation() - c1.translation();
double normal_sqr = normal.squaredNorm();
if ( normal_sqr > rsum * rsum )
{
return 0;
}
r0 /= rsum;
r1 /= rsum;
Eigen::Vector3d point = r1 * c0.translation() + r0 * c1.translation();
double penetration;
if (normal_sqr < DART_COLLISION_EPS)
{
normal.setZero();
penetration = rsum;
Contact contact;
contact.collisionObject1 = o1;
contact.collisionObject2 = o2;
contact.point = point;
contact.normal = normal;
contact.penetrationDepth = penetration;
result.addContact(contact);
return 1;
}
normal_sqr = sqrt(normal_sqr);
normal *= (1.0/normal_sqr);
penetration = rsum - normal_sqr;
Contact contact;
contact.collisionObject1 = o1;
contact.collisionObject2 = o2;
contact.point = point;
contact.normal = normal;
contact.penetrationDepth = penetration;
result.addContact(contact);
return 1;
}
示例11: toString
std::string toString(const Eigen::Isometry3d& _v)
{
std::ostringstream ostr;
ostr.precision(6);
Eigen::Vector3d xyz = math::matrixToEulerXYZ(_v.linear());
ostr << _v.translation()(0) << " "
<< _v.translation()(1) << " "
<< _v.translation()(2) << " ";
ostr << xyz[0] << " " << xyz[1] << " " << xyz[2];
return ostr.str();
}
示例12: doWork
void App::doWork(){
std::vector<float> xA;
std::vector<float> yA;
readCSVFile(cl_cfg_.filenameA, xA, yA);
std::cout << xA.size() << " points in File A\n";
lidarOdom_->doOdometry(xA, yA, xA.size(), 0);
// Match second scan without a prior
std::string i;
cout << "Match B: Continue? ";
cin >> i;
std::vector<float> xB;
std::vector<float> yB;
readCSVFile(cl_cfg_.filenameB, xB, yB);
std::cout << xB.size() << " points in File B\n";
lidarOdom_->doOdometry(xB, yB, xB.size(), 1);
// Match third scan giving a prior rotation for the heading
// this alignment would otherwise fail:
cout << "Match C: Continue? ";
cin >> i;
std::vector<float> xC;
std::vector<float> yC;
readCSVFile(cl_cfg_.filenameC, xC, yC);
std::cout << xC.size() << " points in File C\n";
ScanTransform prior;
prior.x = 0;
prior.y = 0;
prior.theta = 1.7;
lidarOdom_->doOdometry(xC, yC, xC.size(), 2, &prior);
// 2. Determine the body position using the LIDAR motion estimate:
Eigen::Isometry3d pose = lidarOdom_->getCurrentPose();
Eigen::Quaterniond orientation(pose.rotation());
Eigen::Vector3d rpy = orientation.matrix().eulerAngles(0,1,2);
std::cout << "\n";
std::cout << "x,y,yaw (m,m,deg): "<< pose.translation().x() << ", " << pose.translation().y()
<< ", "
<< rpy[2]*180/M_PI << "\n";
}
示例13: v
// A 'halo' camera - a circular ring of poses all pointing at a center point
// @param: focus_center: the center points
// @param: halo_r: radius of the ring
// @param: halo_dz: elevation of the camera above/below focus_center's z value
// @param: n_poses: number of generated poses
void
generate_halo(
std::vector<Eigen::Isometry3d, Eigen::aligned_allocator<Eigen::Isometry3d> > &poses,
Eigen::Vector3d focus_center,double halo_r,double halo_dz,int n_poses){
for (double t=0;t < (2*M_PI);t =t + (2*M_PI)/ ((double) n_poses) ){
double x = halo_r*cos(t);
double y = halo_r*sin(t);
double z = halo_dz;
double pitch =atan2( halo_dz,halo_r);
double yaw = atan2(-y,-x);
Eigen::Isometry3d pose;
pose.setIdentity();
Eigen::Matrix3d m;
m = AngleAxisd(yaw, Eigen::Vector3d::UnitZ())
* AngleAxisd(pitch, Eigen::Vector3d::UnitY())
* AngleAxisd(0, Eigen::Vector3d::UnitZ());
pose *=m;
Vector3d v(x,y,z);
v += focus_center;
pose.translation() = v;
poses.push_back(pose);
}
return ;
}
示例14: assert
Eigen::Isometry3d toIsometry3d(const std::string& _str)
{
Eigen::Isometry3d T = Eigen::Isometry3d::Identity();
Eigen::Vector6d elements = Eigen::Vector6d::Zero();
std::vector<std::string> pieces;
std::string trimedStr = boost::trim_copy(_str);
boost::split(pieces, trimedStr, boost::is_any_of(" "), boost::token_compress_on);
assert(pieces.size() == 6);
for (size_t i = 0; i < pieces.size(); ++i)
{
if (pieces[i] != "")
{
try
{
elements(i) = boost::lexical_cast<double>(pieces[i].c_str());
}
catch(boost::bad_lexical_cast& e)
{
std::cerr << "value ["
<< pieces[i]
<< "] is not a valid double for SE3["
<< i
<< "]"
<< std::endl;
}
}
}
T.linear() = math::eulerXYZToMatrix(elements.tail<3>());
T.translation() = elements.head<3>();
return T;
}
示例15: getCOM
//==============================================================================
Eigen::Isometry3d State::getCOMFrame() const
{
Eigen::Isometry3d T = Eigen::Isometry3d::Identity();
// Y-axis
Eigen::Vector3d yAxis = Eigen::Vector3d::UnitY();
// X-axis
Eigen::Vector3d xAxis = mPelvis->getTransform().linear().col(0);
Eigen::Vector3d pelvisXAxis = mPelvis->getTransform().linear().col(0);
double mag = yAxis.dot(pelvisXAxis);
pelvisXAxis -= mag * yAxis;
xAxis = pelvisXAxis.normalized();
// Z-axis
Eigen::Vector3d zAxis = xAxis.cross(yAxis);
T.translation() = getCOM();
T.linear().col(0) = xAxis;
T.linear().col(1) = yAxis;
T.linear().col(2) = zAxis;
return T;
}