Program Listing for File map_saver.hpp
↰ Return to documentation for file (include/slam_toolbox/map_saver.hpp
)
/*
* map_saver
* Copyright (c) 2019, Samsung Research America
*
* THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
* COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
* COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
* AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
*
* BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO
* BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS
* CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
* CONDITIONS.
*
*/
/* Author: Steven Macenski */
#ifndef SLAM_TOOLBOX__MAP_SAVER_HPP_
#define SLAM_TOOLBOX__MAP_SAVER_HPP_
#include <string>
#include <memory>
#include <chrono>
#include "rclcpp/rclcpp.hpp"
#include "rclcpp_lifecycle/lifecycle_node.hpp"
#include "slam_toolbox/toolbox_msgs.hpp"
namespace map_saver
{
// a service to save a map with a given name as requested
class MapSaver
{
public:
template<class NodeT>
MapSaver(NodeT node, const std::string & map_name);
protected:
bool saveMapCallback(
const std::shared_ptr<rmw_request_id_t> request_header,
const std::shared_ptr<slam_toolbox::srv::SaveMap::Request> request,
std::shared_ptr<slam_toolbox::srv::SaveMap::Response> response);
private:
rclcpp::Logger logger_;
std::string namespace_str_;
rclcpp::Service<slam_toolbox::srv::SaveMap>::SharedPtr server_;
rclcpp::Subscription<nav_msgs::msg::OccupancyGrid>::SharedPtr sub_;
std::string service_name_, map_name_;
bool received_map_;
};
} // namespace map_saver
#endif // SLAM_TOOLBOX__MAP_SAVER_HPP_