Windows Fixes (#904)

release/4.3a0
Varun Agrawal 2021-12-09 09:37:21 -05:00 committed by GitHub
parent 7dee503739
commit b47f46a6f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 72 additions and 58 deletions

View File

@ -26,7 +26,11 @@ jobs:
windows-2019-cl, windows-2019-cl,
] ]
build_type: [Debug, Release] build_type: [
Debug,
#TODO(Varun) The release build takes over 2.5 hours, need to figure out why.
# Release
]
build_unstable: [ON] build_unstable: [ON]
include: include:
#TODO This build fails, need to understand why. #TODO This build fails, need to understand why.
@ -90,13 +94,18 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Build - name: Configuration
run: | run: |
cmake -E remove_directory build cmake -E remove_directory build
cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT}\lib" cmake -B build -S . -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DBOOST_ROOT="${env:BOOST_ROOT}" -DBOOST_INCLUDEDIR="${env:BOOST_ROOT}\boost\include" -DBOOST_LIBRARYDIR="${env:BOOST_ROOT}\lib"
cmake --build build --config ${{ matrix.build_type }} --target gtsam
cmake --build build --config ${{ matrix.build_type }} --target gtsam_unstable - name: Build
cmake --build build --config ${{ matrix.build_type }} --target wrap run: |
cmake --build build --config ${{ matrix.build_type }} --target check.base # Since Visual Studio is a multi-generator, we need to use --config
cmake --build build --config ${{ matrix.build_type }} --target check.base_unstable # https://stackoverflow.com/a/24470998/1236990
cmake --build build --config ${{ matrix.build_type }} --target check.linear cmake --build build -j 4 --config ${{ matrix.build_type }} --target gtsam
cmake --build build -j 4 --config ${{ matrix.build_type }} --target gtsam_unstable
cmake --build build -j 4 --config ${{ matrix.build_type }} --target wrap
cmake --build build -j 4 --config ${{ matrix.build_type }} --target check.base
cmake --build build -j 4 --config ${{ matrix.build_type }} --target check.base_unstable
cmake --build build -j 4 --config ${{ matrix.build_type }} --target check.linear

View File

