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