28 #include <Eigen/Geometry>
29 #include <nlohmann/json.hpp>
34 struct adl_serializer<Eigen::Vector3d> {
35 static void to_json(json& j,
const Eigen::Vector3d& v) {
43 static void from_json(
const json& j, Eigen::Vector3d& v) {
44 v.x() = j[
"x"].get<
double>();
45 v.y() = j[
"y"].get<
double>();
46 v.z() = j[
"z"].get<
double>();
51 struct adl_serializer<Eigen::Quaterniond> {
52 static void to_json(json& j,
const Eigen::Quaterniond& q) {
61 static void from_json(
const json& j, Eigen::Quaterniond& q) {
62 q.w() = j[
"w"].get<
double>();
63 q.x() = j[
"x"].get<
double>();
64 q.y() = j[
"y"].get<
double>();
65 q.z() = j[
"z"].get<
double>();
70 struct adl_serializer<Eigen::Isometry3d> {
71 static void to_json(json& j,
const Eigen::Isometry3d& o) {
72 Eigen::Vector3d trans = o.translation();
74 {
"translation", trans},
75 {
"rotation", Eigen::Quaterniond(o.rotation())},
79 static void from_json(
const json& j, Eigen::Isometry3d& o) {
81 o.linear() = j[
"rotation"].get<Eigen::Quaterniond>().matrix();
82 o.translation() = j[
"translation"].get<Eigen::Vector3d>();