# include<gtsam/navigation/ImuFactor.h> cannot comiled successfully
WZG3661 opened this issue · 1 comments
WZG3661 commented
Description
my include files like this:
#include <gtsam/geometry/Pose3.h>
#include <gtsam/navigation/ImuFactor.h>
#include <gtsam/nonlinear/ISAM2.h>
#include <gtsam/nonlinear/ISAM2Params.h>
#include <gtsam/nonlinear/Marginals.h>
#include <gtsam/nonlinear/Values.h>
#include <gtsam/slam/BetweenFactor.h>
#include <gtsam/slam/PriorFactor.h>
#include <gtsam/inference/Symbol.h>
and the complie errors:
In file included from /usr/local/include/gtsam/nonlinear/Values.h:28,
from /usr/local/include/gtsam/nonlinear/NonlinearFactor.h:24,
from /usr/local/include/gtsam/navigation/ImuFactor.h:25,
from /home/Work/open_vins/src/open_vins/ov_fusion/src/loose_fusion.cpp:19:
/usr/local/include/gtsam/base/GenericValue.h: In instantiation of ‘bool gtsam::GenericValue<T>::equals_(const gtsam::Value&, double) const [with T = Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, 3, 1> >]’:
/usr/local/include/gtsam/base/GenericValue.h:81:8: required from here
/usr/local/include/gtsam/base/GenericValue.h:85:29: error: incomplete type ‘gtsam::traits<Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, 3, 1> > >’ used in nested name specifier
85 | return traits<T>::Equals(this->value_, genericValue2.value_, tol);
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated due to -Wfatal-errors.
make[2]: *** [CMakeFiles/loose_fusion.dir/build.make:63: CMakeFiles/loose_fusion.dir/src/loose_fusion.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:205: CMakeFiles/loose_fusion.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
Environment
the gtsam version is 4.2a9
WZG3661 commented
I found writing like this would report error:
Values new_values;
new_values.insert(X(curr_key), results.at<Vector3>(curr_key)); // error
Vector3 temp=results.at<Vector3>(curr_key);
new_values.insert(X(curr_key), temp); // OK