No longer need to cast function pointers for expressions on Windows, with Optional Jacobian
parent
137ea64200
commit
1e778cf77b
|
@ -8,25 +8,11 @@
|
|||
#pragma once
|
||||
|
||||
#include <gtsam/nonlinear/Expression.h>
|
||||
#include <gtsam/geometry/Pose2.h>
|
||||
#include <gtsam/geometry/Pose3.h>
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
namespace gtsam {
|
||||
|
||||
// 2D Geometry
|
||||
typedef Expression<Pose2> Pose2_;
|
||||
|
||||
Pose2_ between(const Pose2_& x, const Pose2_& p) {
|
||||
Pose2(Pose2::*transform)(const Pose2& p,
|
||||
OptionalJacobian<3, 3> H1,
|
||||
OptionalJacobian<3, 3> H2) const = &Pose2::between;
|
||||
|
||||
return Pose2_(x, transform, p);
|
||||
}
|
||||
|
||||
// Generics
|
||||
|
||||
template<typename T>
|
||||
Expression<T> between(const Expression<T>& t1, const Expression<T>& t2) {
|
||||
return Expression<T>(t1, &T::between, t2);
|
||||
|
|
|
@ -20,10 +20,7 @@ typedef Expression<Rot2> Rot2_;
|
|||
typedef Expression<Pose2> Pose2_;
|
||||
|
||||
Point2_ transform_to(const Pose2_& x, const Point2_& p) {
|
||||
Point2 (Pose2::*transform)(const Point2& p, OptionalJacobian<2, 3> H1,
|
||||
OptionalJacobian<2, 2> H2) const = &Pose2::transform_to;
|
||||
|
||||
return Point2_(x, transform, p);
|
||||
return Point2_(x, &Pose2::transform_to, p);
|
||||
}
|
||||
|
||||
// 3D Geometry
|
||||
|
@ -33,11 +30,7 @@ typedef Expression<Rot3> Rot3_;
|
|||
typedef Expression<Pose3> Pose3_;
|
||||
|
||||
Point3_ transform_to(const Pose3_& x, const Point3_& p) {
|
||||
|
||||
Point3 (Pose3::*transform)(const Point3& p, OptionalJacobian<3, 6> Dpose,
|
||||
OptionalJacobian<3, 3> Dpoint) const = &Pose3::transform_to;
|
||||
|
||||
return Point3_(x, transform, p);
|
||||
return Point3_(x, &Pose3::transform_to, p);
|
||||
}
|
||||
|
||||
// Projection
|
||||
|
@ -59,11 +52,7 @@ Point2_ project3(const Pose3_& x, const Point3_& p, const Cal3_S2_& K) {
|
|||
|
||||
template<class CAL>
|
||||
Point2_ uncalibrate(const Expression<CAL>& K, const Point2_& xy_hat) {
|
||||
Point2(CAL::*uncal)(const Point2& p,
|
||||
OptionalJacobian<2, 5> Dpose,
|
||||
OptionalJacobian<2, 2> Dpoint) const = &CAL::uncalibrate;
|
||||
|
||||
return Point2_(K, uncal, xy_hat);
|
||||
return Point2_(K, &CAL::uncalibrate, xy_hat);
|
||||
}
|
||||
|
||||
} // \namespace gtsam
|
||||
|
|
Loading…
Reference in New Issue