博客转自:https://blog.csdn.net/u013158492/article/details/50493220

这个类是为ObstacleLayer StaticLayer voxelLayer 这种维护了自己所在层的地图数据的类,提供了一些公共的操作方法。

从UML中可以看到,这个类提供了以下方法,这些方法的参数列表均为(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)

updateWithTrueOverwrite
updateWithOverwrite
updateWithMax
updateWithAddition

这些成员函数都是为本层的地图,如何更新数据到master map上的一些更新方法。这里调一个例子说明:

void CostmapLayer::updateWithOverwrite(costmap_2d::Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j)
{
if (!enabled_)
return;
unsigned char* master = master_grid.getCharMap();
unsigned int span = master_grid.getSizeInCellsX(); for (int j = min_j; j < max_j; j++)
{
unsigned int it = span*j+min_i;
for (int i = min_i; i < max_i; i++)
{
if (costmap_[it] != NO_INFORMATION)
master[it] = costmap_[it];//这里就是overwrite的涵义,costmap_是本层的地图数据。直接将本层的数据赋值给master map的对应索引就行了
it++;
}
}
}

另外还有两个函数成员:

void CostmapLayer::touch(double x, double y, double* min_x, double* min_y, double* max_x, double* max_y)
{
*min_x = std::min(x, *min_x);
*min_y = std::min(y, *min_y);
*max_x = std::max(x, *max_x);
*max_y = std::max(y, *max_y);
} void CostmapLayer::matchSize()
{
Costmap2D* master = layered_costmap_->getCostmap();//这是由Layer 继承过来的,Layer的指针LayeredCostmap* layered_costmap_
resizeMap(master->getSizeInCellsX(), master->getSizeInCellsY(), master->getResolution(),master->getOriginX(), master->getOriginY());//这里调整的对象是继承的Costmap2D的数据成员char* costmap_, 也就是这里的调整是针对各层的地图,不是关于master map的。
}

  

最新文章

  1. canvas 时钟+自由落体
  2. AJAX原生JS代码
  3. 分布式架构 Hadoop 2.7.X 安装和配置
  4. RNN神经网络和英中机器翻译的实现
  5. 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法。
  6. 一天一个Java基础——排序
  7. springmvc整合redis架构搭建实例
  8. mysql datetime、date、time、timestamp区别
  9. 必须声明标量变量 &quot;@列名&quot;
  10. mybatis中使用log4j
  11. 用Delphi画圆角Panel的方法(使用CreateRoundRectRgn创造区域,SetWindowRgn显示指定区域)
  12. 高速掌握sinox2014激动人心的ZFS和RAID技术
  13. react起步
  14. freemarker字符串拼接
  15. 【递归打卡2】求两个有序数组的第K小数
  16. .Net Framework 下运行项目提示.dll类库程序集未能加载
  17. Codeforces 840C On the Bench dp
  18. play framework接收post请求json格式的参数
  19. sql 行变列
  20. Android.mk简介&lt;转&gt;

热门文章

  1. [CF662C]Binary Table
  2. UVA11796 Dog Distance
  3. LA3263 That Nice Euler Circuits
  4. Ambari的资源池管理
  5. bzoj 2784 时间流逝 —— 树上高斯消元
  6. (转)RadioButton左侧显示文字,右侧显示按钮时文字不靠边的问题解决
  7. oracle驱动包maven下载失败解决
  8. 项目中使用的图片上传方法,base64存本地
  9. 对于global的介绍
  10. php sprintf()