orientation.cpp
Go to the documentation of this file.
00001 #include "transform_graph/orientation.h"
00002 
00003 #include "Eigen/Dense"
00004 #include "Eigen/Geometry"
00005 #include "geometry_msgs/Quaternion.h"
00006 #include "tf/transform_datatypes.h"
00007 #include "tf_conversions/tf_eigen.h"
00008 
00009 namespace transform_graph {
00010 Orientation::Orientation() : matrix_() {
00011   Eigen::Quaterniond q(Eigen::Quaterniond::Identity());
00012   matrix_ = q.matrix();
00013 }
00014 
00015 Orientation::Orientation(double w, double x, double y, double z) : matrix_() {
00016   Eigen::Quaterniond q(w, x, y, z);
00017   matrix_ = q.matrix();
00018 }
00019 
00020 Orientation::Orientation(const Eigen::Matrix3d& m) : matrix_() { matrix_ = m; }
00021 
00022 Orientation::Orientation(const Eigen::Quaterniond& q) : matrix_() {
00023   matrix_ = q.matrix();
00024 }
00025 
00026 Orientation::Orientation(const geometry_msgs::Quaternion& q) : matrix_() {
00027   Eigen::Quaterniond eq(q.w, q.x, q.y, q.z);
00028   matrix_ = eq.matrix();
00029 }
00030 
00031 Orientation::Orientation(const tf::Quaternion& q) : matrix_() {
00032   Eigen::Quaterniond eq(q.w(), q.x(), q.y(), q.z());
00033   matrix_ = eq.matrix();
00034 }
00035 
00036 Orientation::Orientation(const tf::Matrix3x3& m) : matrix_() {
00037   const tf::Vector3& row0 = m.getRow(0);
00038   const tf::Vector3& row1 = m.getRow(1);
00039   const tf::Vector3& row2 = m.getRow(2);
00040   // clang-format off
00041   matrix_ << row0.x(), row0.y(), row0.z(),
00042              row1.x(), row1.y(), row1.z(),
00043              row2.x(), row2.y(), row2.z();
00044   // clang-format on
00045 }
00046 
00047 Eigen::Matrix3d Orientation::matrix() const { return matrix_; }
00048 
00049 Eigen::Quaterniond Orientation::quaternion() const {
00050   return Eigen::Quaterniond(matrix_);
00051 }
00052 
00053 geometry_msgs::Quaternion Orientation::quaternion_msg() const {
00054   Eigen::Quaterniond q(matrix_);
00055   geometry_msgs::Quaternion out;
00056   out.w = q.w();
00057   out.x = q.x();
00058   out.y = q.y();
00059   out.z = q.z();
00060   return out;
00061 }
00062 
00063 tf::Quaternion Orientation::tf_quaternion() const {
00064   Eigen::Quaterniond q(matrix_);
00065   tf::Quaternion out(q.x(), q.y(), q.z(), q.w());
00066   return out;
00067 }
00068 
00069 tf::Matrix3x3 Orientation::tf_matrix() const {
00070   tf::Matrix3x3 tf_matrix;
00071   tf::matrixEigenToTF(matrix_, tf_matrix);
00072   return tf_matrix;
00073 }
00074 }  // namespace transform_graph


transform_graph
Author(s):
autogenerated on Sat Jun 8 2019 19:23:43