35 using namespace gtsam;
49 Values linearizationPoints;
66 linearizationPoints.
insert(
X(0), x_initial);
67 linearFactorGraph->add(
X(0),
70 noiseModel::Unit::Create(2));
98 linearizationPoints.
insert(
X(1), x_initial);
99 linearFactorGraph->push_back(
factor2.linearize(linearizationPoints));
123 linearizationPoints.
update(
X(1), x1_predict);
146 linearFactorGraph->add(
149 x1Conditional->d() - x1Conditional->R() *
result[
X(1)],
150 x1Conditional->get_model());
180 linearFactorGraph->push_back(factor4.
linearize(linearizationPoints));
194 VectorValues updatedResult = updatedBayesNet->optimize();
195 Point2 x1_update = linearizationPoints.
at<
Point2>(
X(1)) + updatedResult[
X(1)];
199 linearizationPoints.
update(
X(1), x1_update);
213 linearFactorGraph->add(
215 updatedConditional->R(),
216 updatedConditional->d() - updatedConditional->R() * updatedResult[
X(1)],
217 updatedConditional->get_model());
230 linearizationPoints.
insert(
X(2), x1_update);
231 linearFactorGraph->push_back(factor6.
linearize(linearizationPoints));
238 VectorValues prediction2Result = predictionBayesNet2->optimize();
239 Point2 x2_predict = linearizationPoints.
at<
Point2>(
X(2)) + prediction2Result[
X(2)];
243 linearizationPoints.
update(
X(2), x2_predict);
250 linearFactorGraph->add(
253 x2Conditional->d() - x2Conditional->R() * prediction2Result[
X(2)],
254 x2Conditional->get_model());
266 linearFactorGraph->push_back(factor8.
linearize(linearizationPoints));
280 VectorValues updatedResult2 = updatedBayesNet2->optimize();
281 Point2 x2_update = linearizationPoints.
at<
Point2>(
X(2)) + updatedResult2[
X(2)];
285 linearizationPoints.
update(
X(2), x2_update);
297 linearFactorGraph->add(
299 updatedConditional2->R(),
300 updatedConditional2->d() - updatedConditional2->R() * updatedResult2[
X(2)],
301 updatedConditional2->get_model());
314 linearizationPoints.
insert(
X(3), x2_update);
315 linearFactorGraph->push_back(factor10.
linearize(linearizationPoints));
322 VectorValues prediction3Result = predictionBayesNet3->optimize();
323 Point2 x3_predict = linearizationPoints.
at<
Point2>(
X(3)) + prediction3Result[
X(3)];
327 linearizationPoints.
update(
X(3), x3_predict);
336 linearFactorGraph->add(
339 x3Conditional->d() - x3Conditional->R() * prediction3Result[
X(3)],
340 x3Conditional->get_model());
352 linearFactorGraph->push_back(factor12.
linearize(linearizationPoints));
366 VectorValues updatedResult3 = updatedBayesNet3->optimize();
367 Point2 x3_update = linearizationPoints.
at<
Point2>(
X(3)) + updatedResult3[
X(3)];
371 linearizationPoints.
update(
X(3), x3_update);