GTSAM的Matlab Toolbox安装,遇到的问题及解决方案

系统:ubuntu22.04

matlab版本:R2024a

GTSAM版本: 4.2.0

1.流程及cmake选项

bash 复制代码
cd gtsam_ws/gtsam

mkdir build

cd build

cmake .. \
    -DGTSAM_INSTALL_MATLAB_TOOLBOX=ON \    
    -DGTSAM_USE_SYSTEM_EIGEN=ON \
    -DGTSAM_BUILD_UNSTABLE=OFF \
    -DGTSAM_BUILD_TESTS=OFF \
    -DCMAKE_BUILD_TYPE=Release \
    -DMatlab_ROOT_DIR=/usr/local/MATLAB/R2024a 

make -j6

sudo make install

中间有一些选项是为了加快编译速度/避免报错,可以不用,把最后的地址替换为自己MATLAB的安装目录即可。

2.加入到MATLAB路径

到这里已经获得了GTSAM的Matlab Toolbox,找到安装目录如 usr/local/gtsam_toolbox,在 MATLAB 文件浏览器中,右键点击该文件夹,点击"添加到路径 -> 此文件夹"( 注意不要将子文件夹添加到路径中 )。

3.简单测试

Matlab 复制代码
>> import gtsam.*
>> gtsam.Rot3.Ypr(0.1, 0.2, 0.3)

输出为:

Matlab 复制代码
R: [
	0.975170327, -0.0369570135, 0.218350663;
	0.097843395, 0.956425086, -0.275095847;
	-0.198669331, 0.289629478, 0.936293364
]

附:make中出现的问题

/usr/include/boost/smart_ptr/make_shared_object.hpp:256:5: error: no matching function for call to 'std::pair<gtsam::DiscreteConditional, gtsam::DecisionTreeFactor>::pair(std::pair<boost::shared_ptr<gtsam::DiscreteConditional>, boost::shared_ptr<gtsam::DecisionTreeFactor> >)'
256 | ::new( pv ) T( boost::detail::sp_forward<Args>( args )... );

| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In file included from /usr/include/c++/11/bits/stl_algobase.h:64,

from /usr/include/c++/11/bits/char_traits.h:39,

from /usr/include/c++/11/string:40,

from /usr/include/c++/11/bits/locale_classes.h:40,

from /usr/include/c++/11/bits/ios_base.h:41,

from /usr/include/c++/11/streambuf:41,

from /usr/include/c++/11/bits/streambuf_iterator.h:35,

from /usr/include/c++/11/iterator:66,

from /usr/include/boost/concept_check.hpp:22,

from /usr/include/boost/range/concepts.hpp:19,

from /home/zcy/gtsam_ws/gtsam/gtsam/base/types.h:24,

from /home/zcy/gtsam_ws/gtsam/gtsam/global_includes.h:22,

from /home/zcy/gtsam_ws/gtsam/gtsam/base/Vector.h:28,

from /home/zcy/gtsam_ws/gtsam/wrap/matlab.h:25,

from /home/zcy/gtsam_ws/gtsam/build/wrap/gtsam/gtsam_wrapper.cpp:1:

开始直接问AI,半天解决不了,最后还是到github上找到了以前有人提过这个问题,链接如下:

https://github.com/borglab/gtsam/issues/1614

解决方法:

https://github.com/borglab/gtsam/pull/1631

按照flie changed找到相应文件gtsam/discrete/discrete.i对应行修改,之后重新编译。

相关推荐
xrgs_shz4 小时前
直方图法、最大类间方差法、迭代法和自适应阈值法的图像分割的基本原理和MATLAB实现
人工智能·计算机视觉·matlab
hoiii1874 小时前
CSTR反应器模型的Simulink-PID仿真(MATLAB实现)
开发语言·matlab
Evand J7 小时前
【MATLAB例程】基于低精度IMU、GNSS的UAV初始航向(三维角度)校准的仿真,包含卡尔曼滤波、惯导解算与校正
开发语言·matlab·gnss·imu·卡尔曼滤波
简简单单做算法8 小时前
基于CNN卷积神经网络的数据预测matlab仿真,对比BP,RBF,LSTM
matlab·cnn·卷积神经网络·lstm·数据预测
yu859395813 小时前
时延估计的互相关算法(MATLAB实现)
开发语言·算法·matlab
强盛机器学习~14 小时前
考虑异常天气和太阳辐射下基于强化学习的无人机三维路径规划
算法·matlab·无人机·强化学习·路径规划·无人机路径规划·q-learning
Matlab光学14 小时前
Matlab 复现:分数阶&整数阶OAM 变换
算法·matlab·拓扑学
机器学习之心14 小时前
ICEEMDAN-CMBE特征提取+Bayes-TCN-LSTM故障诊断+SHAP可解释分析!MATLAB完整代码
matlab·lstm
强盛机器学习~15 小时前
2026年SCI一区新算法-贝塞尔曲线优化算法(BCO)-公式原理详解与性能测评 Matlab代码免费获取
算法·matlab·进化计算·智能优化算法·元启发式算法·群体智能算法
源代码杀手15 小时前
利用MATLAB®和Simulink®资源的可再生能源
开发语言·matlab