lanelet2_map_server v1.2.3
Loading...
Searching...
No Matches
lanelet2_map_interface.hpp
Go to the documentation of this file.
1// Copyright Institute for Automotive Engineering (ika), RWTH Aachen University
2// SPDX-License-Identifier: Apache-2.0
3
4#include "rclcpp/rclcpp.hpp"
5
6#include <lanelet2_core/LaneletMap.h>
7#include <lanelet2_io/Io.h>
8#include <lanelet2_io/Projection.h>
9#include <lanelet2_projection/UTM.h>
10
11#include <string.h>
12#include <chrono>
13#include <fstream>
14#include <iostream>
15#include <limits>
16
18 public:
25 Lanelet2MapInterface(rclcpp::Node& parent_node, std::string map_server_name);
26
32 lanelet::LaneletMapConstPtr getMapPtr();
33
39 lanelet::LaneletMapPtr getNonConstMapPtr();
40
46 std::shared_ptr<lanelet::Projector> getProjectorPtr();
47 bool map_loaded_ = false;
48 bool update_pending_ = false; // Flag indicating if the client node should update map
49 std::string map_frame_id_;
50
51 private:
52 rclcpp::Node* parent_node_;
53 std::shared_ptr<rclcpp::AsyncParametersClient> parameter_client_;
54 std::shared_ptr<rclcpp::ParameterEventHandler> parameter_sub_;
55 std::shared_ptr<rclcpp::ParameterCallbackHandle> frame_id_callback_handle_, contents_callback_handle_,
57 rclcpp::TimerBase::SharedPtr startup_timer_;
58
59 std::string map_filepath_;
60
61 std::vector<rclcpp::Parameter> map_params_;
62 std::string map_contents_;
63 double origin_lat_ = std::numeric_limits<double>::quiet_NaN();
64 double origin_lon_ = std::numeric_limits<double>::quiet_NaN();
65
66 lanelet::LaneletMapPtr mapPtr_;
67 std::shared_ptr<lanelet::Projector> utmProjectorPtr_;
68
69 std::string map_server_name_;
70 bool params_declared_ = false;
71
77 void updateMapParam(rclcpp::Parameter param);
78
84 bool loadMap();
85
91 bool validateParams();
92
96 void findMapServer();
97
103 void updateParamsCallback(const rclcpp::Parameter& p);
104
110 void serviceParamsCallback(std::shared_future<std::vector<rclcpp::Parameter>> future);
111};
std::shared_ptr< lanelet::Projector > getProjectorPtr()
Returns the projector used to interpret the loaded map coordinates.
void serviceParamsCallback(std::shared_future< std::vector< rclcpp::Parameter > > future)
Handles the asynchronous response of an initial parameter fetch.
bool validateParams()
Validates that the required map parameters are available and usable.
Lanelet2MapInterface(rclcpp::Node &parent_node, std::string map_server_name)
Creates a client-side interface for retrieving Lanelet2 map parameters from a map server node.
lanelet::LaneletMapPtr getNonConstMapPtr()
Returns the currently loaded mutable Lanelet2 map.
bool loadMap()
Loads and parses the map from the currently cached parameters.
std::shared_ptr< rclcpp::AsyncParametersClient > parameter_client_
void updateParamsCallback(const rclcpp::Parameter &p)
Reacts to a single parameter event from the map server.
lanelet::LaneletMapPtr mapPtr_
std::shared_ptr< rclcpp::ParameterCallbackHandle > origin_lon_callback_handle_
void findMapServer()
Checks for the configured map server and, once available, requests initial parameters and installs su...
std::shared_ptr< rclcpp::ParameterCallbackHandle > origin_lat_callback_handle_
std::shared_ptr< lanelet::Projector > utmProjectorPtr_
std::vector< rclcpp::Parameter > map_params_
void updateMapParam(rclcpp::Parameter param)
Updates one cached map parameter from a value received from the map server.
std::shared_ptr< rclcpp::ParameterCallbackHandle > contents_callback_handle_
std::shared_ptr< rclcpp::ParameterCallbackHandle > frame_id_callback_handle_
std::shared_ptr< rclcpp::ParameterEventHandler > parameter_sub_
rclcpp::TimerBase::SharedPtr startup_timer_
lanelet::LaneletMapConstPtr getMapPtr()
Returns the currently loaded immutable Lanelet2 map.