loop_closure_assistant.hpp
Go to the documentation of this file.
1 /*
2  * loop_closure_assistant
3  * Copyright (c) 2019, Samsung Research America
4  *
5  * THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
6  * COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
7  * COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
8  * AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
9  *
10  * BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO
11  * BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS
12  * CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
13  * CONDITIONS.
14  *
15  */
16 
17 /* Author: Steven Macenski */
18 
19 #ifndef SLAM_TOOLBOX_LOOP_CLOSURE_ASSISTANT_H_
20 #define SLAM_TOOLBOX_LOOP_CLOSURE_ASSISTANT_H_
21 
22 #include <functional>
23 #include <boost/thread.hpp>
24 #include <map>
25 
26 #include "ros/ros.h"
30 #include "tf2/utils.h"
31 
32 #include "karto_sdk/Mapper.h"
36 
38 {
39 
40 using namespace ::toolbox_types;
41 
43 {
44 public:
45  LoopClosureAssistant(ros::NodeHandle& node, karto::Mapper* mapper, laser_utils::ScanHolder* scan_holder, PausedState& state, ProcessType& processor_type);
46 
47  void clearMovedNodes();
48  void processInteractiveFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr& feedback);
49  void publishGraph();
50 
51 private:
52  bool manualLoopClosureCallback(slam_toolbox_msgs::LoopClosure::Request& req, slam_toolbox_msgs::LoopClosure::Response& resp);
53  bool clearChangesCallback(slam_toolbox_msgs::Clear::Request& req, slam_toolbox_msgs::Clear::Response& resp);
54  bool interactiveModeCallback(slam_toolbox_msgs::ToggleInteractive::Request &req, slam_toolbox_msgs::ToggleInteractive::Response &resp);
55  void moveNode(const int& id, const Eigen::Vector3d& pose);
56  void addMovedNodes(const int& id, Eigen::Vector3d vec);
57 
58  std::unique_ptr<tf2_ros::TransformBroadcaster> tfB_;
62  boost::mutex moved_nodes_mutex_;
63  std::map<int, Eigen::Vector3d> moved_nodes_;
66  std::unique_ptr<interactive_markers::InteractiveMarkerServer> interactive_server_;
67  boost::mutex interactive_mutex_;
70  std::string map_frame_;
71  PausedState& state_;
73 };
74 
75 } // end namespace
76 
77 #endif //SLAM_TOOLBOX_LOOP_CLOSURE_ASSISTANT_H_
void moveNode(const int &id, const Eigen::Vector3d &pose)
std::unique_ptr< tf2_ros::TransformBroadcaster > tfB_
LoopClosureAssistant(ros::NodeHandle &node, karto::Mapper *mapper, laser_utils::ScanHolder *scan_holder, PausedState &state, ProcessType &processor_type)
void addMovedNodes(const int &id, Eigen::Vector3d vec)
bool interactiveModeCallback(slam_toolbox_msgs::ToggleInteractive::Request &req, slam_toolbox_msgs::ToggleInteractive::Response &resp)
std::unique_ptr< interactive_markers::InteractiveMarkerServer > interactive_server_
void processInteractiveFeedback(const visualization_msgs::InteractiveMarkerFeedbackConstPtr &feedback)
bool manualLoopClosureCallback(slam_toolbox_msgs::LoopClosure::Request &req, slam_toolbox_msgs::LoopClosure::Response &resp)
bool clearChangesCallback(slam_toolbox_msgs::Clear::Request &req, slam_toolbox_msgs::Clear::Response &resp)


slam_toolbox
Author(s): Steve Macenski
autogenerated on Mon Feb 28 2022 23:46:49