Skip to content

[BUG ]Compilation Errors with Basalt VIO Integration #1493

@Ray0055

Description

@Ray0055

Issue: Compilation Errors with Basalt VIO Integration - API Incompatibility

Environment

  • OS: Ubuntu 22.04 (VMware)
  • Branches tested: Both main and develop
  • Installation method:

Problem Description

When enabling DEPTHAI_BASALT_SUPPORT to build BasaltVIO.cpp and corresponding examples, the compilation fails with multiple API incompatibility errors. This appears to be caused by using an incompatible version of the Basalt library. It seems that cmakelist will not automatically install basalt by vcpkg, so I Built Basalt from GitHub source and copied headers to /usr/local/include/basalt

Compilation Errors

The build fails in src/basalt/BasaltVIO.cpp with the following categories of errors:

In file included from /home/rui/depthai-core/src/utility/ProtoSerialize.hpp:18,
                 from /home/rui/depthai-core/src/utility/ProtoSerialize.cpp:1:
/home/rui/depthai-core/build_develop/include/depthai/schemas/PointCloudData.pb.h: In function ‘void dai::utility::setProtoMessage(T&, const google::protobuf::Message*, bool) [with T = dai::PointCloudData]’:
/home/rui/depthai-core/build_develop/include/depthai/schemas/PointCloudData.pb.h:476:42: warning: potential null pointer dereference [-Wnull-dereference]
  476 |   const ::dai::proto::common::Timestamp* p = _impl_.ts_;
      |                                          ^
In file included from /home/rui/depthai-core/src/utility/ProtoSerialize.hpp:17,
                 from /home/rui/depthai-core/src/utility/ProtoSerialize.cpp:1:
/home/rui/depthai-core/build_develop/include/depthai/schemas/ImgFrame.pb.h: In function ‘void dai::utility::setProtoMessage(T&, const google::protobuf::Message*, bool) [with T = dai::ImgFrame]’:
/home/rui/depthai-core/build_develop/include/depthai/schemas/ImgFrame.pb.h:791:42: warning: potential null pointer dereference [-Wnull-dereference]
  791 |   const ::dai::proto::common::Timestamp* p = _impl_.ts_;
      |                                          ^
In file included from /home/rui/depthai-core/src/utility/ProtoSerialize.hpp:13,
                 from /home/rui/depthai-core/src/utility/ProtoSerialize.cpp:1:
/home/rui/depthai-core/build_develop/include/depthai/schemas/EncodedFrame.pb.h: In function ‘void dai::utility::setProtoMessage(T&, const google::protobuf::Message*, bool) [with T = dai::EncodedFrame]’:
/home/rui/depthai-core/build_develop/include/depthai/schemas/EncodedFrame.pb.h:901:42: warning: potential null pointer dereference [-Wnull-dereference]
  901 |   const ::dai::proto::common::Timestamp* p = _impl_.ts_;
      |                                          ^
[ 52%] Building CXX object CMakeFiles/depthai-core.dir/src/basalt/BasaltVIO.cpp.o
[ 52%] Building CXX object CMakeFiles/depthai-core.dir/src/rtabmap/CalibrationHandler.cpp.o
[ 53%] Building CXX object CMakeFiles/depthai-core.dir/src/rtabmap/TransformData.cpp.o
[ 53%] Building CXX object CMakeFiles/depthai-core.dir/src/rtabmap/RTABMapVIO.cpp.o
[ 53%] Building CXX object CMakeFiles/depthai-core.dir/src/rtabmap/RTABMapSLAM.cpp.o
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp: In member function ‘void dai::node::BasaltVIO::stereoCB(std::shared_ptr<dai::ADatatype>)’:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:85:70: error: no matching function for call to ‘basalt::OpticalFlowInput::OpticalFlowInput(int)’
   85 |     basalt::OpticalFlowInput::Ptr data(new basalt::OpticalFlowInput(2));
      |                                                                      ^
