Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "cartographer/transform/transform.h"
00018
00019 namespace cartographer {
00020 namespace transform {
00021
00022 Rigid2d ToRigid2(const proto::Rigid2d& transform) {
00023 return Rigid2d({transform.translation().x(), transform.translation().y()},
00024 transform.rotation());
00025 }
00026
00027 Eigen::Vector2d ToEigen(const proto::Vector2d& vector) {
00028 return Eigen::Vector2d(vector.x(), vector.y());
00029 }
00030
00031 Eigen::Vector3f ToEigen(const proto::Vector3f& vector) {
00032 return Eigen::Vector3f(vector.x(), vector.y(), vector.z());
00033 }
00034
00035 Eigen::Vector4f ToEigen(const proto::Vector4f& vector) {
00036 return Eigen::Vector4f(vector.x(), vector.y(), vector.z(), vector.t());
00037 }
00038
00039 Eigen::Vector3d ToEigen(const proto::Vector3d& vector) {
00040 return Eigen::Vector3d(vector.x(), vector.y(), vector.z());
00041 }
00042
00043 Eigen::Quaterniond ToEigen(const proto::Quaterniond& quaternion) {
00044 return Eigen::Quaterniond(quaternion.w(), quaternion.x(), quaternion.y(),
00045 quaternion.z());
00046 }
00047
00048 proto::Rigid2d ToProto(const transform::Rigid2d& transform) {
00049 proto::Rigid2d proto;
00050 proto.mutable_translation()->set_x(transform.translation().x());
00051 proto.mutable_translation()->set_y(transform.translation().y());
00052 proto.set_rotation(transform.rotation().angle());
00053 return proto;
00054 }
00055
00056 proto::Rigid2f ToProto(const transform::Rigid2f& transform) {
00057 proto::Rigid2f proto;
00058 proto.mutable_translation()->set_x(transform.translation().x());
00059 proto.mutable_translation()->set_y(transform.translation().y());
00060 proto.set_rotation(transform.rotation().angle());
00061 return proto;
00062 }
00063
00064 proto::Rigid3d ToProto(const transform::Rigid3d& rigid) {
00065 proto::Rigid3d proto;
00066 *proto.mutable_translation() = ToProto(rigid.translation());
00067 *proto.mutable_rotation() = ToProto(rigid.rotation());
00068 return proto;
00069 }
00070
00071 transform::Rigid3d ToRigid3(const proto::Rigid3d& rigid) {
00072 return transform::Rigid3d(ToEigen(rigid.translation()),
00073 ToEigen(rigid.rotation()));
00074 }
00075
00076 proto::Rigid3f ToProto(const transform::Rigid3f& rigid) {
00077 proto::Rigid3f proto;
00078 *proto.mutable_translation() = ToProto(rigid.translation());
00079 *proto.mutable_rotation() = ToProto(rigid.rotation());
00080 return proto;
00081 }
00082
00083 proto::Vector2d ToProto(const Eigen::Vector2d& vector) {
00084 proto::Vector2d proto;
00085 proto.set_x(vector.x());
00086 proto.set_y(vector.y());
00087 return proto;
00088 }
00089
00090 proto::Vector3f ToProto(const Eigen::Vector3f& vector) {
00091 proto::Vector3f proto;
00092 proto.set_x(vector.x());
00093 proto.set_y(vector.y());
00094 proto.set_z(vector.z());
00095 return proto;
00096 }
00097
00098 proto::Vector4f ToProto(const Eigen::Vector4f& vector) {
00099 proto::Vector4f proto;
00100 proto.set_x(vector.x());
00101 proto.set_y(vector.y());
00102 proto.set_z(vector.z());
00103 proto.set_t(vector.w());
00104 return proto;
00105 }
00106
00107 proto::Vector3d ToProto(const Eigen::Vector3d& vector) {
00108 proto::Vector3d proto;
00109 proto.set_x(vector.x());
00110 proto.set_y(vector.y());
00111 proto.set_z(vector.z());
00112 return proto;
00113 }
00114
00115 proto::Quaternionf ToProto(const Eigen::Quaternionf& quaternion) {
00116 proto::Quaternionf proto;
00117 proto.set_w(quaternion.w());
00118 proto.set_x(quaternion.x());
00119 proto.set_y(quaternion.y());
00120 proto.set_z(quaternion.z());
00121 return proto;
00122 }
00123
00124 proto::Quaterniond ToProto(const Eigen::Quaterniond& quaternion) {
00125 proto::Quaterniond proto;
00126 proto.set_w(quaternion.w());
00127 proto.set_x(quaternion.x());
00128 proto.set_y(quaternion.y());
00129 proto.set_z(quaternion.z());
00130 return proto;
00131 }
00132
00133 }
00134 }