SimpleJsonLoggerEntry.cpp
Go to the documentation of this file.
1/*
2 * This file is part of ArmarX.
3 *
4 * Copyright (C) 2012-2016, High Performance Humanoid Technologies (H2T),
5 * Karlsruhe Institute of Technology (KIT), all rights reserved.
6 *
7 * ArmarX is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 * ArmarX is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 * @author Simon Ottenhaus (simon dot ottenhaus at kit dot edu)
20 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
21 * GNU General Public License
22 */
23
25
26#include <IceUtil/Time.h>
27
28namespace armarx
29{
33
34 void
35 SimpleJsonLoggerEntry::AddAsArr(const std::string& key, const Eigen::Vector3f& vec)
36 {
37 obj->add(key, ToArr((Eigen::VectorXf)vec));
38 }
39
40 void
41 SimpleJsonLoggerEntry::AddAsArr(const std::string& key, const Eigen::VectorXf& vec)
42 {
43 obj->add(key, ToArr(vec));
44 }
45
46 void
47 SimpleJsonLoggerEntry::AddAsObj(const std::string& key, const Eigen::Vector3f& vec)
48 {
49 obj->add(key, ToObj(vec));
50 }
51
52 void
53 SimpleJsonLoggerEntry::AddAsArr(const std::string& key, const Eigen::Matrix4f& mat)
54 {
55 obj->add(key, ToArr(mat));
56 }
57
58 void
59 SimpleJsonLoggerEntry::AddMatrix(const std::string& key, const Eigen::MatrixXf& mat)
60 {
61 obj->add(key, MatrixToArr(mat));
62 }
63
64 void
65 SimpleJsonLoggerEntry::Add(const std::string& key, const std::string& value)
66 {
67 obj->add(key, JsonValue::Create(value));
68 }
69
70 void
71 SimpleJsonLoggerEntry::Add(const std::string& key, float value)
72 {
73 obj->add(key, JsonValue::Create(value));
74 }
75
76 void
77 SimpleJsonLoggerEntry::Add(const std::string& key, const std::vector<float>& value)
78 {
79 obj->add(key, ToArr(value));
80 }
81
82 void
83 SimpleJsonLoggerEntry::Add(const std::string& key, const std::map<std::string, float>& value)
84 {
85 obj->add(key, ToObj(value));
86 }
87
89 SimpleJsonLoggerEntry::ToArr(const Eigen::VectorXf& vec)
90 {
91 JsonArrayPtr arr(new JsonArray);
92 for (int i = 0; i < vec.rows(); i++)
93 {
94 arr->add(JsonValue::Create(vec(i)));
95 }
96 return arr;
97 }
98
100 SimpleJsonLoggerEntry::ToArr(const std::vector<float>& vec)
101 {
102 JsonArrayPtr arr(new JsonArray);
103 for (float v : vec)
104 {
105 arr->add(JsonValue::Create(v));
106 }
107 return arr;
108 }
109
111 SimpleJsonLoggerEntry::ToObj(Eigen::Vector3f vec)
112 {
114 obj->add("x", JsonValue::Create(vec(0)));
115 obj->add("y", JsonValue::Create(vec(1)));
116 obj->add("z", JsonValue::Create(vec(2)));
117 return obj;
118 }
119
121 SimpleJsonLoggerEntry::ToObj(const std::map<std::string, float>& value)
122 {
124 for (const auto& pair : value)
125 {
126 obj->add(pair.first, JsonValue::Create(pair.second));
127 }
128 return obj;
129 }
130
132 SimpleJsonLoggerEntry::ToArr(Eigen::Matrix4f mat)
133 {
134 JsonArrayPtr arr(new JsonArray);
135 JsonArrayPtr row1(new JsonArray);
136 JsonArrayPtr row2(new JsonArray);
137 JsonArrayPtr row3(new JsonArray);
138 JsonArrayPtr row4(new JsonArray);
139
140 row1->add(JsonValue::Create(mat(0, 0)));
141 row1->add(JsonValue::Create(mat(0, 1)));
142 row1->add(JsonValue::Create(mat(0, 2)));
143 row1->add(JsonValue::Create(mat(0, 3)));
144
145 row2->add(JsonValue::Create(mat(1, 0)));
146 row2->add(JsonValue::Create(mat(1, 1)));
147 row2->add(JsonValue::Create(mat(1, 2)));
148 row2->add(JsonValue::Create(mat(1, 3)));
149
150 row3->add(JsonValue::Create(mat(2, 0)));
151 row3->add(JsonValue::Create(mat(2, 1)));
152 row3->add(JsonValue::Create(mat(2, 2)));
153 row3->add(JsonValue::Create(mat(2, 3)));
154
155 row4->add(JsonValue::Create(mat(3, 0)));
156 row4->add(JsonValue::Create(mat(3, 1)));
157 row4->add(JsonValue::Create(mat(3, 2)));
158 row4->add(JsonValue::Create(mat(3, 3)));
159
160 arr->add(row1);
161 arr->add(row2);
162 arr->add(row3);
163 arr->add(row4);
164
165 return arr;
166 }
167
170 {
171 JsonArrayPtr arr(new JsonArray);
172 for (int i = 0; i < mat.rows(); i++)
173 {
174 JsonArrayPtr row(new JsonArray);
175 for (int j = 0; j < mat.cols(); j++)
176 {
177 row->add(JsonValue::Create(mat(i, j)));
178 }
179 arr->add(row);
180 }
181 return arr;
182 }
183
184 void
186 {
187 IceUtil::Time now = IceUtil::Time::now();
188 obj->add("timestamp", JsonValue::Create(now.toDateTime()));
189 }
190} // namespace armarx
static JsonValuePtr Create(const std::string &value)
Definition JsonValue.cpp:72
void AddAsObj(const std::string &key, const Eigen::Vector3f &vec)
static JsonArrayPtr MatrixToArr(Eigen::MatrixXf mat)
static JsonArrayPtr ToArr(const Eigen::VectorXf &vec)
void AddMatrix(const std::string &key, const Eigen::MatrixXf &mat)
void Add(const std::string &key, const std::string &value)
static JsonObjectPtr ToObj(Eigen::Vector3f vec)
void AddAsArr(const std::string &key, const Eigen::Vector3f &vec)
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< JsonObject > JsonObjectPtr
Definition JsonObject.h:34
std::shared_ptr< JsonArray > JsonArrayPtr
Definition JsonArray.h:32