TypedDataDisplayVisitor.cpp
Go to the documentation of this file.
2
3#include <iomanip> // std::setprecision
4
5#include <SimoxUtility/algorithm/string.h>
6#include <SimoxUtility/math/pose/pose.h>
7
9
13
14#include "DataDisplayVisitor.h"
15
16namespace armarx::aron
17{
18
19 std::string
26
30
31 void
36
37 void
42
43 void
48
49 void
54
55 void
60
61 void
67
68 void
74
75 void
80
81 void
86
87 void
92
93 void
96 {
99
100 if (enumType == nullptr or enumData == nullptr)
101 {
102 ARMARX_WARNING << "Enum Type or Data is NULL";
103 return;
104 }
105
106 std::string name = enumType->getValueName(enumData->getValue());
107 value << name;
108 }
109
110 /*void TypedDataDisplayVisitor::visitDateTime(const data::VariantPtr& data, const type::VariantPtr& type)
111 {
112 auto l = data::Long::DynamicCastAndCheck(data);
113 armem::Time time { armem::Duration::MicroSeconds(l->getValue()) };
114 value << armem::toDateTimeMilliSeconds(time);
115 }*/
116
117
118 template <typename ScalarT>
119 void
120 TypedDataDisplayVisitor::processMatrix(const type::Matrix& type, const data::NDArray& data)
121 {
122 Eigen::Map<Eigen::Matrix<ScalarT, Eigen::Dynamic, Eigen::Dynamic>> m(
123 reinterpret_cast<ScalarT*>(data.getData()),
124 data.getShape().at(0),
125 data.getShape().at(1));
126 value << m.format(eigenIof);
127 }
128
129 void
130 TypedDataDisplayVisitor::processQuaternion(const data::NDArray& data)
131 {
132 const Eigen::Quaternionf quat =
135 value << quat.w() << coeffSep << "|" << coeffSep << quat.x() << coeffSep << quat.y()
136 << coeffSep << quat.z();
137 }
138
139 void
140 TypedDataDisplayVisitor::processPose(const type::Matrix&, const data::NDArray& d)
141 {
142 const Eigen::IOFormat eigenIof(Eigen::StreamPrecision, 0, " ", "\n", "( ", " )", "", "");
143 const std::string cdot = "\u00B7"; // center dot: https://unicode-table.com/de/00B7/
144
145 auto getLines = [&](auto&& mat)
146 {
147 std::stringstream ss;
149 ss << mat.format(eigenIof);
150 std::vector<std::string> lines = simox::alg::split(ss.str(), "\n");
151 ARMARX_CHECK_EQUAL(lines.size(), 3);
152 return lines;
153 };
154
155 const Eigen::Matrix4f pose =
157 const std::vector<std::string> r = getLines(simox::math::orientation(pose));
158 const std::vector<std::string> t = getLines(simox::math::position(pose));
159
160 std::vector<std::string> lines;
161 lines.push_back(r.at(0) + " \t" + t.at(0));
162 lines.push_back(r.at(1) + " " + cdot + " x + \t" + t.at(1));
163 lines.push_back(r.at(2) + " \t" + t.at(2));
164
165 value << simox::alg::join(lines, "\n");
166 }
167
168 void
169 TypedDataDisplayVisitor::processPosition(const type::Matrix&, const data::NDArray& d)
170 {
173 value << pos.format(eigenIof);
174 }
175
176 void
181
182 void
188
189 void
191 {
192 // aron::typenavigator::ImagePixelType pixelType = ImageNavigator::pixelTypeFromName(data.getType());
193 //value << DataDisplayVisitor::getValue(data) << " pixel type: " << data.getType()";
195 }
196
197 void
203
204} // namespace armarx::aron
static std::string getValue(const data::VariantPtr &n)
void visitDouble(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitLong(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitList(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitDict(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitIntEnum(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitTuple(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitObject(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitInt(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitPointCloud(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitQuaternion(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitString(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitMatrix(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitFloat(const data::VariantPtr &data, const type::VariantPtr &type) override
static std::string getValue(const type::VariantPtr &type, const data::VariantPtr &data)
void visitImage(const data::VariantPtr &data, const type::VariantPtr &type) override
void visitBool(const data::VariantPtr &data, const type::VariantPtr &type) override
static Eigen::Matrix4f ConvertToMatrix4f(const data::NDArrayPtr &)
static Eigen::Vector3f ConvertToVector3f(const data::NDArrayPtr &)
static Eigen::Quaternion< float > ConvertToQuaternionf(const data::NDArrayPtr &)
The Matrix class.
Definition Matrix.h:40
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
Definition Logging.h:193
Quaternion< float, 0 > Quaternionf
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< Variant > VariantPtr
std::shared_ptr< Int > IntPtr
void visit(VisitorImplementation &v, typename VisitorImplementation::Input &o)
Definition Visitor.h:136
A convenience header to include all aron files (full include, not forward declared)
std::shared_ptr< Variant > VariantPtr
std::shared_ptr< IntEnum > IntEnumPtr
Definition IntEnum.h:36