Go to the documentation of this file.00001
00004
00005
00006
00007
00008 #ifndef sophus_ros_conversions_GEOMETRY_HPP_
00009 #define sophus_ros_conversions_GEOMETRY_HPP_
00010
00011
00012
00013
00014
00015 #include <geometry_msgs/Pose.h>
00016 #include <geometry_msgs/Transform.h>
00017 #include <geometry_msgs/Vector3.h>
00018 #include <sophus/se3.hpp>
00019 #include <tf/transform_listener.h>
00020
00021
00022
00023
00024 namespace sophus_ros_conversions {
00025
00026
00027
00028
00029
00036 void poseMsgToSophus(const geometry_msgs::Pose &p, Sophus::SE3f &s);
00037
00043 geometry_msgs::Pose sophusToPoseMsg(const Sophus::SE3f& s);
00044
00050 void vector3MsgToSophus(const geometry_msgs::Vector3 &v, Sophus::SE3f::Point &translation);
00051
00057 void transformMsgToSophus(const geometry_msgs::Transform &transform, Sophus::SE3f &se3);
00058
00059
00065 template<typename T>
00066 void stampedTransformToSophus( const tf::StampedTransform & transform, Sophus::SE3Group<T> & se3 )
00067 {
00068 Eigen::Quaternion<T> q;
00069 Eigen::Matrix<T,3,1> t;
00070
00071 q.x() = transform.getRotation().getX();
00072 q.y() = transform.getRotation().getY();
00073 q.z() = transform.getRotation().getZ();
00074 q.w() = transform.getRotation().getW();
00075 t.x() = transform.getOrigin().getX();
00076 t.y() = transform.getOrigin().getY();
00077 t.z() = transform.getOrigin().getZ();
00078 se3 = Sophus::SE3Group<T>(q,t);
00079 }
00080
00087 Sophus::SE3f transformMsgToSophus(const geometry_msgs::Transform &transform);
00088
00094 geometry_msgs::Transform sophusToTransformMsg(const Sophus::SE3f& se3);
00095
00096
00097
00098
00099
00100
00101 }
00102
00103 #endif