三个月转行SLAM(第一周)--环境配置

新机器视觉

共 3665字,需浏览 8分钟

 ·

2021-10-25 12:55

点击下方卡片,关注“新机器视觉”公众号

视觉/图像重磅干货,第一时间送达

作者:莫慢待

链接:https://zhuanlan.zhihu.com/p/414536979
来源:知乎


一个周过去了

还没放弃

先说一下上周的学习体验


从上一篇说要转行slam开启了海口学习法,已经快一周了。中间忙了2、3天工作,对slam的学习进行了一些摸索,泛读了slam14讲的第一版本,昨天又购买了新书第二版本的,还好第一版本是用的京东会员看的免费电子版本;不然就有点“亏大了”,泛读了北航老师和百度联合编写的自动驾驶系列的汽车环境感知一书;同时看了3D视觉工坊推出的多传感器融合课程,这个内容和环境感知这书讲的内容差不多;还有浙大出品的slam暑期课程、看了前面两课,这两课程讲了个寂寞,大概的风格就是“这样 然后这样,最后就这样了...”,定位应该是科普课程就没有后面的了,有时间再看看后面大佬的课程,毕竟这个课程很多不同的主讲人。浙大谭平老师的计算机视觉讲的很不错!

总的来讲还是slam十四讲的质量最高,理论与实践并重,所以我的第一节段学习目标是基础入门所以侧重为slam十四讲。目前是处于slam算法的优化阶段,如十四讲最后列举了有一些成熟的系统,我们需要在这些框架系统的基础上来完善,而不没有必要重新写,至少现在没有这个能力。节前需要做的事情就是把十四讲的代码都跑通,并对照书本理解。

十三讲是设计了一个slam系统,应该为最全的代码。我想要集中解决第三方库的问题,所以从13讲代码入手了。在github的slambook2的路径下,有第三方库的版本号,使用该版本可以和作者保持一致的版本。我尝试后发现,这个版本gcc要求版本比较低,由于我安装的是20.04的系统,不想降级gcc等。所以我尝试下载最新的库,反正不可能老版本的库一直用。


配置环节


·在ubuntu20.04下,使用命令apt-get安装gcc、g++、make 、cmake。

·使用官网教程,安装opencv环境,Installation in Linux。

·下载cloin,不出意外会自动识别gcc、g++等。

打开slam14讲的ch5/imageBasics,对CMakeLists作相应的修改,添加以下一句话,不然会报错,undefined reference to `cv::String::allocate(unsigned long)'。

find_package( OpenCV 3 REQUIRED )

运行13章需要的库安装。

·Pangolin ,直接按照github源码编译安装就好,如果需要eigen3没有安装,使用命令安传Eigen3. 如果是已经安装了也报错,卸载重新安装。

sudo apt-get install libeigen3-devsudo apt-get remove libeigen3-dev #卸载包本身sudo apt-get remove --auto-remove libeigen3-dev #卸载相关依赖#sudo apt-get purge --auto-remove libeigen3-dev
·Sophus 安装方法,如果是报错关于fmt,可能是fmt没有安装。注意编译fmt的时候使用以下命令,官方文档中有说明。
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE ...
否则会报错libfmt.a(format.cc.o): relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5'。如果报错fmt在libmyslam中是没有定义的引用。
/usr/bin/ld: ../../lib/libmyslam.so: undefined reference to `std::locale fmt::v8::detail::locale_ref::get<std::locale>() const'
那就是fmt库没有连接起来,所以在src目录下的CMakeLists.txt文件夹下添加,将fmt加入到我们编译的libmyslam连接库中。
find_package(fmt) target_link_libraries(myslam fmt::fmt)
·Glog 安装方法。10月4号发现,这种安装方法很神奇哈,在ch13可以用,在ch9不可以用,具体原因不重要,后面再看看。所以还是cmake的方式安装比较稳妥。
sudo apt updatesudo apt install libgoogle-glog-dev
·GTest安装方法,注意查看编译信息,找到lib文件夹下的*.a,拷贝到对应目录中去。

·安装g2o

·安装ceres,需要注意有一个eigen3这个依赖有源码编译和apt-get 的两种安装方式,用于编译ceres的方式要和实际连接使用的一致。不然会报错,Failed to find Ceres - Missing required Ceres dependency: Eigen version ,please set Eigen3_DIR。

1.首先确定使用的eigen3是什么安装方式.我这里使用的是标准安装方式所以包含Eigen3Config.cmake的目录为/usr/lib/cmake/eigen3。
2.删除ceres ,在ceres-bin或者build目录下,使用make uninstall 命令删除。

3.cmake的时候指定Eigen3_DIR,cmake ../ -DEigen3_DIR=/usr/lib/cmake/eigen3

PCL 的安装 在12讲的代码里面需要使用

需要安装依赖,这里的依赖注意不要重复覆盖安装了了不一致的版本,我仅仅安装了 libflann-dev,官方给出的依赖也没有这么多。比如egien3 boost 这些依赖在之前就装过了就不装了,避免更新了这些库的版本导致之前的安装出错。使用是官网源码编译

     sudo apt-get update     sudo apt-get install git build-essential linux-libc-dev     sudo apt-get install cmake cmake-gui      sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev     sudo apt-get install mpi-default-dev openmpi-bin openmpi-common       sudo apt-get install libflann1.8 libflann-dev     sudo apt-get install libeigen3-dev     sudo apt-get install libboost-all-dev     sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev     sudo apt-get install libqhull* libgtest-dev     sudo apt-get install freeglut3-dev pkg-config     sudo apt-get install libxmu-dev libxi-dev      sudo apt-get install mono-complete     sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
编译的时候的遇到的问题:使用make -jn的时候容易出错,几次直接闪退了。最后使用下面的cmake命令,让后make成功。
     cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \           -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \           -DCMAKE_INSTALL_PREFIX=/usr ..
最后成功运行。

参考资料

https://blog.csdn.net/fsencen/article/details/79386570

—版权声明—

仅用于学术分享,版权属于原作者。

若有侵权,请联系微信号:yiyang-sy 删除或修改!


—THE END—
浏览 121
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报