Skip to content

Commit 775c376

Browse files
committed
Internal static map <-> navstate static map
1 parent af06ef8 commit 775c376

2 files changed

Lines changed: 24 additions & 4 deletions

File tree

maps_managers/easynav_costmap_maps_manager/include/easynav_costmap_maps_manager/CostmapMapsManager.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,15 @@ class CostmapMapsManager : public easynav::MapsManagerBase
9393
Costmap2D static_map_;
9494

9595
/**
96-
* @brief Internal static map.
96+
* @brief Internal dynamic map.
9797
*/
9898
std::shared_ptr<Costmap2D> dynamic_map_;
9999

100+
/**
101+
* @brief Flag to update navstate
102+
*/
103+
bool update_map_static_ = false;
104+
100105
/**
101106
* @brief Publisher for the static occupancy grid.
102107
*/

maps_managers/easynav_costmap_maps_manager/src/easynav_costmap_maps_manager/CostmapMapsManager.cpp

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ CostmapMapsManager::on_initialize()
135135
static_grid_msg_ = *msg;
136136

137137
static_map_ = Costmap2D(*msg);
138+
update_map_static_ = true;
138139

139140
static_grid_msg_.header.frame_id = tf_info.map_frame;
140141
static_grid_msg_.header.stamp = this->get_node()->now();
@@ -178,9 +179,25 @@ void
178179
CostmapMapsManager::update(NavState & nav_state)
179180
{
180181
EASYNAV_TRACE_EVENT;
182+
const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();
181183

182-
if (!nav_state.has("map.static")) {
184+
// Update navstate static map with internal map
185+
if (update_map_static_ || !nav_state.has("map.static")) {
183186
nav_state.set("map.static", static_map_);
187+
update_map_static_ = false;
188+
}
189+
190+
// Update internal map with navstate static map
191+
if (nav_state.has("map.static.update") && nav_state.get<bool>("map.static.update")) {
192+
static_map_ = nav_state.get<Costmap2D>("map.static");
193+
nav_state.set("map.static.update", false);
194+
195+
// Publish to static map topic
196+
static_map_.toOccupancyGridMsg(static_grid_msg_);
197+
198+
static_grid_msg_.header.frame_id = tf_info.map_frame;
199+
static_grid_msg_.header.stamp = this->get_node()->now();
200+
static_occ_pub_->publish(static_grid_msg_);
184201
}
185202

186203
if (!dynamic_map_) {
@@ -201,8 +218,6 @@ CostmapMapsManager::update(NavState & nav_state)
201218

202219
nav_state.set("map.dynamic", dynamic_map_);
203220

204-
const auto & tf_info = RTTFBuffer::getInstance()->get_tf_info();
205-
206221
rclcpp::Time map_stamp = nav_state.get<rclcpp::Time>("map_time");
207222

208223
dynamic_map_->toOccupancyGridMsg(dynamic_grid_msg_);

0 commit comments

Comments
 (0)