From 15bf6e0736afdae184142a0edaaba359e98ed822 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Thu, 16 Nov 2023 10:28:13 +0100 Subject: [PATCH] Add JSON conversions for Names --- source/RobotAPI/libraries/core/CMakeLists.txt | 5 +- .../libraries/core/json_conversions.cpp | 46 +++++++++++++++++++ .../libraries/core/json_conversions.h | 41 +++-------------- 3 files changed, 56 insertions(+), 36 deletions(-) create mode 100644 source/RobotAPI/libraries/core/json_conversions.cpp diff --git a/source/RobotAPI/libraries/core/CMakeLists.txt b/source/RobotAPI/libraries/core/CMakeLists.txt index 5be7d695e..7756a2cd5 100644 --- a/source/RobotAPI/libraries/core/CMakeLists.txt +++ b/source/RobotAPI/libraries/core/CMakeLists.txt @@ -20,6 +20,8 @@ set(LIBS RobotAPIInterfaces ArmarXCoreObservers ArmarXCoreStatechart ArmarXCoreE ) set(LIB_FILES + json_conversions.cpp + PIDController.cpp Trajectory.cpp TrajectoryController.cpp @@ -62,6 +64,7 @@ set(LIB_FILES set(LIB_HEADERS forward_declarations.h + json_conversions.h PIDController.h MultiDimPIDController.h @@ -113,8 +116,6 @@ set(LIB_HEADERS #diffik/NaturalDiffIK.h #diffik/SimpleDiffIK.h - - json_conversions.h ) add_subdirectory(test) diff --git a/source/RobotAPI/libraries/core/json_conversions.cpp b/source/RobotAPI/libraries/core/json_conversions.cpp new file mode 100644 index 000000000..be883c3db --- /dev/null +++ b/source/RobotAPI/libraries/core/json_conversions.cpp @@ -0,0 +1,46 @@ +#include "json_conversions.h" + +#include <RobotAPI/libraries/core/FramedPose.h> +#include <RobotAPI/libraries/core/Names.h> + +void +armarx::to_json(nlohmann::json& j, const FramedPose& fp) +{ + j = nlohmann::json{{"agent", fp.agent}, + {"frame", fp.frame}, + {"qw", fp.orientation->qw}, + {"qx", fp.orientation->qx}, + {"qy", fp.orientation->qy}, + {"qz", fp.orientation->qz}, + {"x", fp.position->x}, + {"y", fp.position->y}, + {"z", fp.position->z}}; +} + +void +armarx::from_json(const nlohmann::json& j, FramedPose& fp) +{ + j.at("agent").get_to(fp.agent); + j.at("frame").get_to(fp.frame); + j.at("qw").get_to(fp.orientation->qw); + j.at("qx").get_to(fp.orientation->qx); + j.at("qy").get_to(fp.orientation->qy); + j.at("qz").get_to(fp.orientation->qz); + j.at("x").get_to(fp.position->x); + j.at("y").get_to(fp.position->y); + j.at("z").get_to(fp.position->z); +} + +void +armarx::to_json(simox::json::json& j, const Names& value) +{ + j["recognized"] = value.recognized; + j["spoken"] = value.spoken; +} + +void +armarx::from_json(const simox::json::json& j, Names& value) +{ + j.at("recognized").get_to(value.recognized); + j.at("spoken").get_to(value.spoken); +} diff --git a/source/RobotAPI/libraries/core/json_conversions.h b/source/RobotAPI/libraries/core/json_conversions.h index bccd85c68..0d45d0f05 100644 --- a/source/RobotAPI/libraries/core/json_conversions.h +++ b/source/RobotAPI/libraries/core/json_conversions.h @@ -20,45 +20,18 @@ * GNU General Public License */ - #pragma once - -// Simox #include <SimoxUtility/json.h> -// RobotAPI -#include <RobotAPI/libraries/core/FramedPose.h> - +#include <RobotAPI/libraries/core/forward_declarations.h> namespace armarx { - void to_json(nlohmann::json& j, const FramedPose& fp) - { - j = nlohmann::json - { - {"agent", fp.agent}, - {"frame", fp.frame}, - {"qw", fp.orientation->qw}, - {"qx", fp.orientation->qx}, - {"qy", fp.orientation->qy}, - {"qz", fp.orientation->qz}, - {"x", fp.position->x}, - {"y", fp.position->y}, - {"z", fp.position->z} - }; - } + void to_json(nlohmann::json& j, const FramedPose& fp); + void from_json(const nlohmann::json& j, FramedPose& fp); + + void to_json(simox::json::json& j, const Names& value); + void from_json(const simox::json::json& j, Names& value); - void from_json(const nlohmann::json& j, FramedPose& fp) - { - j.at("agent").get_to(fp.agent); - j.at("frame").get_to(fp.frame); - j.at("qw").get_to(fp.orientation->qw); - j.at("qx").get_to(fp.orientation->qx); - j.at("qy").get_to(fp.orientation->qy); - j.at("qz").get_to(fp.orientation->qz); - j.at("x").get_to(fp.position->x); - j.at("y").get_to(fp.position->y); - j.at("z").get_to(fp.position->z); - } -} +} // namespace armarx -- GitLab