OctoMap: fixed empty occupancy not correctly updated when ray tracing is done on more than one local map

This commit is contained in:
matlabbe
2022-01-23 16:29:11 -05:00
parent 83d1e27b81
commit e2dc3ac67e
2 changed files with 13 additions and 2 deletions

View File

@@ -891,7 +891,7 @@ bool OctoMap::update(const std::map<int, Transform> & poses)
}
}
RtabmapColorOcTreeNode * n = octree_->updateNode(*it, false, orderedPoses.size() == 1);
RtabmapColorOcTreeNode * n = octree_->updateNode(*it, false, true);
if(n && n->getOccupancyType() == RtabmapColorOcTreeNode::kTypeUnknown)
{
n->setOccupancyType(RtabmapColorOcTreeNode::kTypeEmpty);
@@ -957,6 +957,10 @@ bool OctoMap::update(const std::map<int, Transform> & poses)
}
}
}
}
if((occupancyIter != cache_.end() && occupancyIter->second.second.cols) || !free_cells.empty())
{
octree_->updateInnerOccupancy();
}