Program Listing for File SLAMOptionsYamlExtensions.hpp
↰ Return to documentation for file (include/lvr2/config/SLAMOptionsYamlExtensions.hpp)
#ifndef LVR2_SLAM_OPTIONS_YAML_EXTENSIONS
#define LVR2_SLAM_OPTIONS_YAML_EXTENSIONS
#include <yaml-cpp/yaml.h>
#include "lvr2/registration/SLAMOptions.hpp"
namespace YAML
{
template<>
struct convert<lvr2::SLAMOptions>
{
static Node encode(const lvr2::SLAMOptions& options)
{
Node node;
// ==================== General Options ======================================================
node["trustPose"] = options.trustPose;
node["metascan"] = options.metascan;
node["createFrames"] = options.createFrames;
node["verbose"] = options.verbose;
node["useHDF"] = options.useHDF;
// ==================== Reduction Options ====================================================
node["reduction"] = options.reduction;
node["minDistance"] = options.minDistance;
node["maxDistance"] = options.maxDistance;
// ==================== ICP Options ==========================================================
node["icpIterations"] = options.icpIterations;
node["icpMaxDistance"] = options.icpMaxDistance;
node["maxLeafSize"] = options.maxLeafSize;
node["epsilon"] = options.epsilon;
// ==================== SLAM Options =========================================================
node["doLoopClosing"] = options.doLoopClosing;
node["doGraphSLAM"] = options.doGraphSLAM;
node["closeLoopDistance"] = options.closeLoopDistance;
node["closeLoopPairs"] = options.closeLoopPairs;
node["loopSize"] = options.loopSize;
node["slamIterations"] = options.slamIterations;
node["slamMaxDistance"] = options.slamMaxDistance;
node["slamEpsilon"] = options.slamEpsilon;
node["diffPosition"] = options.diffPosition;
node["diffAngle"] = options.diffAngle;
node["useScanOrder"] = options.useScanOrder;
node["rotate_angle"] = options.rotate_angle;
return node;
}
static bool decode(const Node& node, lvr2::SLAMOptions& options)
{
if (!node.IsMap())
{
return false;
}
// ==================== General Options ======================================================
if (node["trustPose"])
{
options.trustPose = node["trustPose"].as<bool>();
}
if (node["metascan"])
{
options.metascan = node["metascan"].as<bool>();
}
if (node["createFrames"])
{
options.createFrames = node["createFrames"].as<bool>();
}
if (node["verbose"])
{
options.verbose = node["verbose"].as<bool>();
}
if (node["useHDF"])
{
options.useHDF = node["useHDF"].as<bool>();
}
// ==================== Reduction Options ====================================================
if (node["reduction"])
{
options.reduction = node["reduction"].as<double>();
}
if (node["minDistance"])
{
options.minDistance = node["minDistance"].as<double>();
}
if (node["maxDistance"])
{
options.maxDistance = node["maxDistance"].as<double>();
}
// ==================== ICP Options ==========================================================
if (node["icpIterations"])
{
options.icpIterations = node["icpIterations"].as<int>();
}
if (node["icpMaxDistance"])
{
options.icpMaxDistance = node["icpMaxDistance"].as<double>();
}
if (node["maxLeafSize"])
{
options.maxLeafSize = node["maxLeafSize"].as<int>();
}
if (node["epsilon"])
{
options.epsilon = node["epsilon"].as<double>();
}
// ==================== SLAM Options =========================================================
if (node["doLoopClosing"])
{
options.doLoopClosing = node["doLoopClosing"].as<bool>();
}
if (node["doGraphSLAM"])
{
options.doGraphSLAM = node["doGraphSLAM"].as<bool>();
}
if (node["closeLoopDistance"])
{
options.closeLoopDistance = node["closeLoopDistance"].as<double>();
}
if (node["closeLoopPairs"])
{
options.closeLoopPairs = node["closeLoopPairs"].as<int>();
}
if (node["loopSize"])
{
options.loopSize = node["loopSize"].as<int>();
}
if (node["slamIterations"])
{
options.slamIterations = node["slamIterations"].as<int>();
}
if (node["slamMaxDistance"])
{
options.slamMaxDistance = node["slamMaxDistance"].as<double>();
}
if (node["slamEpsilon"])
{
options.slamEpsilon = node["slamEpsilon"].as<double>();
}
if (node["diffPosition"])
{
options.diffPosition = node["diffPosition"].as<double>();
}
if (node["diffAngle"])
{
options.diffAngle = node["diffAngle"].as<double>();
}
if (node["useScanOrder"])
{
options.useScanOrder = node["useScanOrder"].as<bool>();
}
if (node["rotate_angle"])
{
options.rotate_angle = node["rotate_angle"].as<double>();
}
return true;
}
};
} // namespace YAML
#endif