32 #define TEST_NAME "base/cost_functions"
42 ceres::CostFunction* cost_function =
44 Eigen::Vector2d::Zero());
45 double qvec[4] = {1, 0, 0, 0};
46 double tvec[3] = {0, 0, 0};
47 double point3D[3] = {0, 0, 1};
48 double camera_params[3] = {1, 0, 0};
50 const double* parameters[4] = {qvec, tvec, point3D, camera_params};
51 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
52 BOOST_CHECK_EQUAL(residuals[0], 0);
53 BOOST_CHECK_EQUAL(residuals[1], 0);
56 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
57 BOOST_CHECK_EQUAL(residuals[0], 0);
58 BOOST_CHECK_EQUAL(residuals[1], 1);
61 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
62 BOOST_CHECK_EQUAL(residuals[0], 0);
63 BOOST_CHECK_EQUAL(residuals[1], 2);
66 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
67 BOOST_CHECK_EQUAL(residuals[0], -2);
68 BOOST_CHECK_EQUAL(residuals[1], 2);
74 Eigen::Vector3d::Zero(),
75 Eigen::Vector2d::Zero());
76 double point3D[3] = {0, 0, 1};
77 double camera_params[3] = {1, 0, 0};
79 const double* parameters[2] = {point3D, camera_params};
80 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
81 BOOST_CHECK_EQUAL(residuals[0], 0);
82 BOOST_CHECK_EQUAL(residuals[1], 0);
85 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
86 BOOST_CHECK_EQUAL(residuals[0], 0);
87 BOOST_CHECK_EQUAL(residuals[1], 1);
90 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
91 BOOST_CHECK_EQUAL(residuals[0], 0);
92 BOOST_CHECK_EQUAL(residuals[1], 2);
95 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
96 BOOST_CHECK_EQUAL(residuals[0], -2);
97 BOOST_CHECK_EQUAL(residuals[1], 2);
101 ceres::CostFunction* cost_function =
103 Eigen::Vector2d::Zero());
104 double rig_qvec[4] = {1, 0, 0, 0};
105 double rig_tvec[3] = {0, 0, -1};
106 double rel_qvec[4] = {1, 0, 0, 0};
107 double rel_tvec[3] = {0, 0, 1};
108 double point3D[3] = {0, 0, 1};
109 double camera_params[3] = {1, 0, 0};
111 const double* parameters[6] = {rig_qvec, rig_tvec, rel_qvec,
112 rel_tvec, point3D, camera_params};
113 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
114 BOOST_CHECK_EQUAL(residuals[0], 0);
115 BOOST_CHECK_EQUAL(residuals[1], 0);
118 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
119 BOOST_CHECK_EQUAL(residuals[0], 0);
120 BOOST_CHECK_EQUAL(residuals[1], 1);
122 camera_params[0] = 2;
123 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
124 BOOST_CHECK_EQUAL(residuals[0], 0);
125 BOOST_CHECK_EQUAL(residuals[1], 2);
128 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
129 BOOST_CHECK_EQUAL(residuals[0], -2);
130 BOOST_CHECK_EQUAL(residuals[1], 2);
135 Eigen::Vector2d(0, 0), Eigen::Vector2d(0, 0));
136 double qvec[4] = {1, 0, 0, 0};
137 double tvec[3] = {0, 1, 0};
139 const double* parameters[2] = {qvec, tvec};
140 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
141 BOOST_CHECK_EQUAL(residuals[0], 0);
144 Eigen::Vector2d(1, 0));
145 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
146 BOOST_CHECK_EQUAL(residuals[0], 0.5);
149 Eigen::Vector2d(1, 1));
150 BOOST_CHECK(cost_function->Evaluate(parameters, residuals,
nullptr));
151 BOOST_CHECK_EQUAL(residuals[0], 0.5);
static ceres::CostFunction * Create(const Eigen::Vector2d &point2D)
static ceres::CostFunction * Create(const Eigen::Vector2d &x1, const Eigen::Vector2d &x2)
static ceres::CostFunction * Create(const Eigen::Vector2d &point2D)
BOOST_AUTO_TEST_CASE(TestBundleAdjustmentCostFunction)
Eigen::Vector4d ComposeIdentityQuaternion()