Skip to content

Commit

Permalink
Synchronize map size information during map initialization (#4015)
Browse files Browse the repository at this point in the history
* Update costmap size configuration

This commit updates the costmap_2d.cpp file to fix a bug where the costmap size wasn't appropriately updated. Two new lines of code have been added to ensure the size of the costmap is correctly configured each time it's instantiated.

* Refactor costmap size assignment in Costmap2D class

The code refactor eliminates the direct mutation of the size_x_ and size_y_ attributes in the Costmap2D class. Instead, the class uses the size of cells provided during initialization and calculation from map coordinates for better encapsulation and clarity.
  • Loading branch information
Hao-Li-Bachelorarbeit authored and SteveMacenski committed Jan 24, 2024
1 parent 2c0a04f commit af08021
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions nav2_costmap_2d/src/costmap_2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ namespace nav2_costmap_2d
Costmap2D::Costmap2D(
unsigned int cells_size_x, unsigned int cells_size_y, double resolution,
double origin_x, double origin_y, unsigned char default_value)
: size_x_(cells_size_x), size_y_(cells_size_y), resolution_(resolution), origin_x_(origin_x),
: resolution_(resolution), origin_x_(origin_x),
origin_y_(origin_y), costmap_(NULL), default_value_(default_value)
{
access_ = new mutex_t();

// create the costmap
initMaps(size_x_, size_y_);
initMaps(cells_size_x, cells_size_y);
resetMaps();
}

Expand Down Expand Up @@ -102,15 +102,15 @@ void Costmap2D::initMaps(unsigned int size_x, unsigned int size_y)
{
std::unique_lock<mutex_t> lock(*access_);
delete[] costmap_;
size_x_ = size_x;
size_y_ = size_y;
costmap_ = new unsigned char[size_x * size_y];
}

void Costmap2D::resizeMap(
unsigned int size_x, unsigned int size_y, double resolution,
double origin_x, double origin_y)
{
size_x_ = size_x;
size_y_ = size_y;
resolution_ = resolution;
origin_x_ = origin_x;
origin_y_ = origin_y;
Expand Down Expand Up @@ -166,15 +166,12 @@ bool Costmap2D::copyCostmapWindow(
// ROS_ERROR("Cannot window a map that the window bounds don't fit inside of");
return false;
}

size_x_ = upper_right_x - lower_left_x;
size_y_ = upper_right_y - lower_left_y;
resolution_ = map.resolution_;
origin_x_ = win_origin_x;
origin_y_ = win_origin_y;

// initialize our various maps and reset markers for inflation
initMaps(size_x_, size_y_);
initMaps(upper_right_x - lower_left_x, upper_right_y - lower_left_y);

// copy the window of the static map and the costmap that we're taking
copyMapRegion(
Expand Down

0 comments on commit af08021

Please sign in to comment.