50 using namespace gtsam;
208 TEST (testSerializationSLAM, smallExample_linear) {
228 TEST (testSerializationSLAM, gaussianISAM) {
246 TEST (testSerializationSLAM, smallExample_nonlinear) {
266 Rot3 rot3(Rot3::RzRyRx(1.0, 2.0, 3.0));
269 Cal3_S2 cal3_s2(1.0, 2.0, 3.0, 4.0, 5.0);
270 Cal3DS2 cal3ds2(1.0, 2.0, 3.0, 4.0, 5.0,6.0, 7.0, 8.0, 9.0);
274 StereoCamera stereoCamera(pose3, boost::make_shared<Cal3_S2Stereo>(cal3_s2stereo));
277 Symbol a01(
'a',1), a02(
'a',2), a03(
'a',3), a04(
'a',4), a05(
'a',5),
278 a06(
'a',6), a07(
'a',7), a08(
'a',8), a09(
'a',9), a10(
'a',10),
279 a11(
'a',11), a12(
'a',12), a13(
'a',13), a14(
'a',14), a15(
'a',15);
280 Symbol b01(
'b',1), b02(
'b',2), b03(
'b',3), b04(
'b',4), b05(
'b',5),
281 b06(
'b',6), b07(
'b',7), b08(
'b',8), b09(
'b',9), b10(
'b',10),
282 b11(
'b',11), b12(
'b',12), b13(
'b',13), b14(
'b',14), b15(
'b',15);
285 values.
insert(a03, point2);
286 values.
insert(a04, stereoPoint2);
287 values.
insert(a05, point3);
290 values.
insert(a08, pose2);
291 values.
insert(a09, pose3);
292 values.
insert(a10, cal3_s2);
293 values.
insert(a11, cal3ds2);
294 values.
insert(a12, calibratedCamera);
295 values.
insert(a13, simpleCamera);
296 values.
insert(a14, stereoCamera);
310 noiseModel::Unit::Create(2));
365 GenericStereoFactor3D genericStereoFactor3D(stereoPoint2, model3, a09, a05, boost::make_shared<Cal3_S2Stereo>(cal3_s2stereo));
369 graph += priorFactorPoint2;
370 graph += priorFactorStereoPoint2;
371 graph += priorFactorPoint3;
372 graph += priorFactorRot2;
373 graph += priorFactorRot3;
374 graph += priorFactorPose2;
375 graph += priorFactorPose3;
376 graph += priorFactorCal3_S2;
377 graph += priorFactorCal3DS2;
378 graph += priorFactorCalibratedCamera;
379 graph += priorFactorStereoCamera;
381 graph += betweenFactorPoint2;
382 graph += betweenFactorPoint3;
383 graph += betweenFactorRot2;
384 graph += betweenFactorRot3;
385 graph += betweenFactorPose2;
386 graph += betweenFactorPose3;
388 graph += nonlinearEqualityPoint2;
389 graph += nonlinearEqualityStereoPoint2;
390 graph += nonlinearEqualityPoint3;
391 graph += nonlinearEqualityRot2;
392 graph += nonlinearEqualityRot3;
393 graph += nonlinearEqualityPose2;
394 graph += nonlinearEqualityPose3;
395 graph += nonlinearEqualityCal3_S2;
396 graph += nonlinearEqualityCal3DS2;
397 graph += nonlinearEqualityCalibratedCamera;
398 graph += nonlinearEqualityStereoCamera;
400 graph += rangeFactor2D;
401 graph += rangeFactor3D;
402 graph += rangeFactorPose2;
403 graph += rangeFactorPose3;
404 graph += rangeFactorCalibratedCameraPoint;
405 graph += rangeFactorPinholeCameraCal3_S2Point;
406 graph += rangeFactorCalibratedCamera;
407 graph += rangeFactorPinholeCameraCal3_S2;
409 graph += bearingRangeFactor2D;
411 graph += genericProjectionFactorCal3_S2;
412 graph += genericProjectionFactorCal3DS2;
414 graph += generalSFMFactorCal3_S2;
416 graph += generalSFMFactor2Cal3_S2;
418 graph += genericStereoFactor3D;
422 EXPECT(equalsObj<Symbol>(a01));
423 EXPECT(equalsObj<Symbol>(b02));
424 EXPECT(equalsObj<Values>(values));
425 EXPECT(equalsObj<NonlinearFactorGraph>(graph));
427 EXPECT(equalsObj<PriorFactorPoint2>(priorFactorPoint2));
428 EXPECT(equalsObj<PriorFactorStereoPoint2>(priorFactorStereoPoint2));
429 EXPECT(equalsObj<PriorFactorPoint3>(priorFactorPoint3));
430 EXPECT(equalsObj<PriorFactorRot2>(priorFactorRot2));
431 EXPECT(equalsObj<PriorFactorRot3>(priorFactorRot3));
432 EXPECT(equalsObj<PriorFactorPose2>(priorFactorPose2));
433 EXPECT(equalsObj<PriorFactorPose3>(priorFactorPose3));
434 EXPECT(equalsObj<PriorFactorCal3_S2>(priorFactorCal3_S2));
435 EXPECT(equalsObj<PriorFactorCal3DS2>(priorFactorCal3DS2));
436 EXPECT(equalsObj<PriorFactorCalibratedCamera>(priorFactorCalibratedCamera));
437 EXPECT(equalsObj<PriorFactorStereoCamera>(priorFactorStereoCamera));
439 EXPECT(equalsObj<BetweenFactorPoint2>(betweenFactorPoint2));
440 EXPECT(equalsObj<BetweenFactorPoint3>(betweenFactorPoint3));
441 EXPECT(equalsObj<BetweenFactorRot2>(betweenFactorRot2));
442 EXPECT(equalsObj<BetweenFactorRot3>(betweenFactorRot3));
443 EXPECT(equalsObj<BetweenFactorPose2>(betweenFactorPose2));
444 EXPECT(equalsObj<BetweenFactorPose3>(betweenFactorPose3));
446 EXPECT(equalsObj<NonlinearEqualityPoint2>(nonlinearEqualityPoint2));
447 EXPECT(equalsObj<NonlinearEqualityStereoPoint2>(nonlinearEqualityStereoPoint2));
448 EXPECT(equalsObj<NonlinearEqualityPoint3>(nonlinearEqualityPoint3));
449 EXPECT(equalsObj<NonlinearEqualityRot2>(nonlinearEqualityRot2));
450 EXPECT(equalsObj<NonlinearEqualityRot3>(nonlinearEqualityRot3));
451 EXPECT(equalsObj<NonlinearEqualityPose2>(nonlinearEqualityPose2));
452 EXPECT(equalsObj<NonlinearEqualityPose3>(nonlinearEqualityPose3));
453 EXPECT(equalsObj<NonlinearEqualityCal3_S2>(nonlinearEqualityCal3_S2));
454 EXPECT(equalsObj<NonlinearEqualityCal3DS2>(nonlinearEqualityCal3DS2));
455 EXPECT(equalsObj<NonlinearEqualityCalibratedCamera>(nonlinearEqualityCalibratedCamera));
456 EXPECT(equalsObj<NonlinearEqualityStereoCamera>(nonlinearEqualityStereoCamera));
458 EXPECT(equalsObj<RangeFactor2D>(rangeFactor2D));
459 EXPECT(equalsObj<RangeFactor3D>(rangeFactor3D));
460 EXPECT(equalsObj<RangeFactorPose2>(rangeFactorPose2));
461 EXPECT(equalsObj<RangeFactorPose3>(rangeFactorPose3));
462 EXPECT(equalsObj<RangeFactorCalibratedCameraPoint>(rangeFactorCalibratedCameraPoint));
463 EXPECT(equalsObj<RangeFactorPinholeCameraCal3_S2Point>(rangeFactorPinholeCameraCal3_S2Point));
464 EXPECT(equalsObj<RangeFactorCalibratedCamera>(rangeFactorCalibratedCamera));
465 EXPECT(equalsObj<RangeFactorPinholeCameraCal3_S2>(rangeFactorPinholeCameraCal3_S2));
467 EXPECT(equalsObj<BearingRangeFactor2D>(bearingRangeFactor2D));
469 EXPECT(equalsObj<GenericProjectionFactorCal3_S2>(genericProjectionFactorCal3_S2));
470 EXPECT(equalsObj<GenericProjectionFactorCal3DS2>(genericProjectionFactorCal3DS2));
472 EXPECT(equalsObj<GeneralSFMFactorCal3_S2>(generalSFMFactorCal3_S2));
474 EXPECT(equalsObj<GeneralSFMFactor2Cal3_S2>(generalSFMFactor2Cal3_S2));
476 EXPECT(equalsObj<GenericStereoFactor3D>(genericStereoFactor3D));
480 EXPECT(equalsXML<Symbol>(a01));
481 EXPECT(equalsXML<Symbol>(b02));
482 EXPECT(equalsXML<Values>(values));
483 EXPECT(equalsXML<NonlinearFactorGraph>(graph));
485 EXPECT(equalsXML<PriorFactorPoint2>(priorFactorPoint2));
486 EXPECT(equalsXML<PriorFactorStereoPoint2>(priorFactorStereoPoint2));
487 EXPECT(equalsXML<PriorFactorPoint3>(priorFactorPoint3));
488 EXPECT(equalsXML<PriorFactorRot2>(priorFactorRot2));
489 EXPECT(equalsXML<PriorFactorRot3>(priorFactorRot3));
490 EXPECT(equalsXML<PriorFactorPose2>(priorFactorPose2));
491 EXPECT(equalsXML<PriorFactorPose3>(priorFactorPose3));
492 EXPECT(equalsXML<PriorFactorCal3_S2>(priorFactorCal3_S2));
493 EXPECT(equalsXML<PriorFactorCal3DS2>(priorFactorCal3DS2));
494 EXPECT(equalsXML<PriorFactorCalibratedCamera>(priorFactorCalibratedCamera));
495 EXPECT(equalsXML<PriorFactorStereoCamera>(priorFactorStereoCamera));
497 EXPECT(equalsXML<BetweenFactorPoint2>(betweenFactorPoint2));
498 EXPECT(equalsXML<BetweenFactorPoint3>(betweenFactorPoint3));
499 EXPECT(equalsXML<BetweenFactorRot2>(betweenFactorRot2));
500 EXPECT(equalsXML<BetweenFactorRot3>(betweenFactorRot3));
501 EXPECT(equalsXML<BetweenFactorPose2>(betweenFactorPose2));
502 EXPECT(equalsXML<BetweenFactorPose3>(betweenFactorPose3));
504 EXPECT(equalsXML<NonlinearEqualityPoint2>(nonlinearEqualityPoint2));
505 EXPECT(equalsXML<NonlinearEqualityStereoPoint2>(nonlinearEqualityStereoPoint2));
506 EXPECT(equalsXML<NonlinearEqualityPoint3>(nonlinearEqualityPoint3));
507 EXPECT(equalsXML<NonlinearEqualityRot2>(nonlinearEqualityRot2));
508 EXPECT(equalsXML<NonlinearEqualityRot3>(nonlinearEqualityRot3));
509 EXPECT(equalsXML<NonlinearEqualityPose2>(nonlinearEqualityPose2));
510 EXPECT(equalsXML<NonlinearEqualityPose3>(nonlinearEqualityPose3));
511 EXPECT(equalsXML<NonlinearEqualityCal3_S2>(nonlinearEqualityCal3_S2));
512 EXPECT(equalsXML<NonlinearEqualityCal3DS2>(nonlinearEqualityCal3DS2));
513 EXPECT(equalsXML<NonlinearEqualityCalibratedCamera>(nonlinearEqualityCalibratedCamera));
514 EXPECT(equalsXML<NonlinearEqualityStereoCamera>(nonlinearEqualityStereoCamera));
516 EXPECT(equalsXML<RangeFactor2D>(rangeFactor2D));
517 EXPECT(equalsXML<RangeFactor3D>(rangeFactor3D));
518 EXPECT(equalsXML<RangeFactorPose2>(rangeFactorPose2));
519 EXPECT(equalsXML<RangeFactorPose3>(rangeFactorPose3));
520 EXPECT(equalsXML<RangeFactorCalibratedCameraPoint>(rangeFactorCalibratedCameraPoint));
521 EXPECT(equalsXML<RangeFactorPinholeCameraCal3_S2Point>(rangeFactorPinholeCameraCal3_S2Point));
522 EXPECT(equalsXML<RangeFactorCalibratedCamera>(rangeFactorCalibratedCamera));
523 EXPECT(equalsXML<RangeFactorPinholeCameraCal3_S2>(rangeFactorPinholeCameraCal3_S2));
525 EXPECT(equalsXML<BearingRangeFactor2D>(bearingRangeFactor2D));
527 EXPECT(equalsXML<GenericProjectionFactorCal3_S2>(genericProjectionFactorCal3_S2));
528 EXPECT(equalsXML<GenericProjectionFactorCal3DS2>(genericProjectionFactorCal3DS2));
530 EXPECT(equalsXML<GeneralSFMFactorCal3_S2>(generalSFMFactorCal3_S2));
532 EXPECT(equalsXML<GeneralSFMFactor2Cal3_S2>(generalSFMFactor2Cal3_S2));
534 EXPECT(equalsXML<GenericStereoFactor3D>(genericStereoFactor3D));
538 EXPECT(equalsBinary<Symbol>(a01));
539 EXPECT(equalsBinary<Symbol>(b02));
540 EXPECT(equalsBinary<Values>(values));
541 EXPECT(equalsBinary<NonlinearFactorGraph>(graph));
543 EXPECT(equalsBinary<PriorFactorPoint2>(priorFactorPoint2));
544 EXPECT(equalsBinary<PriorFactorStereoPoint2>(priorFactorStereoPoint2));
545 EXPECT(equalsBinary<PriorFactorPoint3>(priorFactorPoint3));
546 EXPECT(equalsBinary<PriorFactorRot2>(priorFactorRot2));
547 EXPECT(equalsBinary<PriorFactorRot3>(priorFactorRot3));
548 EXPECT(equalsBinary<PriorFactorPose2>(priorFactorPose2));
549 EXPECT(equalsBinary<PriorFactorPose3>(priorFactorPose3));
550 EXPECT(equalsBinary<PriorFactorCal3_S2>(priorFactorCal3_S2));
551 EXPECT(equalsBinary<PriorFactorCal3DS2>(priorFactorCal3DS2));
552 EXPECT(equalsBinary<PriorFactorCalibratedCamera>(priorFactorCalibratedCamera));
553 EXPECT(equalsBinary<PriorFactorStereoCamera>(priorFactorStereoCamera));
555 EXPECT(equalsBinary<BetweenFactorPoint2>(betweenFactorPoint2));
556 EXPECT(equalsBinary<BetweenFactorPoint3>(betweenFactorPoint3));
557 EXPECT(equalsBinary<BetweenFactorRot2>(betweenFactorRot2));
558 EXPECT(equalsBinary<BetweenFactorRot3>(betweenFactorRot3));
559 EXPECT(equalsBinary<BetweenFactorPose2>(betweenFactorPose2));
560 EXPECT(equalsBinary<BetweenFactorPose3>(betweenFactorPose3));
562 EXPECT(equalsBinary<NonlinearEqualityPoint2>(nonlinearEqualityPoint2));
563 EXPECT(equalsBinary<NonlinearEqualityStereoPoint2>(nonlinearEqualityStereoPoint2));
564 EXPECT(equalsBinary<NonlinearEqualityPoint3>(nonlinearEqualityPoint3));
565 EXPECT(equalsBinary<NonlinearEqualityRot2>(nonlinearEqualityRot2));
566 EXPECT(equalsBinary<NonlinearEqualityRot3>(nonlinearEqualityRot3));
567 EXPECT(equalsBinary<NonlinearEqualityPose2>(nonlinearEqualityPose2));
568 EXPECT(equalsBinary<NonlinearEqualityPose3>(nonlinearEqualityPose3));
569 EXPECT(equalsBinary<NonlinearEqualityCal3_S2>(nonlinearEqualityCal3_S2));
570 EXPECT(equalsBinary<NonlinearEqualityCal3DS2>(nonlinearEqualityCal3DS2));
571 EXPECT(equalsBinary<NonlinearEqualityCalibratedCamera>(nonlinearEqualityCalibratedCamera));
572 EXPECT(equalsBinary<NonlinearEqualityStereoCamera>(nonlinearEqualityStereoCamera));
574 EXPECT(equalsBinary<RangeFactor2D>(rangeFactor2D));
575 EXPECT(equalsBinary<RangeFactor3D>(rangeFactor3D));
576 EXPECT(equalsBinary<RangeFactorPose2>(rangeFactorPose2));
577 EXPECT(equalsBinary<RangeFactorPose3>(rangeFactorPose3));
578 EXPECT(equalsBinary<RangeFactorCalibratedCameraPoint>(rangeFactorCalibratedCameraPoint));
579 EXPECT(equalsBinary<RangeFactorPinholeCameraCal3_S2Point>(rangeFactorPinholeCameraCal3_S2Point));
580 EXPECT(equalsBinary<RangeFactorCalibratedCamera>(rangeFactorCalibratedCamera));
581 EXPECT(equalsBinary<RangeFactorPinholeCameraCal3_S2>(rangeFactorPinholeCameraCal3_S2));
583 EXPECT(equalsBinary<BearingRangeFactor2D>(bearingRangeFactor2D));
585 EXPECT(equalsBinary<GenericProjectionFactorCal3_S2>(genericProjectionFactorCal3_S2));
586 EXPECT(equalsBinary<GenericProjectionFactorCal3DS2>(genericProjectionFactorCal3DS2));
588 EXPECT(equalsBinary<GeneralSFMFactorCal3_S2>(generalSFMFactorCal3_S2));
590 EXPECT(equalsBinary<GeneralSFMFactor2Cal3_S2>(generalSFMFactor2Cal3_S2));
592 EXPECT(equalsBinary<GenericStereoFactor3D>(genericStereoFactor3D));
RangeFactor< Pose2, Pose2 > RangeFactorPose2
NonlinearEquality< StereoPoint2 > NonlinearEqualityStereoPoint2
bool equalsDereferenced(const T &input)
PriorFactor< Rot3 > PriorFactorRot3
RangeFactor< PinholeCameraCal3_S2, Point3 > RangeFactorPinholeCameraCal3_S2Point
NonlinearEquality< Rot2 > NonlinearEqualityRot2
GaussianFactorGraph createSmoother(int T)
static int runAllTests(TestResult &result)
This is the base class for all measurement types.
gtsam::GenericStereoFactor< gtsam::Pose3, gtsam::Point3 > GenericStereoFactor3D
GaussianFactorGraph createGaussianFactorGraph()
NonlinearEquality< Pose3 > NonlinearEqualityPose3
bool equalsDereferencedXML(const T &input=T())
RangeFactor< CalibratedCamera, Point3 > RangeFactorCalibratedCameraPoint
RangeFactor< PinholeCameraCal3_S2, PinholeCameraCal3_S2 > RangeFactorPinholeCameraCal3_S2
void insert(Key j, const Value &val)
static enum @843 ordering
GenericProjectionFactor< Pose3, Point3, Cal3_S2 > GenericProjectionFactorCal3_S2
boost::shared_ptr< BayesTreeType > eliminateMultifrontal(OptionalOrderingType orderingType=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const
BearingRangeFactor< Pose3, Point3 > BearingRangeFactor3D
bool equalsObj(const T &input=T())
BearingRangeFactor< Pose2, Point2 > BearingRangeFactor2D
RangeFactor< Pose3, Point3 > RangeFactor3D
NonlinearEquality< PinholeCameraCal3_S2 > NonlinearEqualityPinholeCameraCal3_S2
Tukey implements the "Tukey" robust error model (Zhang97ivc)
Calibration of a camera with radial distortion, calculations in base class Cal3DS2_Base.
GaussianFactorGraph factors(list_of(factor1)(factor2)(factor3))
bool equalsDereferencedBinary(const T &input=T())
Huber implements the "Huber" robust error model (Zhang97ivc)
NonlinearEquality< StereoCamera > NonlinearEqualityStereoCamera
PriorFactor< Rot2 > PriorFactorRot2
NonlinearFactorGraph graph
GenericProjectionFactor< Pose3, Point3, Cal3DS2 > GenericProjectionFactorCal3DS2
bool equalsXML(const T &input=T())
bool equalsBinary(const T &input=T())
noiseModel::Isotropic::shared_ptr model1
PriorFactor< CalibratedCamera > PriorFactorCalibratedCamera
Fair implements the "Fair" robust error model (Zhang97ivc)
BetweenFactor< Rot2 > BetweenFactorRot2
Null class should behave as Gaussian.
Base class for all pinhole cameras.
GTSAM_VALUE_EXPORT(gtsam::Point2)
RangeFactor< Pose3, Pose3 > RangeFactorPose3
GaussianBayesNet createSmallGaussianBayesNet()
BetweenFactor< Point2 > BetweenFactorPoint2
gtsam::GeneralSFMFactor2< gtsam::Cal3_S2 > GeneralSFMFactor2Cal3_S2
NonlinearEquality< Cal3_S2 > NonlinearEqualityCal3_S2
BetweenFactor< Point3 > BetweenFactorPoint3
#define EXPECT(condition)
static Pose3 pose3(rt3, pt3)
BOOST_CLASS_EXPORT_GUID(gtsam::noiseModel::Constrained,"gtsam_noiseModel_Constrained")
PriorFactor< Cal3DS2 > PriorFactorCal3DS2
BetweenFactor< Pose2 > BetweenFactorPose2
const SharedNoiseModel model3
NonlinearISAM isam(relinearizeInterval)
static const Point3 point3(0.08, 0.08, 0.0)
NonlinearFactorGraph createNonlinearFactorGraph(const SharedNoiseModel &noiseModel1=impl::kSigma0_1, const SharedNoiseModel &noiseModel2=impl::kSigma0_2)
static const Point3 point2(-0.08, 0.08, 0.0)
RangeFactor< Pose2, Point2 > RangeFactor2D
PriorFactor< StereoCamera > PriorFactorStereoCamera
NonlinearEquality< Pose2 > NonlinearEqualityPose2
Basic bearing factor from 2D measurement.
NonlinearEquality< Point3 > NonlinearEqualityPoint3
PriorFactor< StereoPoint2 > PriorFactorStereoPoint2
Calibrated camera for which only pose is unknown.
noiseModel::Diagonal::shared_ptr SharedDiagonal
RangeFactor< CalibratedCamera, CalibratedCamera > RangeFactorCalibratedCamera
PriorFactor< Point2 > PriorFactorPoint2
NonlinearEquality< CalibratedCamera > NonlinearEqualityCalibratedCamera
The most common 5DOF 3D->2D calibration + Stereo baseline.
PriorFactor< Point3 > PriorFactorPoint3
PriorFactor< Pose3 > PriorFactorPose3
A simple camera class with a Cal3_S2 calibration.
A Stereo Camera based on two Simple Cameras.
NonlinearEquality< Rot3 > NonlinearEqualityRot3
PriorFactor< Cal3_S2 > PriorFactorCal3_S2
PriorFactor< PinholeCameraCal3_S2 > PriorFactorPinholeCameraCal3_S2
A 2D stereo point (uL,uR,v)
A Gaussian factor using the canonical parameters (information form)
Create small example with two poses and one landmark.
TEST(testSerializationSLAM, smallExample_linear)
BetweenFactor< Rot3 > BetweenFactorRot3
PriorFactor< Pose2 > PriorFactorPose2
a general SFM factor with an unknown calibration
gtsam::GeneralSFMFactor< gtsam::PinholeCameraCal3DS2, gtsam::Point3 > GeneralSFMFactorCal3DS2
gtsam::GeneralSFMFactor< gtsam::PinholeCameraCal3_S2, gtsam::Point3 > GeneralSFMFactorCal3_S2
noiseModel::Base::shared_ptr SharedNoiseModel
The most common 5DOF 3D->2D calibration.
3D rotation represented as a rotation matrix or quaternion
NonlinearEquality< Cal3DS2 > NonlinearEqualityCal3DS2
NonlinearEquality< Point2 > NonlinearEqualityPoint2
BetweenFactor< Pose3 > BetweenFactorPose3