In file included from /usr/local/include/basalt/vi_estimator/vio_estimator.h:39,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:8,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note: candidate: ‘basalt::OpticalFlowInput::OpticalFlowInput()’
   54 | struct OpticalFlowInput {
      |        ^~~~~~~~~~~~~~~~
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note:   candidate expects 0 arguments, 1 provided
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note: candidate: ‘basalt::OpticalFlowInput::OpticalFlowInput(const basalt::OpticalFlowInput&)’
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note:   no known conversion for argument 1 from ‘int’ to ‘const basalt::OpticalFlowInput&’
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note: candidate: ‘basalt::OpticalFlowInput::OpticalFlowInput(basalt::OpticalFlowInput&&)’
/usr/local/include/basalt/optical_flow/optical_flow.h:54:8: note:   no known conversion for argument 1 from ‘int’ to ‘basalt::OpticalFlowInput&&’
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp: In member function ‘void dai::node::BasaltVIO::initialize(std::vector<std::shared_ptr<dai::ImgFrame> >)’:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:212:17: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘show_gui’
  212 |     optFlowPtr->show_gui = false;
      |                 ^~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:213:17: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘start’
  213 |     optFlowPtr->start();
      |                 ^~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:214:41: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘input_img_queue’; did you mean ‘input_queue’?
  214 |     pimpl->imageDataQueue = optFlowPtr->input_img_queue;
      |                                         ^~~~~~~~~~~~~~~
      |                                         input_queue
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:217:32: error: no match for ‘operator=’ (operand types are ‘std::shared_ptr<tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > > >’ and ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’)
  217 |     pimpl->imuDataQueue = vio->imu_data_queue;
      |                                ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/memory:77,
                 from /usr/local/include/basalt/calibration/calibration.hpp:41,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:4,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/include/c++/11/bits/shared_ptr.h:363:9: note: candidate: ‘template<class _Yp> std::shared_ptr<_Tp>::_Assignable<const std::shared_ptr<_Yp>&> std::shared_ptr<_Tp>::operator=(const std::shared_ptr<_Yp>&) [with _Yp = _Yp; _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  363 |         operator=(const shared_ptr<_Yp>& __r) noexcept
      |         ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:363:9: note:   template argument deduction/substitution failed:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:217:32: note:   ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ is not derived from ‘const std::shared_ptr<_Tp>’
  217 |     pimpl->imuDataQueue = vio->imu_data_queue;
      |                                ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/memory:77,
                 from /usr/local/include/basalt/calibration/calibration.hpp:41,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:4,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/include/c++/11/bits/shared_ptr.h:374:9: note: candidate: ‘template<class _Yp> std::shared_ptr<_Tp>::_Assignable<std::auto_ptr<_Up> > std::shared_ptr<_Tp>::operator=(std::auto_ptr<_Up>&&) [with _Yp = _Yp; _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  374 |         operator=(auto_ptr<_Yp>&& __r)
      |         ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:374:9: note:   template argument deduction/substitution failed:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:217:32: note:   ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ is not derived from ‘std::auto_ptr<_Up>’
  217 |     pimpl->imuDataQueue = vio->imu_data_queue;
      |                                ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/memory:77,
                 from /usr/local/include/basalt/calibration/calibration.hpp:41,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:4,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/include/c++/11/bits/shared_ptr.h:391:9: note: candidate: ‘template<class _Yp> std::shared_ptr<_Tp>::_Assignable<std::shared_ptr<_Yp> > std::shared_ptr<_Tp>::operator=(std::shared_ptr<_Yp>&&) [with _Yp = _Yp; _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  391 |         operator=(shared_ptr<_Yp>&& __r) noexcept
      |         ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:391:9: note:   template argument deduction/substitution failed:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:217:32: note:   ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ is not derived from ‘std::shared_ptr<_Tp>’
  217 |     pimpl->imuDataQueue = vio->imu_data_queue;
      |                                ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/memory:77,
                 from /usr/local/include/basalt/calibration/calibration.hpp:41,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:4,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/include/c++/11/bits/shared_ptr.h:399:9: note: candidate: ‘template<class _Yp, class _Del> std::shared_ptr<_Tp>::_Assignable<std::unique_ptr<_Up, _Ep> > std::shared_ptr<_Tp>::operator=(std::unique_ptr<_Up, _Ep>&&) [with _Yp = _Yp; _Del = _Del; _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  399 |         operator=(unique_ptr<_Yp, _Del>&& __r)
      |         ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:399:9: note:   template argument deduction/substitution failed:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:217:32: note:   ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ is not derived from ‘std::unique_ptr<_Tp, _Dp>’
  217 |     pimpl->imuDataQueue = vio->imu_data_queue;
      |                                ^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/memory:77,
                 from /usr/local/include/basalt/calibration/calibration.hpp:41,
                 from /home/rui/depthai-core/include/depthai/basalt/BasaltVIO.hpp:4,
                 from /home/rui/depthai-core/src/basalt/BasaltVIO.cpp:1:
/usr/include/c++/11/bits/shared_ptr.h:359:19: note: candidate: ‘std::shared_ptr<_Tp>& std::shared_ptr<_Tp>::operator=(const std::shared_ptr<_Tp>&) [with _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  359 |       shared_ptr& operator=(const shared_ptr&) noexcept = default;
      |                   ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:359:29: note:   no known conversion for argument 1 from ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ to ‘const std::shared_ptr<tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > > >&’
  359 |       shared_ptr& operator=(const shared_ptr&) noexcept = default;
      |                             ^~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:383:7: note: candidate: ‘std::shared_ptr<_Tp>& std::shared_ptr<_Tp>::operator=(std::shared_ptr<_Tp>&&) [with _Tp = tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >]’
  383 |       operator=(shared_ptr&& __r) noexcept
      |       ^~~~~~~~
/usr/include/c++/11/bits/shared_ptr.h:383:30: note:   no known conversion for argument 1 from ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > >’ to ‘std::shared_ptr<tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::ImuData<double> > > >&&’
  383 |       operator=(shared_ptr&& __r) noexcept
      |                 ~~~~~~~~~~~~~^~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:218:37: error: cannot convert ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::OpticalFlowResult> >’ to ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::OpticalFlowResult> >*in assignment
  218 |     optFlowPtr->output_queue = vio->vision_data_queue;
      |                                ~~~~~^~~~~~~~~~~~~~~~~
      |                                     |
      |                                     tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::OpticalFlowResult> >
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:220:35: error: cannot convert ‘std::shared_ptr<tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::PoseVelBiasState<double> > > >’ to ‘tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::PoseVelBiasState<double> > >*in assignment
  220 |     vio->out_state_queue = pimpl->outStateQueue;
      |                            ~~~~~~~^~~~~~~~~~~~~
      |                                   |
      |                                   std::shared_ptr<tbb::detail::d2::concurrent_bounded_queue<std::shared_ptr<basalt::PoseVelBiasState<double> > > >
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:221:10: error: ‘using element_type = class basalt::VioEstimatorBase’ {aka ‘class basalt::VioEstimatorBase’} has no member named ‘opt_flow_depth_guess_queue’
  221 |     vio->opt_flow_depth_guess_queue = optFlowPtr->input_depth_queue;
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:221:51: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘input_depth_queue’; did you mean ‘input_queue’?
  221 |     vio->opt_flow_depth_guess_queue = optFlowPtr->input_depth_queue;
      |                                                   ^~~~~~~~~~~~~~~~~
      |                                                   input_queue
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:222:10: error: ‘using element_type = class basalt::VioEstimatorBase’ {aka ‘class basalt::VioEstimatorBase’} has no member named ‘opt_flow_state_queue’; did you mean ‘out_state_queue’?
  222 |     vio->opt_flow_state_queue = optFlowPtr->input_state_queue;
      |          ^~~~~~~~~~~~~~~~~~~~
      |          out_state_queue
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:222:45: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘input_state_queue’; did you mean ‘input_queue’?
  222 |     vio->opt_flow_state_queue = optFlowPtr->input_state_queue;
      |                                             ^~~~~~~~~~~~~~~~~
      |                                             input_queue
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:223:10: error: ‘using element_type = class basalt::VioEstimatorBase’ {aka ‘class basalt::VioEstimatorBase’} has no member named ‘opt_flow_lm_bundle_queue’
  223 |     vio->opt_flow_lm_bundle_queue = optFlowPtr->input_lm_bundle_queue;
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:223:49: error: ‘using element_type = class basalt::OpticalFlowBase’ {aka ‘class basalt::OpticalFlowBase’} has no member named ‘input_lm_bundle_queue’
  223 |     vio->opt_flow_lm_bundle_queue = optFlowPtr->input_lm_bundle_queue;
      |                                                 ^~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp: In member function ‘void dai::node::BasaltVIO::setDefaultVIOConfig()’:
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:230:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_detection_num_points_cell’; did you mean ‘optical_flow_detection_grid_size’?
  230 |     vioConfig.optical_flow_detection_num_points_cell = 1;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               optical_flow_detection_grid_size
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:231:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_detection_min_threshold’; did you mean ‘optical_flow_detection_grid_size’?
  231 |     vioConfig.optical_flow_detection_min_threshold = 5;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               optical_flow_detection_grid_size
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:232:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_detection_max_threshold’; did you mean ‘optical_flow_detection_grid_size’?
  232 |     vioConfig.optical_flow_detection_max_threshold = 40;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               optical_flow_detection_grid_size
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:233:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_detection_nonoverlap’; did you mean ‘optical_flow_detection_grid_size’?
  233 |     vioConfig.optical_flow_detection_nonoverlap = true;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               optical_flow_detection_grid_size
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:240:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_matching_guess_type’
  240 |     vioConfig.optical_flow_matching_guess_type = basalt::MatchingGuessType::REPROJ_AVG_DEPTH;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:240:58: error: ‘basalt::MatchingGuessType’ has not been declared
  240 |     vioConfig.optical_flow_matching_guess_type = basalt::MatchingGuessType::REPROJ_AVG_DEPTH;
      |                                                          ^~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:241:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_matching_default_depth’
  241 |     vioConfig.optical_flow_matching_default_depth = 2.0;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:242:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_image_safe_radius’; did you mean ‘optical_flow_max_iterations’?
  242 |     vioConfig.optical_flow_image_safe_radius = 472.0;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |               optical_flow_max_iterations
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:243:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_enable’
  243 |     vioConfig.optical_flow_recall_enable = false;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:244:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_all_cams’
  244 |     vioConfig.optical_flow_recall_all_cams = false;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:245:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_num_points_cell’
  245 |     vioConfig.optical_flow_recall_num_points_cell = true;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:246:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_over_tracking’
  246 |     vioConfig.optical_flow_recall_over_tracking = false;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:247:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_update_patch_viewpoint’
  247 |     vioConfig.optical_flow_recall_update_patch_viewpoint = false;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:248:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_max_patch_dist’
  248 |     vioConfig.optical_flow_recall_max_patch_dist = 3;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:249:15: error: ‘struct basalt::VioConfig’ has no member named ‘optical_flow_recall_max_patch_norms’
  249 |     vioConfig.optical_flow_recall_max_patch_norms = {1.74, 0.96, 0.99, 0.44};
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:272:15: error: ‘struct basalt::VioConfig’ has no member named ‘vio_fix_long_term_keyframes’
  272 |     vioConfig.vio_fix_long_term_keyframes = false;
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:274:15: error: ‘struct basalt::VioConfig’ has no member named ‘vio_kf_marg_criteria’; did you mean ‘vio_kf_marg_feature_ratio’?
  274 |     vioConfig.vio_kf_marg_criteria = basalt::KeyframeMargCriteria::KF_MARG_DEFAULT;
      |               ^~~~~~~~~~~~~~~~~~~~
      |               vio_kf_marg_feature_ratio
/home/rui/depthai-core/src/basalt/BasaltVIO.cpp:274:46: error: ‘basalt::KeyframeMargCriteria’ has not been declared
  274 |     vioConfig.vio_kf_marg_criteria = basalt::KeyframeMargCriteria::KF_MARG_DEFAULT;
      |                                              ^~~~~~~~~~~~~~~~~~~~
gmake[2]: *** [CMakeFiles/depthai-core.dir/build.make:2039: CMakeFiles/depthai-core.dir/src/basalt/BasaltVIO.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
/home/rui/depthai-core/src/pipeline/node/ImageFilters.cpp: In member function ‘virtual void dai::node::ToFDepthConfidenceFilter::run()’:
/home/rui/depthai-core/src/pipeline/node/ImageFilters.cpp:953:33: warning: null pointer dereference [-Wnull-dereference]
  953 |             confidenceThreshold = configMsg->confidenceThreshold;
      |             ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/pcl-1.12/pcl/conversions.h:54,
                 from /usr/include/pcl-1.12/pcl/common/impl/io.hpp:43,
                 from /usr/include/pcl-1.12/pcl/common/io.h:538,
                 from /usr/include/pcl-1.12/pcl/filters/filter.h:43,
                 from /home/rui/depthai-core/src/rtabmap/RTABMapSLAM.cpp:3:
/usr/include/boost/foreach.hpp:335:13: error: ‘is_convertible’ was not declared in this scope
  335 |             is_convertible<T, char const *>
      |             ^~~~~~~~~~~~~~
/usr/include/boost/foreach.hpp:335:13: note: suggested alternatives:
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/memory:63,
                 from /home/rui/depthai-core/include/depthai/pipeline/DeviceNode.hpp:3,
                 from /home/rui/depthai-core/include/depthai/pipeline/Subnode.hpp:3,
                 from /home/rui/depthai-core/include/depthai/rtabmap/RTABMapSLAM.hpp:3,
                 from /home/rui/depthai-core/src/rtabmap/RTABMapSLAM.cpp:1:
/usr/include/c++/11/type_traits:1457:12: note:   ‘std::is_convertible’
 1457 |     struct is_convertible
      |            ^~~~~~~~~~~~~~
/usr/include/c++/11/type_traits:1457:12: note:   ‘std::is_convertible’
In file included from /usr/include/pcl-1.12/pcl/conversions.h:54,
                 from /usr/include/pcl-1.12/pcl/common/impl/io.hpp:43,
                 from /usr/include/pcl-1.12/pcl/common/io.h:538,
                 from /usr/include/pcl-1.12/pcl/filters/filter.h:43,
                 from /home/rui/depthai-core/src/rtabmap/RTABMapSLAM.cpp:3:
/usr/include/boost/foreach.hpp:335:43: error: template argument 1 is invalid
  335 |             is_convertible<T, char const *>
      |                                           ^
/usr/include/boost/foreach.hpp:336:13: error: ‘is_convertible’ was not declared in this scope
  336 |           , is_convertible<T, wchar_t const *>
      |             ^~~~~~~~~~~~~~
/usr/include/boost/foreach.hpp:336:13: note: suggested alternatives:
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/memory:63,
                 from /home/rui/depthai-core/include/depthai/pipeline/DeviceNode.hpp:3,
                 from /home/rui/depthai-core/include/depthai/pipeline/Subnode.hpp:3,
                 from /home/rui/depthai-core/include/depthai/rtabmap/RTABMapSLAM.hpp:3,
                 from /home/rui/depthai-core/src/rtabmap/RTABMapSLAM.cpp:1:
/usr/include/c++/11/type_traits:1457:12: note:   ‘std::is_convertible’
 1457 |     struct is_convertible
      |            ^~~~~~~~~~~~~~
/usr/include/c++/11/type_traits:1457:12: note:   ‘std::is_convertible’
In file included from /usr/include/pcl-1.12/pcl/conversions.h:54,
                 from /usr/include/pcl-1.12/pcl/common/impl/io.hpp:43,
                 from /usr/include/pcl-1.12/pcl/common/io.h:538,
                 from /usr/include/pcl-1.12/pcl/filters/filter.h:43,
                 from /home/rui/depthai-core/src/rtabmap/RTABMapSLAM.cpp:3:
/usr/include/boost/foreach.hpp:336:46: error: template argument 2 is invalid
  336 |           , is_convertible<T, wchar_t const *>
      |                                              ^
/usr/include/boost/foreach.hpp:336:46: error: template argument 3 is invalid
/usr/include/boost/foreach.hpp:337:9: error: expected ‘{’ before ‘>’ token
  337 |         >
      |         ^
gmake[2]: *** [CMakeFiles/depthai-core.dir/build.make:2095: CMakeFiles/depthai-core.dir/src/rtabmap/RTABMapSLAM.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:1281: CMakeFiles/depthai-core.dir/all] Error 2
gmake: *** [Makefile:166: all] Error `2`

Questions

  1. Which version of Basalt is compatible with the current depthai-core implementation?
  2. What is the recommended installation method for Basalt dependencies?
    • Should I use vcpkg (as mentioned in CMakeLists.txt)?
    • Should I build from a specific Basalt release/commit?

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions