PoseSpeedFactor.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. //
  2. // Created by zx on 23-6-20.
  3. //
  4. #ifndef GTSAM_TEST_POSESPEEDFACTOR_H
  5. #define GTSAM_TEST_POSESPEEDFACTOR_H
  6. #include <gtsam/geometry/Pose2.h>
  7. #include <gtsam/geometry/Pose3.h>
  8. #include <gtsam/nonlinear/NonlinearFactorGraph.h>
  9. #include <gtsam/nonlinear/Values.h>
  10. #include <gtsam/inference/Symbol.h>
  11. #include <gtsam/slam/PriorFactor.h>
  12. using namespace gtsam;
  13. class PoseSpeedFactor :public gtsam::NoiseModelFactor3<Pose2,Vector2,Pose2>{
  14. public:
  15. PoseSpeedFactor(Key p1, Key v1,Key p2,Vector3 dt, const SharedNoiseModel& model):
  16. NoiseModelFactor3<Pose2,Vector2,Pose2>(model, p1,v1,p2), dt_(dt) {}
  17. virtual Vector evaluateError(const Pose2& p1, const Vector2 & v1, const Pose2& p2,
  18. boost::optional<Matrix&> H1 = boost::none,
  19. boost::optional<Matrix&> H2 = boost::none,
  20. boost::optional<Matrix&> H3 = boost::none) const;
  21. virtual gtsam::NonlinearFactor::shared_ptr clone() const
  22. {
  23. return boost::static_pointer_cast<gtsam::NonlinearFactor>(
  24. gtsam::NonlinearFactor::shared_ptr(new PoseSpeedFactor(*this)));
  25. }
  26. protected:
  27. Vector3 dt_;
  28. };
  29. #endif //GTSAM_TEST_POSESPEEDFACTOR_H