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
No related branches found
No related tags found
1 merge request!188ArMem Updates
......@@ -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