diff options
author | Martin Miller | 2017-03-25 14:28:11 -0500 |
---|---|---|
committer | Martin Miller | 2017-03-25 14:28:11 -0500 |
commit | 8d6334e96eb381efc1a59ccfab67827d423d3cfe (patch) | |
tree | f22418d2fd480ef1930707c283dcd90999a5ee20 /tests | |
parent | de63c9b1dd8587516159affb79bdac0b9a5b5de8 (diff) | |
download | refslam-8d6334e96eb381efc1a59ccfab67827d423d3cfe.zip refslam-8d6334e96eb381efc1a59ccfab67827d423d3cfe.tar.gz |
Feature test code
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile | 18 | ||||
-rw-r--r-- | tests/test_feature.cpp | 125 | ||||
-rw-r--r-- | tests/test_feature.h | 14 |
3 files changed, 157 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..636f2f3 --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,18 @@ +OBJECT=test_feature.o ../src/feature.o ../src/camera.o +CXXFLAGS+=-O2 -march=native -std=c++11 -pedantic-errors +CXXFLAGS+=-g -I../src +CXXFLAGS+=$(shell pkg-config --cflags eigen3 yaml-cpp) +#CXXFLAGS+=$(shell pkg-config --cflags opencv) +LIBS+=$(shell pkg-config --libs eigen3 yaml-cpp) +#LIBS+=$(shell pkg-config --libs opencv) + +test_feature: ${OBJECT} + $(CXX) -o $@ $^ $(CXXFLAGS) ${LIBS} + +.cpp.o: + $(CXX) $(CXXFLAGS) ${LIBS} -c $< -o $@ + +.PHONY: clean +clean: + rm -f test_feature *.o src/*.o + diff --git a/tests/test_feature.cpp b/tests/test_feature.cpp new file mode 100644 index 0000000..13b4e0a --- /dev/null +++ b/tests/test_feature.cpp @@ -0,0 +1,125 @@ +/* + * ===================================================================================== + * + * Filename: test_feature.cpp + * + * Description: Test the feature class. + * + * Version: 1.0 + * Created: 03/25/2017 12:43:53 PM + * Revision: none + * Compiler: gcc + * + * Author: Martin Miller (MHM), miller7@illinois.edu + * Organization: Aerospace Robotics and Controls Lab (ARC) + * + * ===================================================================================== + */ + + +#include "test_feature.h" + + +/* + * === FUNCTION ====================================================================== + * Name: test_findDepth + * Description: Test the Feature::findDepth() method. + * ===================================================================================== + */ +bool +test_findDepth ( Camera &cam ) +{ + bool success; + UTM pos; + pos.northing = 4451490.899494356; + pos.easting = 381887.311030777; + pos.up = 206.256890383; + pos.zone_i = 16; + pos.zone_c = 'T'; + + // Quat for 16.bmp + attitude_t att{ -1.073641623878,2.685395530695,16.357370508605}; + + double roll, pitch, yaw; + roll = M_PI*att.roll/180.; + pitch = M_PI*att.pitch/180.; + yaw = M_PI*(att.yaw)/180.; + Matrix3d R; + Quaterniond q; + R = AngleAxisd(yaw, Vector3d::UnitZ()) + * AngleAxisd(roll, Vector3d::UnitX()) + * AngleAxisd(pitch, Vector3d::UnitY()); + q = Quaterniond(R); + + Matrix<double,26,5> meas; + meas << 162,493,260,493,331, + 66,370,229,369,352, + 268,763,235,764,364, + 414,554,250,554,337, + 452,365,210,365,370, + 580,353,239,353,344, + 606,455,253,455,333, + 680,748,237,747,357, + 706,650,233,651,358, + 724,671,199,668,400, + 736,768,283,768,318, + 774,368,159,369,370, + 842,281,221,282,352, + 882,748,249,748,349, + 910,386,217,387,369, + 916,713,210,713,383, + 966,519,218,519,368, + 1026,567,264,567,325, + 1050,686,227,686,361, + 1070,650,220,650,370, + 1084,531,267,531,323, + 1160,331,222,332,353, + 1184,388,273,388,314, + 1262,547,219,546,360, + 1274,314,218,313,354, + 1278,469,217,469,365; + + double z; + z = -0.34; + z -= 0.6*3.43*sin(pitch); + + Vector3d xbw; + xbw << pos.northing, pos.easting, -pos.up; + + printf("id,utm_z,utm_c,utm-northing,utm-easting,altitude\n"); + for (int i=0; i<meas.rows(); ++i) { + Matrix<double,1,5> row; + row = meas.block<1,5>(i,0); + int id = row[0]; + + Vector3d xsi,xri,xs,xr; + xsi << row[1], row[2], 1; + xri << row[3], row[4], 1; + + xs = cam.img2body(xsi); + xr = cam.img2body(xri); + + Feature f(id,xs,xr,xbw,q,z); + if (f.sane()) + { + UTM utmi; + utmi = f.utm(xbw,q); + printf("%d,%d,%c,%f,%f,%f\n", id,utmi.zone_i, utmi.zone_c, utmi.northing, utmi.easting, utmi.up); + } + } + + success = true; + return success; +} /* ----- end of function test_findDepth ----- */ + +int main(int argc, char **argv) +{ + Camera cam(argv[1]); + if (test_findDepth(cam)) { + ;//printf("PASSED\n"); + } else { + printf("FAILED\n"); + } + return 0; +} + diff --git a/tests/test_feature.h b/tests/test_feature.h new file mode 100644 index 0000000..4c059f6 --- /dev/null +++ b/tests/test_feature.h @@ -0,0 +1,14 @@ +#ifndef test_feature_INC +#define test_feature_INC + +#include <cmath> +#include <Eigen/Dense> +#include <iostream> + +#include "camera.h" +#include "feature.h" +#include "types.h" + +using namespace Eigen; +bool test_findDepth( Camera &cam ); +#endif /* ----- #ifndef test_feature_INC ----- */ |