// KDL transform to fcl transform
void convert(const KDL::Frame &in, fcl::Transform3f &out) {
    double x,y,z,w;
    in.M.GetQuaternion(x, y, z, w);
    fcl::Vec3f t(in.p[0], in.p[1], in.p[2]);
    fcl::Quaternion3f q(w, x, y, z);
    out.setQuatRotation(q);
    out.setTranslation(t);
}
void convert(const fcl::Transform3f &in, tf::Transform &out) {
    out.setOrigin(tf::Vector3(in.getTranslation()[0],
                              in.getTranslation()[1],
                              in.getTranslation()[2]) );
    out.setRotation(tf::Quaternion(in.getQuatRotation().getX(),
                                   in.getQuatRotation().getY(),
                                   in.getQuatRotation().getZ(),
                                   in.getQuatRotation().getW()) );
}
	void drawMesh(const fcl::Transform3f &transform, const OpenGLWrapper::Color &color) const {
		std::vector<double> glTransform = OpenGLWrapper::getOpenGLWrapper().getIdentity();

		const fcl::Vec3f &translation = transform.getTranslation();
		const fcl::Matrix3f &orientation = transform.getRotation();

		glTransform[0] = orientation(0,0);
		glTransform[1] = orientation(0,1);
		glTransform[2] = orientation(0,2);
		glTransform[4] = orientation(1,0);
		glTransform[5] = orientation(1,1);
		glTransform[6] = orientation(1,2);
		glTransform[8] = orientation(2,0);
		glTransform[9] = orientation(2,1);
		glTransform[10] = orientation(2,2);

		glTransform[12] = translation[0];
		glTransform[13] = translation[1];
		glTransform[14] = translation[2];

		mesh.draw(color, glTransform);
	}
Beispiel #4
0
py::object Transform3fToNdarray2(const fcl::Transform3f& transform) {
  size_t dim0 = 4, dim1 = 4;
  py::object out = np_mod.attr("empty")(py::make_tuple(dim0, dim1), type_traits<double>::npname);
  double* pout = getPointer<double>(out);
  memset(pout, 0, dim0*dim1*sizeof(double));
  memcpy(pout, (double*)(transform.getRotation().data.rs[0].vs), 3*sizeof(double));
  memcpy(pout+3, (double*)(transform.getTranslation().data.vs), 1*sizeof(double));
  memcpy(pout+4, (double*)(transform.getRotation().data.rs[1].vs), 3*sizeof(double));
  memcpy(pout+7, (double*)(transform.getTranslation().data.vs+1), 1*sizeof(double));
  memcpy(pout+8, (double*)(transform.getRotation().data.rs[2].vs), 3*sizeof(double));
  memcpy(pout+11, (double*)(transform.getTranslation().data.vs+2), 1*sizeof(double));
  std::fill_n(pout+12, 0.0, 3);
  std::fill_n(pout+15, 1.0, 1);
  return out;
}
 se3::SE3 toPinocchioSE3(const fcl::Transform3f & tf)
 {
   return se3::SE3(toMatrix3d(tf.getRotation()), toVector3d(tf.getTranslation()));
 }
Beispiel #6
0
 void fcl2Eigen(const fcl::Transform3f & fcl, Eigen::Vector3d & eigen)
 {
   eigen(0) = fcl.getTranslation().data.vs[0];
   eigen(1) = fcl.getTranslation().data.vs[1];
   eigen(2) = fcl.getTranslation().data.vs[2];
 }