#include <lanelet2_map_interface.hpp>
|
| | 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::LaneletMapConstPtr | getMapPtr () |
| | Returns the currently loaded immutable Lanelet2 map.
|
| |
| lanelet::LaneletMapPtr | getNonConstMapPtr () |
| | Returns the currently loaded mutable Lanelet2 map.
|
| |
| std::shared_ptr< lanelet::Projector > | getProjectorPtr () |
| | Returns the projector used to interpret the loaded map coordinates.
|
| |
|
| void | updateMapParam (rclcpp::Parameter param) |
| | Updates one cached map parameter from a value received from the map server.
|
| |
| bool | loadMap () |
| | Loads and parses the map from the currently cached parameters.
|
| |
| bool | validateParams () |
| | Validates that the required map parameters are available and usable.
|
| |
| void | findMapServer () |
| | Checks for the configured map server and, once available, requests initial parameters and installs subscriptions.
|
| |
| void | updateParamsCallback (const rclcpp::Parameter &p) |
| | Reacts to a single parameter event from the map server.
|
| |
| void | serviceParamsCallback (std::shared_future< std::vector< rclcpp::Parameter > > future) |
| | Handles the asynchronous response of an initial parameter fetch.
|
| |
Definition at line 17 of file lanelet2_map_interface.hpp.
◆ Lanelet2MapInterface()
| Lanelet2MapInterface::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.
- Parameters
-
| parent_node | node that owns the parameter client and timers |
| map_server_name | fully qualified name of the map server node |
Definition at line 41 of file lanelet2_map_interface.cpp.
43 map_filepath_(std::string(
".lanelet2_map_interface/") + std::string(parent_node.get_fully_qualified_name()) +
"/map.osm"),
45 rcl_interfaces::msg::ParameterDescriptor param_desc;
46 param_desc.description = "Local filepath to where map from map server is written to (relative to $ROS_HOME)";
47 try {
49 } catch (const rclcpp::exceptions::ParameterAlreadyDeclaredException& ex) {
50 RCLCPP_WARN(
parent_node_->get_logger(),
"Parameter 'map_filepath' already declared: %s", ex.what());
51 }
55
56
59
60
63}
rclcpp::Node * parent_node_
std::shared_ptr< rclcpp::AsyncParametersClient > parameter_client_
void findMapServer()
Checks for the configured map server and, once available, requests initial parameters and installs su...
std::string map_filepath_
std::shared_ptr< rclcpp::ParameterEventHandler > parameter_sub_
std::string map_server_name_
rclcpp::TimerBase::SharedPtr startup_timer_
std::filesystem::path resolveFilepath(const std::string &path_string)
Resolves a relative string filepath.
◆ findMapServer()
| void Lanelet2MapInterface::findMapServer |
( |
| ) |
|
|
private |
Checks for the configured map server and, once available, requests initial parameters and installs subscriptions.
Definition at line 65 of file lanelet2_map_interface.cpp.
65 {
68 return;
69 }
70
72 auto parameters_future =
73 parameter_client_->get_parameters({
"map_frame_id",
"map_contents",
"origin_lat",
"origin_lon"},
76
77
88 }
89}
void serviceParamsCallback(std::shared_future< std::vector< rclcpp::Parameter > > future)
Handles the asynchronous response of an initial parameter fetch.
void updateParamsCallback(const rclcpp::Parameter &p)
Reacts to a single parameter event from the map server.
std::shared_ptr< rclcpp::ParameterCallbackHandle > origin_lon_callback_handle_
std::shared_ptr< rclcpp::ParameterCallbackHandle > origin_lat_callback_handle_
std::shared_ptr< rclcpp::ParameterCallbackHandle > contents_callback_handle_
std::shared_ptr< rclcpp::ParameterCallbackHandle > frame_id_callback_handle_
◆ getMapPtr()
| lanelet::LaneletMapConstPtr Lanelet2MapInterface::getMapPtr |
( |
| ) |
|
Returns the currently loaded immutable Lanelet2 map.
- Returns
- shared pointer to the loaded map, or
nullptr if no map is available
Definition at line 136 of file lanelet2_map_interface.cpp.
lanelet::LaneletMapPtr getNonConstMapPtr()
Returns the currently loaded mutable Lanelet2 map.
◆ getNonConstMapPtr()
| lanelet::LaneletMapPtr Lanelet2MapInterface::getNonConstMapPtr |
( |
| ) |
|
Returns the currently loaded mutable Lanelet2 map.
- Returns
- shared pointer to the loaded map, or
nullptr if no map is available
Definition at line 129 of file lanelet2_map_interface.cpp.
129 {
131 return nullptr;
132 }
134}
lanelet::LaneletMapPtr mapPtr_
◆ getProjectorPtr()
| std::shared_ptr< lanelet::Projector > Lanelet2MapInterface::getProjectorPtr |
( |
| ) |
|
Returns the projector used to interpret the loaded map coordinates.
- Returns
- projector configured from the map origin parameters
Definition at line 138 of file lanelet2_map_interface.cpp.
138 {
140 return nullptr;
141 }
143}
std::shared_ptr< lanelet::Projector > utmProjectorPtr_
◆ loadMap()
| bool Lanelet2MapInterface::loadMap |
( |
| ) |
|
|
private |
Loads and parses the map from the currently cached parameters.
- Returns
true if the map could be created successfully
Definition at line 160 of file lanelet2_map_interface.cpp.
160 {
161
163 return false;
164 }
165
166
168 if (!std::filesystem::exists(map_directory)) {
169 if (!std::filesystem::create_directories(map_directory)) {
170 RCLCPP_ERROR_STREAM(
parent_node_->get_logger(),
"Failed to create directory '" << map_directory <<
"'");
171 return false;
172 }
173 }
174
175
176 std::ofstream map_file;
179 map_file.close();
180
181 try {
182
188 } catch (const std::exception& exc) {
190 return false;
191 }
192
193 return true;
194}
bool validateParams()
Validates that the required map parameters are available and usable.
std::string map_contents_
◆ serviceParamsCallback()
| void Lanelet2MapInterface::serviceParamsCallback |
( |
std::shared_future< std::vector< rclcpp::Parameter > > | future | ) |
|
|
private |
Handles the asynchronous response of an initial parameter fetch.
- Parameters
-
| future | future containing the requested map server parameters |
Definition at line 97 of file lanelet2_map_interface.cpp.
97 {
98 auto result = future.get();
99 for (auto& parameter : result) {
101 }
103}
bool loadMap()
Loads and parses the map from the currently cached parameters.
void updateMapParam(rclcpp::Parameter param)
Updates one cached map parameter from a value received from the map server.
◆ updateMapParam()
| void Lanelet2MapInterface::updateMapParam |
( |
rclcpp::Parameter | param | ) |
|
|
private |
Updates one cached map parameter from a value received from the map server.
- Parameters
-
| param | updated parameter value from the map server |
Definition at line 145 of file lanelet2_map_interface.cpp.
145 {
146 if (param.get_name() == "map_frame_id") {
148 }
149 if (param.get_name() == "map_contents") {
151 }
152 if (param.get_name() == "origin_lat") {
154 }
155 if (param.get_name() == "origin_lon") {
157 }
158}
std::string map_frame_id_
◆ updateParamsCallback()
| void Lanelet2MapInterface::updateParamsCallback |
( |
const rclcpp::Parameter & | p | ) |
|
|
private |
Reacts to a single parameter event from the map server.
- Parameters
-
| p | parameter that changed on the server |
Definition at line 91 of file lanelet2_map_interface.cpp.
91 {
92 RCLCPP_INFO_STREAM(
parent_node_->get_logger(),
"Parameter '" << p.get_name() <<
"' changed, reloading map");
95}
◆ validateParams()
| bool Lanelet2MapInterface::validateParams |
( |
| ) |
|
|
private |
Validates that the required map parameters are available and usable.
- Returns
true if the cached parameters are sufficient for loading a map
Definition at line 105 of file lanelet2_map_interface.cpp.
105 {
107 RCLCPP_ERROR_STREAM(
parent_node_->get_logger(),
"Parameter 'map_frame_id_' is empty");
108 return false;
109 }
111 RCLCPP_ERROR_STREAM(
parent_node_->get_logger(),
"Parameter 'map_filepath_' is empty");
112 return false;
113 }
115 RCLCPP_ERROR_STREAM(
parent_node_->get_logger(),
"Parameter 'map_contents_' is empty");
116 return false;
117 }
118 if (
origin_lat_ == std::numeric_limits<double>::quiet_NaN()) {
119 RCLCPP_WARN_STREAM(
parent_node_->get_logger(),
"Parameter 'origin_lat_' is not set");
120 return false;
121 }
122 if (
origin_lon_ == std::numeric_limits<double>::quiet_NaN()) {
123 RCLCPP_WARN_STREAM(
parent_node_->get_logger(),
"Parameter 'origin_lon_' is not set");
124 return false;
125 }
126 return true;
127}
◆ contents_callback_handle_
| std::shared_ptr<rclcpp::ParameterCallbackHandle> Lanelet2MapInterface::contents_callback_handle_ |
|
private |
◆ frame_id_callback_handle_
| std::shared_ptr<rclcpp::ParameterCallbackHandle> Lanelet2MapInterface::frame_id_callback_handle_ |
|
private |
◆ map_contents_
| std::string Lanelet2MapInterface::map_contents_ |
|
private |
◆ map_filepath_
| std::string Lanelet2MapInterface::map_filepath_ |
|
private |
◆ map_frame_id_
| std::string Lanelet2MapInterface::map_frame_id_ |
◆ map_loaded_
| bool Lanelet2MapInterface::map_loaded_ = false |
◆ map_params_
| std::vector<rclcpp::Parameter> Lanelet2MapInterface::map_params_ |
|
private |
◆ map_server_name_
| std::string Lanelet2MapInterface::map_server_name_ |
|
private |
◆ mapPtr_
| lanelet::LaneletMapPtr Lanelet2MapInterface::mapPtr_ |
|
private |
◆ origin_lat_
| double Lanelet2MapInterface::origin_lat_ = std::numeric_limits<double>::quiet_NaN() |
|
private |
◆ origin_lat_callback_handle_
| std::shared_ptr<rclcpp::ParameterCallbackHandle> Lanelet2MapInterface::origin_lat_callback_handle_ |
|
private |
◆ origin_lon_
| double Lanelet2MapInterface::origin_lon_ = std::numeric_limits<double>::quiet_NaN() |
|
private |
◆ origin_lon_callback_handle_
| std::shared_ptr<rclcpp::ParameterCallbackHandle> Lanelet2MapInterface::origin_lon_callback_handle_ |
|
private |
◆ parameter_client_
| std::shared_ptr<rclcpp::AsyncParametersClient> Lanelet2MapInterface::parameter_client_ |
|
private |
◆ parameter_sub_
| std::shared_ptr<rclcpp::ParameterEventHandler> Lanelet2MapInterface::parameter_sub_ |
|
private |
◆ params_declared_
| bool Lanelet2MapInterface::params_declared_ = false |
|
private |
◆ parent_node_
| rclcpp::Node* Lanelet2MapInterface::parent_node_ |
|
private |
◆ startup_timer_
| rclcpp::TimerBase::SharedPtr Lanelet2MapInterface::startup_timer_ |
|
private |
◆ update_pending_
| bool Lanelet2MapInterface::update_pending_ = false |
◆ utmProjectorPtr_
| std::shared_ptr<lanelet::Projector> Lanelet2MapInterface::utmProjectorPtr_ |
|
private |
The documentation for this class was generated from the following files: