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 
24 #include "SimpleJsonLoggerEntry.h"
25 
26 #include <IceUtil/Time.h>
27 
28 namespace armarx
29 {
31  {
32  }
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 
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
armarx::SimpleJsonLoggerEntry::AddAsArr
void AddAsArr(const std::string &key, const Eigen::Vector3f &vec)
Definition: SimpleJsonLoggerEntry.cpp:35
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::SimpleJsonLoggerEntry::ToArr
static JsonArrayPtr ToArr(const Eigen::VectorXf &vec)
Definition: SimpleJsonLoggerEntry.cpp:89
armarx::JsonArrayPtr
std::shared_ptr< JsonArray > JsonArrayPtr
Definition: JsonArray.h:32
armarx::SimpleJsonLoggerEntry::AddMatrix
void AddMatrix(const std::string &key, const Eigen::MatrixXf &mat)
Definition: SimpleJsonLoggerEntry.cpp:59
armarx::JsonValue::Create
static JsonValuePtr Create(const std::string &value)
Definition: JsonValue.cpp:72
armarx::JsonArray
Definition: JsonArray.h:34
armarx::SimpleJsonLoggerEntry::SimpleJsonLoggerEntry
SimpleJsonLoggerEntry()
Definition: SimpleJsonLoggerEntry.cpp:30
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
armarx::SimpleJsonLoggerEntry::obj
JsonObjectPtr obj
Definition: SimpleJsonLoggerEntry.h:61
armarx::SimpleJsonLoggerEntry::AddAsObj
void AddAsObj(const std::string &key, const Eigen::Vector3f &vec)
Definition: SimpleJsonLoggerEntry.cpp:47
armarx::SimpleJsonLoggerEntry::Add
void Add(const std::string &key, const std::string &value)
Definition: SimpleJsonLoggerEntry.cpp:65
SimpleJsonLoggerEntry.h
armarx::SimpleJsonLoggerEntry::MatrixToArr
static JsonArrayPtr MatrixToArr(Eigen::MatrixXf mat)
Definition: SimpleJsonLoggerEntry.cpp:169
armarx::armem::Time
armarx::core::time::DateTime Time
Definition: forward_declarations.h:13
armarx::ctrlutil::v
double v(double t, double v0, double a0, double j)
Definition: CtrlUtil.h:39
armarx::JsonObject
Definition: JsonObject.h:36
armarx::SimpleJsonLoggerEntry::ToObj
static JsonObjectPtr ToObj(Eigen::Vector3f vec)
Definition: SimpleJsonLoggerEntry.cpp:111
armarx::SimpleJsonLoggerEntry::AddTimestamp
void AddTimestamp()
Definition: SimpleJsonLoggerEntry.cpp:185
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::JsonObjectPtr
std::shared_ptr< JsonObject > JsonObjectPtr
Definition: JsonObject.h:34