Costmap2DConverterTest.cpp
Go to the documentation of this file.
1 /*
2  * Costmap2DConverterTest.cpp
3  *
4  * Created on: Nov 23, 2016
5  * Author: Peter Fankhauser
6  * Institute: ETH Zurich, ANYbotics
7  */
8 
9 // Grid map
12 
13 // Gtest
14 #include <gtest/gtest.h>
15 
16 // Eigen
17 #include <Eigen/Core>
18 
19 using namespace grid_map;
20 
21 TEST(Costmap2DConversion, initializeFromCostmap2d)
22 {
23  Costmap2DConverter<GridMap> costmap2dConverter;
24  // Create Costmap2D.
25  costmap_2d::Costmap2D costmap2d(8, 5, 1.0, 2.0, 3.0);
26 
27  // Convert to grid map.
28  GridMap gridMap;
29  costmap2dConverter.initializeFromCostmap2D(costmap2d, gridMap);
30 
31  // Check map info.
32  // Different conventions: Costmap2d returns the *centerpoint* of the last cell in the map.
33  Length length = gridMap.getLength() - Length::Constant(0.5 * gridMap.getResolution());
34  Length position = gridMap.getPosition() - 0.5 * gridMap.getLength().matrix();
35  EXPECT_EQ(costmap2d.getSizeInMetersX(), length.x());
36  EXPECT_EQ(costmap2d.getSizeInMetersY(), length.y());
37  EXPECT_EQ(costmap2d.getSizeInCellsX(), gridMap.getSize()[0]);
38  EXPECT_EQ(costmap2d.getSizeInCellsY(), gridMap.getSize()[1]);
39  EXPECT_EQ(costmap2d.getResolution(), gridMap.getResolution());
40  EXPECT_EQ(costmap2d.getOriginX(), position.x());
41  EXPECT_EQ(costmap2d.getOriginY(), position.y());
42 }
43 
44 TEST(Costmap2DConversion, addLayerFromCostmap2d)
45 {
46  Costmap2DConverter<GridMap> costmap2dConverter;
47 
48  // Create Costmap2D.
49  costmap_2d::Costmap2D costmap2d(8, 5, 1.0, 2.0, 3.0);
50 
51  // Create grid map.
52  const std::string layer("layer");
53  GridMap gridMap;
54  costmap2dConverter.initializeFromCostmap2D(costmap2d, gridMap);
55 
56  // Set test data.
57  using TestValue = std::tuple<Position, unsigned char, double>;
58  std::vector<TestValue> testValues;
59  testValues.push_back(TestValue(Position(8.5, 4.5), 1, 1.0));
60  testValues.push_back(TestValue(Position(3.2, 5.1), 254, 100.0));
61  testValues.push_back(TestValue(Position(5.2, 7.8), 255, -1.0));
62 
63  // Fill in test data to Costmap2D.
64  for (const auto& testValue : testValues) {
65  unsigned int xIndex, yIndex;
66  ASSERT_TRUE(costmap2d.worldToMap(std::get<0>(testValue).x(), std::get<0>(testValue).y(), xIndex, yIndex));
67  costmap2d.getCharMap()[costmap2d.getIndex(xIndex, yIndex)] = std::get<1>(testValue);
68  }
69 
70  // Copy data.
71  costmap2dConverter.addLayerFromCostmap2D(costmap2d, layer, gridMap);
72 
73  // Check data.
74  for (const auto& testValue : testValues) {
75  EXPECT_EQ(std::get<2>(testValue), gridMap.atPosition(layer, std::get<0>(testValue)));
76  }
77 }
const Length & getLength() const
Convert Costmap2DRos objects into cost or grid maps.
float & atPosition(const std::string &layer, const Position &position)
bool getPosition(const Index &index, Position &position) const
void initializeFromCostmap2D(costmap_2d::Costmap2DROS &costmap2d, MapType &outputMap)
double getOriginX() const
double getSizeInMetersX() const
TFSIMD_FORCE_INLINE const tfScalar & y() const
double getSizeInMetersY() const
unsigned char * getCharMap() const
double getResolution() const
Eigen::Vector2d Position
double getOriginY() const
unsigned int getSizeInCellsY() const
bool addLayerFromCostmap2D(const costmap_2d::Costmap2D &costmap2d, const std::string &layer, MapType &outputMap)
unsigned int getSizeInCellsX() const
TFSIMD_FORCE_INLINE tfScalar length(const Quaternion &q)
TEST(Costmap2DConversion, initializeFromCostmap2d)
double getResolution() const
bool worldToMap(double wx, double wy, unsigned int &mx, unsigned int &my) const
Eigen::Array2d Length
unsigned int getIndex(unsigned int mx, unsigned int my) const
const Size & getSize() const


grid_map_costmap_2d
Author(s): Péter Fankhauser
autogenerated on Tue Jun 25 2019 20:02:11