Skip to content

Commit da59197

Browse files
committed
added unit test for differential gps objet
1 parent 28a0cf3 commit da59197

File tree

7 files changed

+116
-87
lines changed

7 files changed

+116
-87
lines changed

glider/CMakeLists.txt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ include_directories(
5858
add_library(${PROJECT_NAME} SHARED
5959
src/parameters.cpp
6060
src/time.cpp
61-
src/gps_heading.cpp
6261
src/differential_gps.cpp
6362
src/odometry.cpp
6463
src/odometry_with_covariance.cpp
@@ -160,13 +159,6 @@ if (BUILD_TESTS)
160159
${PROJECT_NAME}
161160
)
162161

163-
add_executable(heading_test test/test_heading.cpp)
164-
target_link_libraries(heading_test
165-
GTest::GTest
166-
GTest::Main
167-
${PROJECT_NAME}
168-
)
169-
170162
add_executable(params_test test/test_params.cpp)
171163
target_link_libraries(params_test
172164
GTest::GTest
@@ -202,6 +194,14 @@ if (BUILD_TESTS)
202194
${PROJECT_NAME}
203195
)
204196

197+
add_executable(diff_gps_test test/test_differential_gps.cpp)
198+
target_link_libraries(diff_gps_test
199+
GTest::GTest
200+
GTest::Main
201+
${PROJECT_NAME}
202+
)
203+
204+
205205
add_executable(ros_conversion_test test/test_ros_conversions.cpp)
206206
target_link_libraries(ros_conversion_test
207207
GTest::GTest
@@ -212,11 +212,11 @@ if (BUILD_TESTS)
212212

213213
include(GoogleTest)
214214
gtest_discover_tests(utm_test)
215-
gtest_discover_tests(heading_test)
216215
gtest_discover_tests(params_test)
217216
gtest_discover_tests(manager_test)
218217
gtest_discover_tests(glider_test)
219218
gtest_discover_tests(odometry_test)
220219
gtest_discover_tests(odometry_with_cov_test)
220+
gtest_discover_tests(diff_gps_test)
221221
gtest_discover_tests(ros_conversion_test)
222222
endif()

glider/include/glider/core/differential_gps.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class DifferentialGpsFromMotion
2929
void setLastGps(const Eigen::Vector3d& gps);
3030
bool isInitialized() const;
3131
double getVelocityThreshold() const;
32+
bool isIntegratable(const Eigen::Vector3d& vel) const;
3233

3334
private:
3435

glider/include/glider/utils/gps_heading.hpp

Lines changed: 0 additions & 39 deletions
This file was deleted.

glider/src/differential_gps.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,9 @@ double DifferentialGpsFromMotion::headingRadiansToDegrees(const double heading)
6969
heading_deg = std::fmod(std::fmod(heading_deg, 360.0) + 360.0, 360.0);
7070
return heading_deg;
7171
}
72+
73+
bool DifferentialGpsFromMotion::isIntegratable(const Eigen::Vector3d& velocity) const
74+
{
75+
double vel = velocity.head(2).norm();
76+
return vel > vel_threshold_;
77+
}

glider/src/factor_manager.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
#include "glider/core/factor_manager.hpp"
88
#include "glider/utils/geodetics.hpp"
9-
#include "glider/utils/gps_heading.hpp"
109

1110
#include <gtsam/slam/expressions.h>
1211

glider/src/gps_heading.cpp

Lines changed: 0 additions & 38 deletions
This file was deleted.
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/*!
2+
* Jason Hughes
3+
* October 2025
4+
*
5+
* test the differential gps
6+
* object
7+
*/
8+
9+
#include <gtest/gtest.h>
10+
11+
#include "glider/core/differential_gps.hpp"
12+
13+
static const double LAT = 32.925;
14+
static const double LON = -75.199;
15+
static const double ALT = 10.0;
16+
static const double VEL = 1.0;
17+
18+
TEST(DifferentialGpsTestSuite, TestInitialization)
19+
{
20+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
21+
Eigen::Vector3d gps(LAT, LON, ALT);
22+
23+
dgps.setLastGps(gps);
24+
25+
ASSERT_TRUE(dgps.isInitialized());
26+
}
27+
28+
TEST(DifferentialGpsTestSuite, TestNorthHeading)
29+
{
30+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
31+
32+
double nlat = 39.942136;
33+
double nlon = -75.19969;
34+
double slat = 39.942041;
35+
double slon = -75.199694;
36+
37+
dgps.setLastGps(Eigen::Vector3d(slat, slon, ALT));
38+
39+
double heading = dgps.getHeading(Eigen::Vector3d(nlat, nlon, ALT));
40+
41+
ASSERT_NEAR(heading, M_PI/2, 0.1);
42+
}
43+
44+
TEST(DifferentialGpsTestSuite, TestSouthHeading)
45+
{
46+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
47+
48+
double nlat = 39.942136;
49+
double nlon = -75.19969;
50+
double slat = 39.942041;
51+
double slon = -75.199694;
52+
53+
dgps.setLastGps(Eigen::Vector3d(nlat, nlon, ALT));
54+
55+
double heading = dgps.getHeading(Eigen::Vector3d(slat, slon, ALT));
56+
57+
ASSERT_NEAR(heading, 3*M_PI/2, 0.1);
58+
}
59+
60+
TEST(DifferentialGpsTestSuite, TestEastHeading)
61+
{
62+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
63+
64+
double wlat = 39.942197;
65+
double wlon = -75.199524;
66+
double elat = 39.942193;
67+
double elon = -75.199374;
68+
69+
dgps.setLastGps(Eigen::Vector3d(wlat, wlon, ALT));
70+
71+
double heading = dgps.getHeading(Eigen::Vector3d(elat, elon, ALT));
72+
73+
ASSERT_NEAR(heading, 2*M_PI, 0.1);
74+
}
75+
76+
TEST(DifferentialGpsTestSuite, TestWestHeading)
77+
{
78+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
79+
80+
double wlat = 39.942197;
81+
double wlon = -75.199524;
82+
double elat = 39.942193;
83+
double elon = -75.199374;
84+
85+
dgps.setLastGps(Eigen::Vector3d(elat, elon, ALT));
86+
87+
double heading = dgps.getHeading(Eigen::Vector3d(wlat, wlon, ALT));
88+
89+
ASSERT_NEAR(heading, M_PI, 0.1);
90+
}
91+
92+
TEST(DifferentialGpsTestSuite, TestVelocityThreshold)
93+
{
94+
Glider::Geodetics::DifferentialGpsFromMotion dgps("enu", VEL);
95+
96+
ASSERT_EQ(VEL, dgps.getVelocityThreshold());
97+
98+
ASSERT_TRUE(dgps.isIntegratable(Eigen::Vector3d(2.0, 0.0, 0.0)));
99+
ASSERT_FALSE(dgps.isIntegratable(Eigen::Vector3d(0.5, 0.0, 0.0)));
100+
}

0 commit comments

Comments
 (0)