Ubuntu断断续续用了将近两年了,也算踩了无数的坑,被各个配置折腾了一遍又一遍。
在这里对自己曾经犯的错误和应当使用的正确方式进行记录。
首先来说一下自己在用的软件环境所需要包含的内容:
1、首先是python+tensorflow+cuda+cudnn等,用于深度学习、opencv的Python环境。
2、其次是C++ +OPENCV+PCL等,用于视觉slam学习和编程的环境。
3、最后是几个比较习惯的IDE和常用软件的安装。
写到这里,可能正在看的你应该也就明白了,这的东西主要是写给我自己看的。
其次是当前正在使用的硬件配置。
CPU:AMD Ryzen2600 6C12T oc 3.9Ghz
不得不说amd现在真的很不错了,主要还是线程数足够多这点真的是人类福音,配置slam环境时,编译安装各个库,都是靠着make -j8、j9,甚至j10,替我节省了大量的时间,之前所说的在锐龙一代上使用linux产生的各种问题也都没有产生。
但是也有一定的局限性,python下的opencv是基于numpy的,而numpy对于intel平台有更好的支持,当我在python下使用使用opencv的时候,个别情境下产生了明显的延迟(我并不确定这是否是由于锐龙平台的原因,毕竟我没有一台8500或者8600k进行横向比较,只能和一台G4560比较,但是相较之下,G4560在这个任务下表现更好。)
GPU:RTX 2060
2060是搭载张量核心(tensor cores)的显卡之中最便宜的入门产品,理论上可明显提升张量运算的速度和效率,这在我测试一些简单模型的时候的确有所体会。同时,张量核心允许显卡以fp16加载模型,牺牲模型精度从而将等效现存翻倍,这个的话,仅仅是听说,以及了解过相应的技术规格,并没有进行实际的测试,因此有待后续验证。
内存:2*8G 的海力士CJR内存
做过dl的人应该都知道内存>显存的道理,因此选择了16G,如果后续使用fp16,依旧足够。
系统:ubuntu 16.04
默认系统语言:英语,主要是保证文件的路径中只有英文,避免由于编码方式产生问题。
进系统之后,首先修改apt-get软件源为清华的tuna。
然后修改时间同步规则,否则回到win下时间会错乱12小时
采取进入tty文本的方式安装显卡驱动。
我选择anaconda作为python解释器,conda的好处就应该不需要我多说了,这里依旧选择清华的tuna作为下载源软件源。
全程都是在命令行下大概是最蛋疼的一点了
我的原则是能使用图形界面就绝不敲命令行
在navigator里添加国内的第三方源
敲命令是不可能敲命令的,这辈子都不可能敲的。
这个环境主要用于深度学习的程序,所以就叫这个名字了
python版本为3.6
反正就是绝对不要用最新的
勾选tensorflow-gpu、matplotlib、numpy等常用库,以及nb coda用于jupyter下切换虚拟环境。
这个环境主要用于opencv的程序
python版本为2.7
这大概是我最痛苦的地方了,各个问题都被我经了历了一遍。
使用1604按照视频和书中的安装步骤可以运行ch6的g2o程序,但是ch11的g2o_viewer则无法使用,所以 从一开始就应该不遵循书中做法,以下提供正解。
首先ubuntu16.04下正常使用g2o首先要删除可能存在的qt4并安装qt5
sudo apt-get remove qt4-qmake
sudo apt-get install libqglviewer-dev
sudo apt-get install qtdeclarative5-dev
解压g2o,找到g2o文件夹下的cmake_moudules/FindQGLViewer.cmake
文件,修改其中一部分
将
find_library(QGLVIEWER_LIBRARY_RELEASE
NAMES qglviewer-qt4 qglviewer QGLViewer QGLViewer2
PATHS /usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV QGLVIEWERROOT
ENV LD_LIBRARY_PATH
ENV LIBRARY_PATH
PATH_SUFFIXES QGLViewer QGLViewer/release
)
find_library(QGLVIEWER_LIBRARY_DEBUG
NAMES dqglviewer dQGLViewer dQGLViewer2 QGLViewerd2
PATHS /usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV QGLVIEWERROOT
ENV LD_LIBRARY_PATH
ENV LIBRARY_PATH
PATH_SUFFIXES QGLViewer QGLViewer/release
)
替换成
find_library(QGLVIEWER_LIBRARY_RELEASE
NAMES qglviewer QGLViewer qglviewer-qt5 QGLViewer-qt5
PATHS /usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV QGLVIEWERROOT
ENV LD_LIBRARY_PATH
ENV LIBRARY_PATH
PATH_SUFFIXES QGLViewer QGLViewer/release
)
find_library(QGLVIEWER_LIBRARY_DEBUG
NAMES dqglviewer dQGLViewer dqglviewer-qt5 dQGLViewer-qt5 QGLViewerd2
PATHS /usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
ENV QGLVIEWERROOT
ENV LD_LIBRARY_PATH
ENV LIBRARY_PATH
PATH_SUFFIXES QGLViewer QGLViewer/release
)
之后再进行编译安装
cd g2o
mkdir build && cd build
cmake ..
make -j8 (AMD:8条线程而已,拿去用)
sudo make install -j8
在运行test demo后第五章的点云库拼接的时候遇到了visualization.h缺失的问题,但是在usr目录中可以找到该文件,通过在cmakelists中使用绝对路径的方法最终的确能够实现对这一头文件的引用,但是总归怕出现其他问题,于是就重新编译安装了PCL,而在PCL的编译过程中有一步提示了我,visualization 不会被built,原因是缺少vtk模块,于是在这里先编译安装vtk。
首先解压vtk
cd vtk
mkdir build && cd build
cmake ..
sudo make -j8 (不好意思,12条线程的cpu就是可以为所欲为)
sudo make install -j8
安装依赖项
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
sudo apt-get install meshlab
git clone https://bitbucket.org/gtborg/gtsam.git
cd gtsam
mkdir build && cd build`
cmake ..
make -j8 (AMD:8条线程而已,拿去用)
sudo make install -j8
在build ch11过程中可能会出现错误,此时,找到文件
/usr/local/lib/cmake/GTSAM/GTSAMConfig.cmake
sudo chmod 666 GTSAMConfig.cmake
将第17行的find_dependency改成find_package之后保存,并恢复只读权限
sudo chmod 444 GTSAMConfig.cmake
sudo apt-get install doxygen
git clone https://github.com/OctoMap/octomap.git
cd octomap
mkdir build && cd build`
cmake ..
make -j8
sudo make install -j8
sudo apt-get install libqglviewer-dev-qt4 (没错,我又把qt4装回来了)
cd octivies
mkdir build && cd build`
cmake ..
make -j8
sudo make install -j8
sudo apt-get install cmake
sudo apt-get install kdevelop
汉化
sudo apt-get install aptitude
aptitude search kdevelop
sudo apt-get install kdevelop-l10n
开启kdevelop后,在Help—switch application language中选择简体中文后重新启动kdevelop,界面就是中文的了。
sudo apt install konsole
至今我依旧不知道怎么讲界面固定为中文,虽说在命令行下启动可以暂时语言,但是关掉之后重启就又变回英文了,遗憾。
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
sudo apt-get install typora
由于teamviewer提供了deb的安装包,因此只需下载之后双击install即可安装使用。