Skip to content
Snippets Groups Projects
Commit 6d2e21df authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Make pose display in ArMem viewer nicer

parent 44106064
Loading
......@@ -3,6 +3,7 @@
#include <iomanip> // std::setprecision
#include <SimoxUtility/algorithm/string.h>
#include <SimoxUtility/math/pose/pose.h>
#include <ArmarXCore/core/logging/Logging.h>
......@@ -159,12 +160,33 @@ namespace armarx::aron
bool TypedDataDisplayVisitor::visit(PoseTypeNavigator&, NDArrayDataNavigator& data)
{
const Eigen::IOFormat eigenIof(Eigen::StreamPrecision, 0, " ", "\n", "( ", " )", "", "");
const std::string cdot = "\u00B7"; // center dot: https://unicode-table.com/de/00B7/
auto getLines = [&](auto&& mat)
{
std::stringstream ss;
setStreamPrecision(ss);
ss << mat.format(eigenIof);
std::vector<std::string> lines = simox::alg::split(ss.str(), "\n");
ARMARX_CHECK_EQUAL(lines.size(), 3);
return lines;
};
const Eigen::Matrix4f pose = aron::converter::AronEigenConverter::ConvertToMatrix4f(data);
setStreamPrecision();
value << pose.format(eigenIof);
const std::vector<std::string> r = getLines(simox::math::orientation(pose));
const std::vector<std::string> t = getLines(simox::math::position(pose));
std::vector<std::string> lines;
lines.push_back(r.at(0) + " \t" + t.at(0));
lines.push_back(r.at(1) + " " + cdot + " x + \t" + t.at(1));
lines.push_back(r.at(2) + " \t" + t.at(2));
value << simox::alg::join(lines, "\n");
return false;
}
bool TypedDataDisplayVisitor::visit(PositionTypeNavigator&, NDArrayDataNavigator& data)
{
const Eigen::Vector3f pos = aron::converter::AronEigenConverter::ConvertToVector3f(data);
......@@ -188,7 +210,12 @@ namespace armarx::aron
void TypedDataDisplayVisitor::setStreamPrecision()
{
value << std::setprecision(2) << std::fixed;
setStreamPrecision(value);
}
void TypedDataDisplayVisitor::setStreamPrecision(std::ostream& os)
{
os << std::setprecision(2) << std::fixed;
}
}
......@@ -65,6 +65,7 @@ namespace armarx::aron
void processEigenQuaternion(NDArrayDataNavigator& data);
void setStreamPrecision();
void setStreamPrecision(std::ostream& os);
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment