@@ -82,7 +82,35 @@ class MapPublisher : public rclcpp::Node {
82
82
83
83
map_ = std::make_shared<GridMapGeo>(frame_id);
84
84
map_->setMaxMapSizePixels (max_map_width, max_map_height);
85
+
86
+ rcl_interfaces::msg::ParameterDescriptor origin_descriptor;
87
+ origin_descriptor.read_only = true ;
88
+ origin_descriptor.description = " Map origin latitude (WGS-84) in degrees." ;
89
+ rcl_interfaces::msg::FloatingPointRange origin_range;
90
+
91
+ origin_range.from_value = -90.0 ;
92
+ origin_range.to_value = 90.0 ;
93
+ origin_descriptor.floating_point_range .push_back (origin_range);
94
+
95
+ static_assert (std::numeric_limits<double >::has_quiet_NaN == true , " Need quiet NaN for default value" );
96
+ const auto map_origin_latitude = std::clamp (
97
+ this ->declare_parameter (" map_origin_latitude" , std::numeric_limits<double >::quiet_NaN (), origin_descriptor),
98
+ origin_range.from_value , origin_range.to_value );
99
+
100
+ origin_range.from_value = -180.0 ;
101
+ origin_range.to_value = 180.0 ;
102
+ origin_descriptor.floating_point_range .at (0 ) = origin_range;
103
+
104
+ origin_descriptor.description = " Map origin longitude (WGS-84) in degrees." ;
105
+ const auto map_origin_longitude = std::clamp (
106
+ this ->declare_parameter (" map_origin_longitude" , std::numeric_limits<double >::quiet_NaN (), origin_descriptor),
107
+ origin_range.from_value , origin_range.to_value );
108
+
109
+ map_ = std::make_shared<GridMapGeo>();
110
+ map_->setMaxMapSizePixels (max_map_width, max_map_height);
111
+ map_->setGlobalOrigin (ESPG::WGS84, Eigen::Vector3d (map_origin_longitude, map_origin_latitude, 0.0 ));
85
112
map_->Load (gdal_dataset_path, color_path);
113
+
86
114
auto timer_callback = [this ]() -> void {
87
115
auto msg = grid_map::GridMapRosConverter::toMessage (map_->getGridMap ());
88
116
if (msg) {
0 commit comments