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