@ -282,7 +282,7 @@ public:
* which are objects in non-linear manifolds (Lie groups). * which are objects in non-linear manifolds (Lie groups).
*/ */
template<class VALUE> template<class VALUE>
class NoiseModelFactor1: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor1: public NoiseModelFactor {
public: public:
@ -366,7 +366,7 @@ private:
/** A convenient base class for creating your own NoiseModelFactor with 2 /** A convenient base class for creating your own NoiseModelFactor with 2
* variables. To derive from this class, implement evaluateError(). */ * variables. To derive from this class, implement evaluateError(). */
template<class VALUE1, class VALUE2> template<class VALUE1, class VALUE2>
class NoiseModelFactor2: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor2: public NoiseModelFactor {
public: public:
@ -441,7 +441,7 @@ private:
/** A convenient base class for creating your own NoiseModelFactor with 3 /** A convenient base class for creating your own NoiseModelFactor with 3
* variables. To derive from this class, implement evaluateError(). */ * variables. To derive from this class, implement evaluateError(). */
template<class VALUE1, class VALUE2, class VALUE3> template<class VALUE1, class VALUE2, class VALUE3>
class NoiseModelFactor3: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor3: public NoiseModelFactor {
public: public:
@ -518,7 +518,7 @@ private:
/** A convenient base class for creating your own NoiseModelFactor with 4 /** A convenient base class for creating your own NoiseModelFactor with 4
* variables. To derive from this class, implement evaluateError(). */ * variables. To derive from this class, implement evaluateError(). */
template<class VALUE1, class VALUE2, class VALUE3, class VALUE4> template<class VALUE1, class VALUE2, class VALUE3, class VALUE4>
class NoiseModelFactor4: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor4: public NoiseModelFactor {
public: public:
@ -599,7 +599,7 @@ private:
/** A convenient base class for creating your own NoiseModelFactor with 5 /** A convenient base class for creating your own NoiseModelFactor with 5
* variables. To derive from this class, implement evaluateError(). */ * variables. To derive from this class, implement evaluateError(). */
template<class VALUE1, class VALUE2, class VALUE3, class VALUE4, class VALUE5> template<class VALUE1, class VALUE2, class VALUE3, class VALUE4, class VALUE5>
class NoiseModelFactor5: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor5: public NoiseModelFactor {
public: public:
@ -684,7 +684,7 @@ private:
/** A convenient base class for creating your own NoiseModelFactor with 6 /** A convenient base class for creating your own NoiseModelFactor with 6
* variables. To derive from this class, implement evaluateError(). */ * variables. To derive from this class, implement evaluateError(). */
template<class VALUE1, class VALUE2, class VALUE3, class VALUE4, class VALUE5, class VALUE6> template<class VALUE1, class VALUE2, class VALUE3, class VALUE4, class VALUE5, class VALUE6>
class NoiseModelFactor6: public NoiseModelFactor { class GTSAM_EXPORT NoiseModelFactor6: public NoiseModelFactor {
public: public:

View File

@ -48,7 +48,7 @@ namespace gtsam {
unit translations in a projection direction. unit translations in a projection direction.
@addtogroup SFM @addtogroup SFM
*/ */
class MFAS { class GTSAM_EXPORT MFAS {
public: public:
// used to represent edges between two nodes in the graph. When used in // used to represent edges between two nodes in the graph. When used in
// translation averaging for global SfM // translation averaging for global SfM

View File

@ -47,7 +47,7 @@ namespace gtsam {
* @tparam CAMERA should behave like a PinholeCamera. * @tparam CAMERA should behave like a PinholeCamera.
*/ */
template<class CAMERA> template<class CAMERA>
class SmartFactorBase: public NonlinearFactor { class GTSAM_EXPORT SmartFactorBase: public NonlinearFactor {
private: private:
typedef NonlinearFactor Base; typedef NonlinearFactor Base;

View File

@ -41,11 +41,10 @@ namespace gtsam {
* If the calibration should be optimized, as well, use SmartProjectionFactor instead! * If the calibration should be optimized, as well, use SmartProjectionFactor instead!
* @addtogroup SLAM * @addtogroup SLAM
*/ */
template<class CALIBRATION> template <class CALIBRATION>
class SmartProjectionPoseFactor: public SmartProjectionFactor< class GTSAM_EXPORT SmartProjectionPoseFactor
PinholePose<CALIBRATION> > { : public SmartProjectionFactor<PinholePose<CALIBRATION> > {
private:
private:
typedef PinholePose<CALIBRATION> Camera; typedef PinholePose<CALIBRATION> Camera;
typedef SmartProjectionFactor<Camera> Base; typedef SmartProjectionFactor<Camera> Base;
typedef SmartProjectionPoseFactor<CALIBRATION> This; typedef SmartProjectionPoseFactor<CALIBRATION> This;
@ -156,7 +155,6 @@ public:
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
ar & BOOST_SERIALIZATION_NVP(K_); ar & BOOST_SERIALIZATION_NVP(K_);
} }
}; };
// end of class declaration // end of class declaration

View File

@ -9,6 +9,8 @@
#include <gtsam/geometry/OrientedPlane3.h> #include <gtsam/geometry/OrientedPlane3.h>
#include <gtsam/nonlinear/NonlinearFactor.h> #include <gtsam/nonlinear/NonlinearFactor.h>
#include <gtsam_unstable/dllexport.h>
#include <string> #include <string>
namespace gtsam { namespace gtsam {
@ -32,9 +34,9 @@ namespace gtsam {
* a local linearisation point for the plane. The plane is representated and * a local linearisation point for the plane. The plane is representated and
* optimized in x1 frame in the optimization. * optimized in x1 frame in the optimization.
*/ */
class LocalOrientedPlane3Factor: public NoiseModelFactor3<Pose3, Pose3, class GTSAM_UNSTABLE_EXPORT LocalOrientedPlane3Factor
OrientedPlane3> { : public NoiseModelFactor3<Pose3, Pose3, OrientedPlane3> {
protected: protected:
OrientedPlane3 measured_p_; OrientedPlane3 measured_p_;
typedef NoiseModelFactor3<Pose3, Pose3, OrientedPlane3> Base; typedef NoiseModelFactor3<Pose3, Pose3, OrientedPlane3> Base;
public: public:

View File

@ -18,9 +18,11 @@
#pragma once #pragma once
#include <gtsam/nonlinear/NonlinearFactor.h>
#include <gtsam/geometry/PinholeCamera.h>
#include <gtsam/geometry/Cal3_S2.h> #include <gtsam/geometry/Cal3_S2.h>
#include <gtsam/geometry/PinholeCamera.h>
#include <gtsam/nonlinear/NonlinearFactor.h>
#include <gtsam_unstable/dllexport.h>
#include <boost/optional.hpp> #include <boost/optional.hpp>
namespace gtsam { namespace gtsam {
@ -30,28 +32,27 @@ namespace gtsam {
* estimates the body pose, body-camera transform, 3D landmark, and calibration. * estimates the body pose, body-camera transform, 3D landmark, and calibration.
* @addtogroup SLAM * @addtogroup SLAM
*/ */
template<class POSE, class LANDMARK, class CALIBRATION = Cal3_S2> template <class POSE, class LANDMARK, class CALIBRATION = Cal3_S2>
class ProjectionFactorPPPC: public NoiseModelFactor4<POSE, POSE, LANDMARK, CALIBRATION> { class GTSAM_UNSTABLE_EXPORT ProjectionFactorPPPC
protected: : public NoiseModelFactor4<POSE, POSE, LANDMARK, CALIBRATION> {
protected:
Point2 measured_; ///< 2D measurement
Point2 measured_; ///< 2D measurement // verbosity handling for Cheirality Exceptions
bool throwCheirality_; ///< If true, rethrows Cheirality exceptions (default: false)
bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false)
// verbosity handling for Cheirality Exceptions public:
bool throwCheirality_; ///< If true, rethrows Cheirality exceptions (default: false) /// shorthand for base class type
bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false) typedef NoiseModelFactor4<POSE, POSE, LANDMARK, CALIBRATION> Base;
public: /// shorthand for this class
typedef ProjectionFactorPPPC<POSE, LANDMARK, CALIBRATION> This;
/// shorthand for base class type /// shorthand for a smart pointer to a factor
typedef NoiseModelFactor4<POSE, POSE, LANDMARK, CALIBRATION> Base; typedef boost::shared_ptr<This> shared_ptr;
/// shorthand for this class /// Default constructor
typedef ProjectionFactorPPPC<POSE, LANDMARK, CALIBRATION> This;
/// shorthand for a smart pointer to a factor
typedef boost::shared_ptr<This> shared_ptr;
/// Default constructor
ProjectionFactorPPPC() : ProjectionFactorPPPC() :
measured_(0.0, 0.0), throwCheirality_(false), verboseCheirality_(false) { measured_(0.0, 0.0), throwCheirality_(false), verboseCheirality_(false) {
} }
@ -168,7 +169,7 @@ namespace gtsam {
ar & BOOST_SERIALIZATION_NVP(throwCheirality_); ar & BOOST_SERIALIZATION_NVP(throwCheirality_);
ar & BOOST_SERIALIZATION_NVP(verboseCheirality_); ar & BOOST_SERIALIZATION_NVP(verboseCheirality_);
} }
}; };
/// traits /// traits
template<class POSE, class LANDMARK, class CALIBRATION> template<class POSE, class LANDMARK, class CALIBRATION>

View File

@ -21,6 +21,7 @@
#include <gtsam/geometry/CalibratedCamera.h> #include <gtsam/geometry/CalibratedCamera.h>
#include <gtsam/geometry/PinholeCamera.h> #include <gtsam/geometry/PinholeCamera.h>
#include <gtsam/nonlinear/NonlinearFactor.h> #include <gtsam/nonlinear/NonlinearFactor.h>
#include <gtsam_unstable/dllexport.h>
#include <boost/optional.hpp> #include <boost/optional.hpp>
@ -40,7 +41,7 @@ namespace gtsam {
* @addtogroup SLAM * @addtogroup SLAM
*/ */
class ProjectionFactorRollingShutter class GTSAM_UNSTABLE_EXPORT ProjectionFactorRollingShutter
: public NoiseModelFactor3<Pose3, Pose3, Point3> { : public NoiseModelFactor3<Pose3, Pose3, Point3> {
protected: protected:
// Keep a copy of measurement and calibration for I/O // Keep a copy of measurement and calibration for I/O

View File

@ -20,6 +20,7 @@
#include <gtsam/geometry/CameraSet.h> #include <gtsam/geometry/CameraSet.h>
#include <gtsam/slam/SmartProjectionFactor.h> #include <gtsam/slam/SmartProjectionFactor.h>
#include <gtsam_unstable/dllexport.h>
namespace gtsam { namespace gtsam {
/** /**
@ -41,7 +42,7 @@ namespace gtsam {
* @addtogroup SLAM * @addtogroup SLAM
*/ */
template <class CAMERA> template <class CAMERA>
class SmartProjectionPoseFactorRollingShutter class GTSAM_UNSTABLE_EXPORT SmartProjectionPoseFactorRollingShutter
: public SmartProjectionFactor<CAMERA> { : public SmartProjectionFactor<CAMERA> {
private: private:
typedef SmartProjectionFactor<CAMERA> Base; typedef SmartProjectionFactor<CAMERA> Base;

View File

@ -20,18 +20,18 @@
#pragma once #pragma once
#include <gtsam/slam/SmartFactorBase.h>
#include <gtsam/slam/SmartFactorParams.h>
#include <gtsam/geometry/triangulation.h>
#include <gtsam/geometry/Pose3.h> #include <gtsam/geometry/Pose3.h>
#include <gtsam/geometry/StereoCamera.h> #include <gtsam/geometry/StereoCamera.h>
#include <gtsam/slam/StereoFactor.h> #include <gtsam/geometry/triangulation.h>
#include <gtsam/inference/Symbol.h> #include <gtsam/inference/Symbol.h>
#include <gtsam/slam/SmartFactorBase.h>
#include <gtsam/slam/SmartFactorParams.h>
#include <gtsam/slam/StereoFactor.h>
#include <gtsam/slam/dataset.h> #include <gtsam/slam/dataset.h>
#include <gtsam_unstable/dllexport.h>
#include <boost/optional.hpp>
#include <boost/make_shared.hpp> #include <boost/make_shared.hpp>
#include <boost/optional.hpp>
#include <vector> #include <vector>
namespace gtsam { namespace gtsam {
@ -49,8 +49,9 @@ typedef SmartProjectionParams SmartStereoProjectionParams;
* If you'd like to store poses in values instead of cameras, use * If you'd like to store poses in values instead of cameras, use
* SmartStereoProjectionPoseFactor instead * SmartStereoProjectionPoseFactor instead
*/ */
class SmartStereoProjectionFactor: public SmartFactorBase<StereoCamera> { class GTSAM_UNSTABLE_EXPORT SmartStereoProjectionFactor
private: : public SmartFactorBase<StereoCamera> {
private:
typedef SmartFactorBase<StereoCamera> Base; typedef SmartFactorBase<StereoCamera> Base;

View File

@ -40,7 +40,8 @@ namespace gtsam {
* are Pose3 variables). * are Pose3 variables).
* @addtogroup SLAM * @addtogroup SLAM
*/ */
class SmartStereoProjectionFactorPP : public SmartStereoProjectionFactor { class GTSAM_UNSTABLE_EXPORT SmartStereoProjectionFactorPP
: public SmartStereoProjectionFactor {
protected: protected:
/// shared pointer to calibration object (one for each camera) /// shared pointer to calibration object (one for each camera)
std::vector<boost::shared_ptr<Cal3_S2Stereo>> K_all_; std::vector<boost::shared_ptr<Cal3_S2Stereo>> K_all_;
@ -294,7 +295,6 @@ class SmartStereoProjectionFactorPP : public SmartStereoProjectionFactor {
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
ar & BOOST_SERIALIZATION_NVP(K_all_); ar & BOOST_SERIALIZATION_NVP(K_all_);
} }
}; };
// end of class declaration // end of class declaration

View File

@ -43,7 +43,8 @@ namespace gtsam {
* This factor requires that values contains the involved poses (Pose3). * This factor requires that values contains the involved poses (Pose3).
* @addtogroup SLAM * @addtogroup SLAM
*/ */
class SmartStereoProjectionPoseFactor : public SmartStereoProjectionFactor { class GTSAM_UNSTABLE_EXPORT SmartStereoProjectionPoseFactor
: public SmartStereoProjectionFactor {
protected: protected:
/// shared pointer to calibration object (one for each camera) /// shared pointer to calibration object (one for each camera)
std::vector<boost::shared_ptr<Cal3_S2Stereo>> K_all_; std::vector<boost::shared_ptr<Cal3_S2Stereo>> K_all_;