ros_filter_utilities.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2014, 2015, 2016, Charles River Analytics, 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
00007  * are met:
00008  *
00009  * 1. Redistributions of source code must retain the above copyright
00010  * notice, this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above
00012  * copyright notice, this list of conditions and the following
00013  * disclaimer in the documentation and/or other materials provided
00014  * with the distribution.
00015  * 3. Neither the name of the copyright holder nor the names of its
00016  * contributors may be used to endorse or promote products derived
00017  * from this software without specific prior written permission.
00018  *
00019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00020  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00021  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00022  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00023  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00024  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00025  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00026  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00027  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00028  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00029  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00030  * POSSIBILITY OF SUCH DAMAGE.
00031  */
00032 
00033 #ifndef ROBOT_LOCALIZATION_ROS_FILTER_UTILITIES_H
00034 #define ROBOT_LOCALIZATION_ROS_FILTER_UTILITIES_H
00035 
00036 #include <tf2/LinearMath/Quaternion.h>
00037 #include <tf2/LinearMath/Transform.h>
00038 #include <tf2_ros/buffer.h>
00039 
00040 #include <Eigen/Dense>
00041 
00042 #include <iomanip>
00043 #include <iostream>
00044 #include <string>
00045 #include <vector>
00046 
00047 #define RF_DEBUG(msg) if (filter_.getDebug()) { debugStream_ << msg; }
00048 
00049 // Handy methods for debug output
00050 std::ostream& operator<<(std::ostream& os, const tf2::Vector3 &vec);
00051 std::ostream& operator<<(std::ostream& os, const tf2::Quaternion &quat);
00052 std::ostream& operator<<(std::ostream& os, const tf2::Transform &trans);
00053 std::ostream& operator<<(std::ostream& os, const std::vector<double> &vec);
00054 
00055 namespace RobotLocalization
00056 {
00057 namespace RosFilterUtilities
00058 {
00059 
00060 double getYaw(const tf2::Quaternion quat);
00061 
00079 bool lookupTransformSafe(const tf2_ros::Buffer &buffer,
00080                          const std::string &targetFrame,
00081                          const std::string &sourceFrame,
00082                          const ros::Time &time,
00083                          const ros::Duration &timeout,
00084                          tf2::Transform &targetFrameTrans);
00085 
00102 bool lookupTransformSafe(const tf2_ros::Buffer &buffer,
00103                          const std::string &targetFrame,
00104                          const std::string &sourceFrame,
00105                          const ros::Time &time,
00106                          tf2::Transform &targetFrameTrans);
00107 
00114 void quatToRPY(const tf2::Quaternion &quat, double &roll, double &pitch, double &yaw);
00115 
00120 void stateToTF(const Eigen::VectorXd &state, tf2::Transform &stateTF);
00121 
00126 void TFtoState(const tf2::Transform &stateTF, Eigen::VectorXd &state);
00127 
00128 }  // namespace RosFilterUtilities
00129 }  // namespace RobotLocalization
00130 
00131 #endif  // ROBOT_LOCALIZATION_ROS_FILTER_UTILITIES_H


robot_localization
Author(s): Tom Moore
autogenerated on Sun Apr 2 2017 03:39:46