$search
00001 /* 00002 * Copyright (c) 2009, Willow Garage, Inc. 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions are met: 00007 * 00008 * * Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * * Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * * Neither the name of the Willow Garage, Inc. nor the names of its 00014 * contributors may be used to endorse or promote products derived from 00015 * this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00018 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00021 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00022 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00023 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00024 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00025 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00026 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00027 * POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 00030 #include "tf_conversions/tf_eigen.h" 00031 00032 namespace tf { 00033 00034 void VectorTFToEigen(const tf::Vector3& t, Eigen::Vector3d& k) 00035 { 00036 k(0) = t[0]; 00037 k(1) = t[1]; 00038 k(2) = t[2]; 00039 }; 00040 00041 void VectorEigenToTF(const Eigen::Vector3d& k, tf::Vector3& t) 00042 { 00043 t[0] = k(0); 00044 t[1] = k(1); 00045 t[2] = k(2); 00046 } 00047 00048 void RotationTFToEigen(const tf::Quaternion& t, Eigen::Quaterniond& k) 00049 { 00050 Eigen::Quaterniond m(t[3],t[0],t[1],t[2]); 00051 k = m; 00052 }; 00053 00054 void RotationEigenToTF(const Eigen::Quaterniond& k, tf::Quaternion& t) 00055 { 00056 t[0] = k.x(); 00057 t[1] = k.y(); 00058 t[2] = k.z(); 00059 t[3] = k.w(); 00060 } 00061 00062 void TransformTFToEigen(const tf::Transform &t, Eigen::Affine3d &k) 00063 { 00064 for(int i=0; i<3; i++) 00065 { 00066 k.matrix()(i,3) = t.getOrigin()[i]; 00067 for(int j=0; j<3; j++) 00068 { 00069 k.matrix()(i,j) = t.getBasis()[i][j]; 00070 } 00071 } 00072 // Fill in identity in last row 00073 for (int col = 0 ; col < 3; col ++) 00074 k.matrix()(3, col) = 0; 00075 k.matrix()(3,3) = 1; 00076 00077 }; 00078 00079 void TransformEigenToTF(const Eigen::Affine3d &k, tf::Transform &t) 00080 { 00081 t.setOrigin(tf::Vector3(k.matrix()(0,3), k.matrix()(1,3), k.matrix()(2,3))); 00082 t.setBasis(btMatrix3x3(k.matrix()(0,0), k.matrix()(0,1),k.matrix()(0,2),k.matrix()(1,0), k.matrix()(1,1),k.matrix()(1,2),k.matrix()(2,0), k.matrix()(2,1),k.matrix()(2,2))); 00083 }; 00084 }