Skip to content
Snippets Groups Projects
Unverified Commit 30196b9a authored by Tyler Wilson's avatar Tyler Wilson Committed by GitHub
Browse files

Merge pull request #85 from AstroKEW78/testCameraModel

Test camera model
parents 963e250a 36bc2793
No related branches found
No related tags found
No related merge requests found
cmake_minimum_required(VERSION 3.10)
# Link runCSMCameraModelTests with what we want to test and the GTest and pthread library
add_executable(runCSMCameraModelTests TestyMcTestFace.cpp)
add_executable(runCSMCameraModelTests TestyMcTestFace.cpp FrameCameraTests.cpp)
target_link_libraries(runCSMCameraModelTests usgscsm ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} pthread)
gtest_discover_tests(runCSMCameraModelTests WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/tests)
#include "UsgsAstroFramePlugin.h"
#include "UsgsAstroFrameSensorModel.h"
#include <json.hpp>
#include <sstream>
#include <fstream>
#include <gtest/gtest.h>
using json = nlohmann::json;
class FrameSensorModel : public ::testing::Test {
protected:
UsgsAstroFrameSensorModel *sensorModel;
void SetUp() override {
sensorModel = NULL;
std::ifstream isdFile("data/simpleFramerISD.json");
json jsonIsd = json::parse(isdFile);
csm::Isd isd;
for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) {
json jsonValue = it.value();
if (jsonValue.size() > 1) {
for (int i = 0; i < jsonValue.size(); i++) {
isd.addParam(it.key(), jsonValue[i].dump());
}
}
else {
isd.addParam(it.key(), jsonValue.dump());
}
}
isdFile.close();
UsgsAstroFramePlugin frameCameraPlugin;
csm::Model *model = frameCameraPlugin.constructModelFromISD(
isd,
"USGS_ASTRO_FRAME_SENSOR_MODEL");
sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model);
ASSERT_NE(sensorModel, nullptr);
}
void TearDown() override {
if (sensorModel) {
delete sensorModel;
sensorModel = NULL;
}
}
};
TEST_F(FrameSensorModel, Center) {
csm::ImageCoord imagePt(7.0, 7.0);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_NEAR(groundPt.x, 10.0, 1e-8);
EXPECT_NEAR(groundPt.y, 0, 1e-8);
EXPECT_NEAR(groundPt.z, 0, 1e-8);
}
TEST_F(FrameSensorModel, OffBody) {
csm::ImageCoord imagePt(14.5, -0.5);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_NEAR(groundPt.x, 0.44979759, 1e-8);
EXPECT_NEAR(groundPt.y, -14.99325304, 1e-8);
EXPECT_NEAR(groundPt.z, 14.99325304, 1e-8);
}
TEST_F(FrameSensorModel, SlightlyOffCenter) {
csm::ImageCoord imagePt(7.0, 6.0);
csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
EXPECT_NEAR(groundPt.x, 9.80194018, 1e-8);
EXPECT_NEAR(groundPt.y, 0, 1e-8);
EXPECT_NEAR(groundPt.z, 1.98039612, 1e-8);
}
\ No newline at end of file
#include "gtest/gtest.h"
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
\ No newline at end of file
......@@ -12,7 +12,7 @@
"focal_length": 50,
"focal_length_epsilon": 1.0,
"ifov": 6.0,
"model_name": "UsgsAstroFramePluginCSM",
"model_name": "USGS_ASTRO_FRAME_SENSOR_MODEL",
"spacecraft_name": "TEST_CRAFT",
"instrument_id": "TEST_SENSOR",
"target_name": "TEST_BALL",
......@@ -46,8 +46,8 @@
"omega": 0,
"phi": -1.5707963267948966,
"kappa": 3.141592653589793,
"semi_major_axis": 10,
"semi_minor_axis": 10,
"semi_major_axis":0.01,
"semi_minor_axis":0.01,
"transx": [
0.0,
0.1,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment