9 #include <gtest/gtest.h> 17 using namespace signed_distance_field;
19 TEST(testSignedDistance2d, signedDistance2d_noObstacles) {
22 const float resolution = 0.1;
23 const Matrix map = Matrix::Ones(n, m);
28 ASSERT_TRUE((signedDistance.array() ==
INF).all());
31 TEST(testSignedDistance2d, signedDistance2d_allObstacles) {
34 const float resolution = 0.1;
35 const Matrix map = Matrix::Ones(n, m);
40 ASSERT_TRUE((signedDistance.array() == -
INF).all());
43 TEST(testSignedDistance2d, signedDistance2d_mixed) {
46 const float resolution = 1.0;
48 map << 0.0, 1.0, 1.0, 0.0, 0.0, 1.0;
53 ASSERT_TRUE(
isEqualSdf(signedDistance, naiveSignedDistance, 1e-4));
56 TEST(testSignedDistance2d, signedDistance2d_oneObstacle) {
59 const float resolution = 0.1;
60 Matrix map = Matrix::Zero(n, m);
61 map(n / 2, m / 2) = 1.0;
66 ASSERT_TRUE(
isEqualSdf(signedDistance, naiveSignedDistance, 1e-4));
69 TEST(testSignedDistance2d, signedDistance2d_oneFreeSpace) {
72 const float resolution = 0.1;
73 Matrix map = Matrix::Ones(n, m);
74 map(n / 2, m / 2) = 0.0;
80 ASSERT_TRUE(
isEqualSdf(signedDistance, naiveSignedDistance, 1e-4));
83 TEST(testSignedDistance2d, signedDistance2d_debugcase) {
86 const float resolution = 1.0;
88 map << 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0;
94 ASSERT_TRUE(
isEqualSdf(signedDistance, naiveSignedDistance, 1e-4));
97 TEST(testSignedDistance2d, signedDistance2d_random) {
100 const float resolution = 1.0;
101 Matrix map = Matrix::Random(n, m);
104 float heightStep = 0.1;
105 for (
float height = -1.0 - heightStep; height < 1.0 + heightStep; height += heightStep) {
110 ASSERT_TRUE(
isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)) <<
"height: " << height;
Matrix naiveSignedDistanceFromOccupancy(const Eigen::Matrix< bool, -1, -1 > &occupancyGrid, float resolution)
Eigen::Matrix< bool, -1, -1 > occupancyAtHeight(const Matrix &elevationMap, float height)
Matrix signedDistanceFromOccupancy(const Eigen::Matrix< bool, -1, -1 > &occupancyGrid, float resolution)
constexpr float INF
Distance value that is considered infinite.
TEST(GridMap, CopyConstructor)
bool isEqualSdf(const Matrix &sdf0, const Matrix &sdf1, float tol)