33 #include <Eigen/Geometry>
34 #include <boost/serialization/base_object.hpp>
35 #include <boost/serialization/nvp.hpp>
36 #include <boost/serialization/array.hpp>
46 template <
class Archive>
47 void save(Archive& ar,
const Eigen::VectorXd& g,
const unsigned int )
50 ar& BOOST_SERIALIZATION_NVP(rows);
51 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
54 template <
class Archive>
55 void load(Archive& ar, Eigen::VectorXd& g,
const unsigned int )
58 ar& BOOST_SERIALIZATION_NVP(rows);
60 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
63 template <
class Archive>
64 void serialize(Archive& ar, Eigen::VectorXd& g,
const unsigned int version)
66 split_free(ar, g, version);
72 template <
class Archive>
73 void save(Archive& ar,
const Eigen::Vector3d& g,
const unsigned int )
76 ar& BOOST_SERIALIZATION_NVP(rows);
77 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
80 template <
class Archive>
81 void load(Archive& ar, Eigen::Vector3d& g,
const unsigned int )
84 ar& BOOST_SERIALIZATION_NVP(rows);
86 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
89 template <
class Archive>
90 void serialize(Archive& ar, Eigen::Vector3d& g,
const unsigned int version)
92 split_free(ar, g, version);
98 template <
class Archive>
99 void save(Archive& ar,
const Eigen::Vector4d& g,
const unsigned int )
101 long rows = g.rows();
102 ar& BOOST_SERIALIZATION_NVP(rows);
103 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
106 template <
class Archive>
107 void load(Archive& ar, Eigen::Vector4d& g,
const unsigned int )
110 ar& BOOST_SERIALIZATION_NVP(rows);
112 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
115 template <
class Archive>
116 void serialize(Archive& ar, Eigen::Vector4d& g,
const unsigned int version)
118 split_free(ar, g, version);
124 template <
class Archive>
125 void save(Archive& ar,
const Eigen::VectorXi& g,
const unsigned int )
127 long rows = g.rows();
128 ar& BOOST_SERIALIZATION_NVP(rows);
129 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
132 template <
class Archive>
133 void load(Archive& ar, Eigen::VectorXi& g,
const unsigned int )
136 ar& BOOST_SERIALIZATION_NVP(rows);
138 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows));
141 template <
class Archive>
142 void serialize(Archive& ar, Eigen::VectorXi& g,
const unsigned int version)
144 split_free(ar, g, version);
151 template <
class Archive>
152 void save(Archive& ar,
const Eigen::Isometry3d& g,
const unsigned int )
154 ar& boost::serialization::make_nvp(
"xyz", boost::serialization::make_array(g.translation().data(), 3));
155 Eigen::Quaterniond q(g.linear());
156 ar& boost::serialization::make_nvp(
"xyzw", boost::serialization::make_array(q.vec().data(), 4));
159 template <
class Archive>
160 void load(Archive& ar, Eigen::Isometry3d& g,
const unsigned int )
163 ar& boost::serialization::make_nvp(
"xyz", boost::serialization::make_array(g.translation().data(), 3));
164 Eigen::Quaterniond q;
165 ar& boost::serialization::make_nvp(
"xyzw", boost::serialization::make_array(q.vec().data(), 4));
167 g.linear() = q.toRotationMatrix();
170 template <
class Archive>
171 void serialize(Archive& ar, Eigen::Isometry3d& g,
const unsigned int version)
173 split_free(ar, g, version);
179 template <
class Archive>
180 void save(Archive& ar,
const Eigen::MatrixX2d& g,
const unsigned int )
182 long rows = g.rows();
183 ar& BOOST_SERIALIZATION_NVP(rows);
184 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows * 2));
187 template <
class Archive>
188 void load(Archive& ar, Eigen::MatrixX2d& g,
const unsigned int )
191 ar& BOOST_SERIALIZATION_NVP(rows);
193 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), rows * 2));
196 template <
class Archive>
197 void serialize(Archive& ar, Eigen::MatrixX2d& g,
const unsigned int version)
199 split_free(ar, g, version);
202 template <
class Archive>
203 void save(Archive& ar,
const std::variant<std::string, Eigen::Isometry3d>& g,
const unsigned int )
205 std::size_t index = g.index();
206 ar& BOOST_SERIALIZATION_NVP(index);
209 const auto& tcp_string = std::get<std::string>(g);
210 ar& BOOST_SERIALIZATION_NVP(tcp_string);
214 const auto& tcp_isometry = std::get<Eigen::Isometry3d>(g);
215 ar& BOOST_SERIALIZATION_NVP(tcp_isometry);
219 template <
class Archive>
220 void load(Archive& ar, std::variant<std::string, Eigen::Isometry3d>& g,
const unsigned int )
222 std::size_t index{ 0 };
223 ar& BOOST_SERIALIZATION_NVP(index);
226 std::string tcp_string;
227 ar& BOOST_SERIALIZATION_NVP(tcp_string);
232 Eigen::Isometry3d tcp_isometry{ Eigen::Isometry3d::Identity() };
233 ar& BOOST_SERIALIZATION_NVP(tcp_isometry);
238 template <
class Archive>
239 void serialize(Archive& ar, std::variant<std::string, Eigen::Isometry3d>& g,
const unsigned int version)
241 split_free(ar, g, version);
248 template <
class Archive>
249 void serialize(Archive& ar, Eigen::Matrix<double, 6, 1>& g,
const unsigned int )
251 ar& boost::serialization::make_nvp(
"data", boost::serialization::make_array(g.data(), 6));