ubuntu20.04 写一下自己学习视觉十四讲过程中遇到的问题和解决方法

学习视觉十四讲过程中遇到的问题和解决方法

就是随便写写,想到哪写哪,我这人没啥条理hh,如果能给同样问题的同学提供一些解决方法再好不过了。此外,我基础很差!!

害,为了少装些软件,直接在之前安装的ubuntu18.04上面跑代码了,但是高翔老师用的ubuntu16.04,所以有很多代码依赖的包版本不一样,导致一直在找解决方法,没想到带来了更多的麻烦hhh,所以推荐看到这篇的直接去下载老师的版本,如果实在是不想换掉18.04,可以参考我这篇。

ch1-2

ubuntu搭建环境

高翔老师的视觉十四讲在b站有课程,实战一上来就是要下载github代码,按照他的操作,下载速度巨巨慢,等得非常捉急。,其实用搭建一个环境,速度就能快很多,还能解决一些会有的bug。

步骤


在github上找的的压缩包,一定要是tar.gz结尾的,拖到Ubuntu文件夹解压即可。但是我试了几个都不好操作,最后用的是这个,折腾了很久反正是

​完事在解压后的文件夹,用终端打开,输入./cfw  这时候就会跳出软件窗口面板了,在pc端购买一个,直接将订阅链接复制到profiles下载。

之后重要的一步,建议直接在设置当中,网络设置里面,设置网络代理。选择手动,第一、三、四行改成127.0.0.1 和7890 (我当时没发现自己的端口号不是7890,就是要对应clash页面的第一页第一行的port,怎么改都不对,又折腾了很久)

弄好之后克隆代码速度真的巨巨快!!!

克隆配套十四讲的代码:

git clone http://github.com/gaoxiang12/slambook

别忘了把面板第一页最后一个按钮打开,可以开机自启动,右上角显示黄色的小猫就代表可以冲浪上网了 

VIM写代码

看到用vim写代码我是懵的,上网搜越搜越难,不过事实证明还好,高博是小工程用这个写,只要学会几个指令就行。 i进入插入模式自由编写,Esc退出插入模式, :wq保存并退出  :q退出 也就没了

这里又遇到个蛋疼的事情,b站上面视频清晰度不够还是我眼花了,CMakeLists.txt 文件,我怎么也写不对,找了好久找解决办法,最后发现我把小括号都看成了大括号。hhh

笔记分享,着实是很乱

哦对,最后写C++程序的IDE我没用老师推荐的那个,自己之前装过vscode,也很好用,下载完要装C++插件。

ch3

eigen/core: 没有那个文件或目录

就很奇怪,下载完eigen库之后,用高博的ch3的代码打开显示头文件引用有错。eigen/core: 没有那个文件或目录,最后是找了一会在网上找到方法解决了,可以参考一下

解决方法

因为默认在usr/include里找库文件,includePath加入文件目录也没用,所以要加入软链接

sudo ln -s /usr/include/eigen3/Eigen  /usr/include/Eigen

重新打开Vscode 重新编译 成功!

ch4

sophus/so3.h 没有那个文件或目录

因为在用sophus库是又同样报错,说找不到目录,看文章说eigen库直接用apt下载的版本太低,于是上官网下载了新版本,参考Sophus库安装踩坑(SLAM十四讲)_查看是否安装sophus_白色小靴的博客-CSDN博客

后来下载了新版eigen3.3.7到usr/local/include目录下 之前的软链接失效了 要启用root权限删除

(前面要加sudo)

sudo rm /usr/include/Eigen

重新建立软链接

sudo ln -s /usr/local/include/eigen3/Eigen  /usr/include/Eigen

在sophus库遇到了同样的问题,用ch3同样方式解决即可

ch5

安装opencv3.4.16

参考:Ubuntu20安装OpenCV3(图解亲测)_杨 戬的博客-CSDN博客

真的服了,又遇到之前的问题,在/usr/include 文件夹下搜索不到vtk相关的头文件,因为都在vtk-7.1文件夹下,隔了一层文件夹就找不到了,添加includePath路径还是没用,这次头文件太多实在不方便复制,但是试了n种方法还是无法解决,最后还是把vtk7.1下的所有文件迁移到了usr/include下面,这下可以找到了

迁移所有文件的代码

打开到想要复制的文件夹下面
sudo cp -r *  /目标文件夹/

研究了一天,更新了也没用,发现vscode报错但是仍然可以CMake,仍然可以运行可执行文件,所以如果再报这种错误不管就好了,可能就是Vscode呆了找不到,但是不影响cmakelists编写的寻找头文件。

ch6

安装ceres库报错

因为我的ubuntu是18.04,对应的包名是libcxsparse3。注意下载自己Ubuntu相应的版本。

然后老师的包我安装出错了,去官网下载了新的稳定版本。

参考:(1条消息) SLAM疑难篇一:ceres安装和编译报错——实践高翔SLAM十四讲_ceres报错_j_shuttworth的博客-CSDN博客

但是后来发现make过程出现了很多错误,怀疑是不是ceres库版本太高,换成了这个作者提供的1.14.0版本,在cmake过程中出现找不到glog,但是我明明安装了libgoogle-glog-dev,安装了glog到我的usr/local文件夹,成功找到了glog,这次看看能不能make成功

安装glog库参考

git clone https://gitee.com/boxingcao/glog.git

sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make 
sudo make install

sudo ldconfig

装完了,终于不报错啦!!!!!
 

安装g2o库报错

依然是同样的错误,could not find QT…QGLVIEWER

sudo apt-get install qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5

分别安装了这三个,但还是提示找不到qt

参考了这篇,使它能找到安装的qt-5(1条消息) 解决g2o无法编译出g2o_viewer的问题_机器人学渣的博客-CSDN博客

ch8

段错误(核心已转储)

/*运行直接法时出错,不能显示图片:段错误(核心已转储)

后来怎么的,感觉是pangolin库有问题 重装了一遍

又感觉sophus库有问题,又重装一边

发现cpp文件里写的SE3d 要统统改成SE3

编译成功了! 但执行时

error while loading shared libraries: libpango_windowing.so: cannot open shared object file: No such file or directory

解决:sudo ldconfig

又说读不到图片*/

气得我上github找了源码重新下载一遍 还是段错误

这回找到原因了 有两个bool函数没有写返回值

在报warning的三个位置加了return true;

virtual bool read ( std::istream& in ) {
    // 实际的读取逻辑
    return true; // 根据实际情况返回 true 或 false
}

virtual bool write ( std::ostream& out ) const {
    // 实际的写入逻辑
    return true; // 根据实际情况返回 true 或 false
}

bool poseEstimationDirect ( const vector< Measurement >& measurements, cv::Mat* gray, Eigen::Matrix3f& K, Eigen::Isometry3d& Tcw ) {
    // 实际的函数逻辑
    return true; // 根据实际情况返回 true 或 false
}

终于成功显示!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值