踩坑 Sophus 模板库安装及编译(视觉SLAM 十四讲第二版 ch4 )

这篇具有很好参考价值的文章主要介绍了踩坑 Sophus 模板库安装及编译(视觉SLAM 十四讲第二版 ch4 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在《视觉slam十四讲》第二版中,第4、7、8、9、10讲都需要Sophus库,因此我们需要安装Sophus库,并且需要的是Sophus模板库,因此很多人因为安装了非模板版本导致报错,下面提供Sophus模板版本安装方式,以及对应不报错版本。

1.查看eigen版本

pkg-config --modversion eigen3

只要是 3.3以上的版本即可

2.安装 fmt (8.1.1版)

官网进入,然后下载Tag里的fmt-8.1.1.zip,解压

cd fmt
mkdir build
cd build
cmake ..
make
sudo make install

3.安装Sophus模板库 

git clone https://github.com/strasdat/Sophus.git
cd Sophus
mkdir build
cd build
cmake ..
make 
sudo make install

最后虽然书上说只需编译,无需安装,但是如果不进行 sudo make install,cmake时会找不到Sophus的位置。要是不想更改cmakelist.txt,就进行安装,让 find package 自己去找路径。

安装完成后,然后去正常编译视觉slam十四讲里的源码即可

4. 一些编译问题

ch4:

错误1:cmake ..时:

CMake Error at CMakeLists.txt:9 (add_executable):
  Target "useSophus" links to target "Sophus::Sophus" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

解决方案:

在CMakeLists.txt中:加入

set(Sophus_DIR "/home/你自己的路径/Sophus/build")

错误2:make 时:

[ 50%] Linking CXX executable trajectoryError

/usr/bin/ld: CMakeFiles/trajectoryError.dir/trajectoryError.cpp.o: in function `std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int)':

trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_[_ZN3fmt2v86detail11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_]+0x23): undefined reference to `fmt::v8::detail::assert_fail(char const*, int, char const*)'

解决方案

没有链接fmt库,链接上fmt 库就没问题了,将example中的CMakeLists.txt中:

target_link_libraries(trajectoryError ${Pangolin_LIBRARIES} ${FMT_LIBRARIES})改为

target_link_libraries(trajectoryError ${Pangolin_LIBRARIES} ${FMT_LIBRARIES} fmt)


错误3:./example/trajectoryError时:

trajectory ./example/groundtruth.txt not found.
trajectory ./example/estimated.txt not found.
trajectoryError: /home/tzy/shijue_ws/src/slambook14/ch4/example/trajectoryError.cpp:22: int main(int, char**): Assertion `!groundtruth.empty() && !estimated.empty()' failed.
Aborted (core dumped)

解决方案

因为我们是在 build下执行命令,如果使用文件的相对路径:则修改trajectoryError.cpp,改成:

string groundtruth_file = "../example/groundtruth.txt";
string estimated_file = "../example/estimated.txt";

保存重新 make 后执行: ./example/trajectoryError

trajectoryerror: /home/dewgon/slambook/ch4/example/trajectoryerror.cpp:23: i,视觉slam十四讲,c++,ubuntu,计算机视觉文章来源地址https://www.toymoban.com/news/detail-816141.html

到了这里,关于踩坑 Sophus 模板库安装及编译(视觉SLAM 十四讲第二版 ch4 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《视觉SLAM十四讲》报错信息和解决方案

    ch4-Sophus 编译报错 报错信息: 解决方法:修改Sophus下的so2.cpp文件 将下面这个修改一下: 修改为: ch5/imageBasics 安装opencv4.x报错 环境:Unbuntu22.04,安装opencv4.x 报错信息: 解决方案:参照https://blog.csdn.net/qq_51022848/article/details/128095476 ch5/joinMap/CMakeLists.txt 编译报错 报错信息:

    2024年02月14日
    浏览(35)
  • 视觉SLAM十四讲|【五】相机与IMU时间戳同步

    Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = K P Z begin{bmatrix} u \\\\ v \\\\ 1 end{bmatrix}= begin{bmatrix} f_x 0 c_x \\\\ 0 f_y c_y \\\\ 0 0 1 end{bmatrix} begin{bmatrix} X \\\\ Y \\\\ Z end{bmatrix}= KP Z ​ u v 1 ​ ​ = ​ f x ​ 0 0 ​ 0 f y ​ 0 ​ c x ​ c y ​ 1 ​ ​ ​ X Y Z ​ ​ = K P 其中, K = [ f x 0 c x 0 f y c y 0 0

    2024年01月20日
    浏览(48)
  • 《视觉 SLAM 十四讲》V2 第 5 讲 相机与图像

    空间点 投影到 相机成像平面 前面内容总结: 1、机器人如何表示自身位姿 视觉SLAM: 观测 主要是指 相机成像 的过程 。 投影过程描述: 针孔 + 畸变 相机 内参 外参 像素坐标系 与 成像平面之间,相差了一个缩放 和一个原点的平移。 像素坐标系: 原点 o ′ o^{prime} o ′ 位

    2024年02月07日
    浏览(43)
  • slam十四讲~环境安装以及问题记录

    参考资料: https://zhuanlan.zhihu.com/p/452256687 https://blog.csdn.net/qq_38629044/article/details/95355859 https://blog.csdn.net/Bonaventure/article/details/122835996 https://blog.csdn.net/weixin_44986556/article/details/108962861 https://blog.csdn.net/qq_38364548/article/details/122055690 https://blog.csdn.net/rong11417/article/details/103905794 http

    2023年04月15日
    浏览(38)
  • 《视觉 SLAM 十四讲》V2 第 4 讲 李群与李代数 【什么样的相机位姿 最符合 当前观测数据】

    P71 什么样的相机位姿 最符合 当前观测数据。 求解最优的 R , t bm{R, t} R , t , 使得误差最小化。 群 : 只有一个(良好的)运算的集合。 封结幺逆 、 丰俭由你 李群 : 具有连续(光滑)性质的群。 在 t = 0 附近,旋转矩阵可以由 e x p ( ϕ 0 ∧ t ) exp(phi_0^{land}t) e x p ( ϕ 0 ∧ ​ t

    2024年02月07日
    浏览(50)
  • 视觉slam中Sophus库的基本使用

    Eigen库是一个开源的C++线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。但是Eigen库提供了集合模块,但没有提供李代数的支持。一个较好的李群和李代数的库是Sophus库,它很好的支持了SO(3),so(3),SE(3)和se(3)。Sophus库是基于Eigen基础上开发的,继承了

    2023年04月09日
    浏览(44)
  • 自学SLAM(8)《第四讲:相机模型与非线性优化》作业

    小编研究生的研究方向是视觉SLAM,目前在自学,本篇文章为初学高翔老师课的第四次作业。 现实⽣活中的图像总存在畸变。原则上来说,针孔透视相机应该将三维世界中的直线投影成直线,但是当我们使⽤⼴⾓和鱼眼镜头时,由于畸变的原因,直线在图像⾥看起来是扭曲的

    2024年02月05日
    浏览(43)
  • Git第十四讲 Git标签管理

    Git标签是用于标记项目中的特定版本的重要工具。它们通常用于标识发布版本或里程碑。本文将介绍如何在Git中创建、查看和管理标签。 要在Git中创建一个标签,可以使用 git tag 命令。有两种类型的标签:轻量标签和附注标签。 轻量标签 轻量标签是指向特定提交的静态引用

    2024年02月09日
    浏览(87)
  • ElasticSearch第十四讲 ES有条件复杂查询

    模糊匹配 模糊匹配主要是针对文本类型的字段,文本类型的字段会对内容进行分词,对查询时,也会对搜索条件进行分词,然后通过倒排索引查找到匹配的数据,模糊匹配主要通过match等参数来实现 match : 通过match模糊匹配条件内容 prefix : 前缀匹配 regexp : 通过正则表达

    2024年02月03日
    浏览(45)
  • OpenCV中initUndistortRectifyMap ()函数与十四讲中去畸变公式的区别探究

    最近在使用OpenCV对鱼眼相机图像去畸变时发现一个问题,基于针孔模型去畸变时所使用的参数和之前十四讲以及视觉SLAM中的畸变系数有一点不一样。 1.十四讲中的去畸变公式 首先是十四讲或者视觉SLAM中的方法,针孔模型的畸变系数为 [k1, k2, p1, p2] ,使用以下去畸变公式计算:

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包