116 template <
class GRAPH_T =
typename mrpt::graphs::CNetworkOfPoses2DInf>
127 using pose_t =
typename GRAPH_T::constraint_t::type_value;
129 double, constraint_t::state_length, constraint_t::state_length>;
148 const std::map<std::string, bool>& events_occurred)
override;
160 const std::string& section)
override;
198 const std::string& section)
override;
210 void loadParams(
const std::string& source_fname)
override;
226 const GRAPH_T& graph,
const size_t iter,
const size_t max_iter,
227 const double cur_sq_error);
319 std::set<mrpt::graphs::TNodeID>* nodes_set,
void initGraphVisualization()
Initialize objects relateed to the Graph Visualization.
mrpt::img::TColor optimization_distance_color
static void levMarqFeedback(const GRAPH_T &graph, const size_t iter, const size_t max_iter, const double cur_sq_error)
Feedback of the Levenberg-Marquardt graph optimization procedure.
std::string keystroke_graph_autofit
bool checkForFullOptimization()
Decide whether to issue a full graph optimization.
void updateVisuals() override
Update the relevant visual features in CDisplayWindow.
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
void getNearbyNodesOf(std::set< mrpt::graphs::TNodeID > *nodes_set, const mrpt::graphs::TNodeID &cur_nodeID, double distance)
Get a list of the nodeIDs whose position is within a certain distance to the specified nodeID...
GraphVisualizationParams()
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
mrpt::opengl::CRenderizable::Ptr initOptDistanceVisualizationInternal(const mrpt::poses::CPose2D &p_unused)
Setup the corresponding Disk/Sphere instance.
void updateGraphVisualization()
Called internally for updating the visualization scene for the graph building procedure.
bool justFullyOptimizedGraph() const override
Used by the caller to query for possible full graph optimization on the latest optimizer run...
void toggleGraphVisualization()
Toggle the graph visualization on and off.
Struct for holding the optimization-related variables in a compact form.
mrpt::system::TParametersDouble cfg
typename GRAPH_T::constraint_t::type_value pose_t
type of underlying poses (2D/3D)
bool m_just_fully_optimized_graph
Indicates whether a full graph optimization was just issued.
~OptimizationParams() override
void printParams() const override
Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact w...
std::string keystroke_optimize_graph
Keystroke to manually trigger a full graph optimization.
double optimization_distance
optimize only for the nodes found in a certain distance from the current position.
mrpt::system::TParametersDouble cfg
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form, sending it to a std::ostream.
void toggleOptDistanceVisualization()
toggle the optimization distance object on and off
OptimizationParams opt_params
Parameters relevant to the optimizatio nfo the graph.
void initOptDistanceVisualization()
Initialize the Disk/Sphere used for visualizing the optimization distance.
typename GRAPH_T::constraint_t constraint_t
Handy typedefs.
This class allows loading and storing values and vectors of different types from a configuration text...
~GraphVisualizationParams() override
std::thread m_thread_optimize
GRAPH_T::edges_map_t last_pair_nodes_to_edge
bool updateState(mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation) override
Generic method for fetching the incremental action-observations (or observation-only) measurements...
Interface for implementing node/edge registration deciders or optimizer classes.
OptimizationPolicy
Enumeration that defines the behaviors towards using or ignoring a newly added loop closure to fully ...
size_t m_min_nodes_for_optimization
Minimum number of nodes before we try optimizing the graph.
bool optimization_on_second_thread
int text_index_optimization_distance
size_t m_max_ignored_consec_lcs
Number of consecutive loop closures to ignore after m_max_used_consec_lcs have already been issued...
void optimizeGraph() override
Wrapper around _optimizeGraph which first locks the section and then calls the _optimizeGraph method...
size_t m_last_total_num_of_nodes
bool visualize_optimized_graph
bool checkForLoopClosures()
Check if a loop closure edge was added in the graph.
OptimizationPolicy m_optimization_policy
size_t m_curr_ignored_consec_lcs
Consecutive Loop Closures that have currently been ignored.
std::string keystroke_optimization_distance
Keystroke to toggle the optimization distance on/off.
std::string keystroke_graph_toggle
Interface for implementing graphSLAM optimizer classes.
void updateOptDistanceVisualization()
Update the position of the disk indicating the distance in which Levenberg-Marquardt graph optimizati...
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
mrpt::vision::TStereoCalibResults out
size_t m_max_used_consec_lcs
Number of maximum cosecutive loop closures that are allowed to be issued.
uint64_t TNodeID
A generic numeric type for unique IDs of nodes or entities.
GraphVisualizationParams viz_params
Parameters relevant to the visualization of the graph.
void getDescriptiveReport(std::string *report_str) const override
Fill the provided string with a detailed report of the decider/optimizer state.
void loadParams(const std::string &source_fname) override
Load the necessary for the decider/optimizer configuration parameters.
double offset_y_optimization_distance
~CLevMarqGSO() override=default
size_t m_curr_used_consec_lcs
Number of consecutive loop closures that are currently registered.
Levenberg-Marquardt non-linear graph slam optimization scheme.
void initializeVisuals() override
Initialize visual objects in CDisplayWindow (e.g.
void fitGraphInView()
Set the camera parameters of the CDisplayWindow3D so that the whole graph is viewed in the window...
void loadFromConfigFile(const mrpt::config::CConfigFileBase &source, const std::string §ion) override
This method load the options from a ".ini"-like file or memory-stored string list.
struct for holding the graph visualization-related variables in a compact form
double distance(const TPoint2D &p1, const TPoint2D &p2)
Gets the distance between two points in a 2D space.
void dumpToTextStream(std::ostream &out) const override
This method should clearly display all the contents of the structure in textual form, sending it to a std::ostream.
void notifyOfWindowEvents(const std::map< std::string, bool > &events_occurred) override
Get a list of the window events that happened since the last call.
void _optimizeGraph(bool is_full_update=false)
Optimize the given graph.