<<视觉slam十四讲>>学习记录(二):kde opecv等库安装和各种bug调试
1.22周一
时间过得真快,一周就过去了,看到后面就越发现越难感觉都看不下去,然后周二正好找到高博之前在斗鱼直播的课程,结合着看才好了点,然后重新看了一遍,对旋转矩阵,变换矩阵,李代数这些都更了解了,不过一个人自学之路是坎坷的,一个小问题就要解决半天,希望坚持下去慢慢能有所长进吧。
对了,没想到第一篇发出去还有这么多小伙伴关注,私信问我,其实我刚接触,也不太懂,一个人学确实挺难,于是建了个群,希望有问题能够一起讨论下,哈哈,视觉slam十四讲一起学700340228。
0.ubuntu14.04根目录空间不足:
第一次安装ubuntu时,也不知道那些分区有什么用,然后按照教程给根目录/分了10G,然后不知一下子就用完了,也没安装多少软件,网上查找了很多方法都无法解决,最后只有重装,重装的时候也不知道格式化(新手的痛),然后重装完发现还是之前系统,想着怎么快速解决,于是在win7管理磁盘那把压缩卷删了,然后开机出问题启动不了,应该是ubuntu下启动win7,把root删了也就启动不了。没办法只能再次重装了,重装分区时不能格式化就选择把之前系统分区删除,但不知为何又有三个空闲分区,后面重装启动有问题,没办法,只能重装解决了,没有分区,自动分区装的。
1.安装OpenCV 2.4.9:
使用
sudo apt-get install libopencv-dev
即可.
安装OpenCV 3.3.1cd /
但是后面视觉里程设计用的是opecv3,所以还是得安装3。
参考http://blog.csdn.net/zhuiqiuk/article/details/52934440
基本:
sudo apt-get install build-essential
必须:
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
可选:
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
下载安装包opencv-3.0.0.zip,也可以自行上opencv官网下载http://opencv.org/。
(我下载太慢,直接拷贝师兄的)
解压安装包到你想要的地方,本文以存放主文件加下。
$ cd /home/cy/opencv-3.3.1
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..[遇到错误:download:ippicv_2017u3_lnx_intel64_general_20170822.tgz Optional file (x86_64 only; will be downloaded when running cmake if not present): https://raw.githubusercontent.com/opencv/opencv_3rdparty/dfe3162c237af211e98b8960018b564bc209261d/ippicv/ippicv_2017u3_lnx_intel64_general_20170822.tgz 然后参考这个网站下载 后面cmake成功]
make
sudo make install
2.安装KDE:
链接:http://www.cnblogs.com/lvchaoshun/p/6250649.html
参考(重要):http://wiki.ros.org/IDEs#kDevelop
安装catkin:http://wiki.ros.org/catkin#Installing_catkin
创建空间:http://wiki.ros.org/catkin/Tutorials/create_a_workspace
3.运行高翔<<视觉slam十四讲>>第五章ch5操作opencv图像程序遇到问题:
启动:/home/cy/slambookGao/slambook-master/ch5/ch5/imageBasics/build/imageBasics
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
*** 崩溃,返回值:0 ***
解决:在终端输入命令
$cd /home/cy/slambookGao/slambook-master/ch5/ch5/imageBasics
$build/imageBasics ubuntu.png
得到结果:图像宽为1200,高为674,通道数为3
KDE解决方法:在配置器配置
[参数:ubuntu.png
工作目录:/home/cy/slambookGao/slambook-master/ch5/ch5/imageBasics(自己参数文件存放目录)]
4.PCL库是点云库(Point Cloud Library)。
PCL库的安装比较容易,输入以下命令即可(也可以使用源代码安装):
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
安装完成后,PCL库的头文件将安装在"/usr/include/pcl-1.7/"中。库文件位于"/usr/lib/"中。在CMakeLists中添加头文件和库文件如下:
find_package( PCL REQUIRED COMPOMENT common io )
include_directories( ${PCL_INCLUDE_DIRS}) #添加头文件目录
add_executable( joinMap joinMap.cpp) #添加可执行文件
target_link_libraries( joinMap ${PCL_LIBRARIES} ) #添加库文件目录
生成的点云文件以pcd的格式存储,用PCL提供的可视化程序打开这个文件:
pcl_viewer map.pcd
5.3.运行高翔<<视觉slam十四讲>>第五章ch5拼接点云程序遇到问题:
解决:配置启动器添加参数[pose.txt]及相应工作目录
运行结果显示:
正在将图像转换为点云...
转换图像中: 1
转换图像中: 2
转换图像中: 3
转换图像中: 4
转换图像中: 5
点云共有1081843个点.
*** 正常退出 ***
没有弹出点云图,需在终端输入命令:
$ cd /home/cy/slambookGao/slambook-master/ch5/ch5/joinMap(程序目录)
$ build/joinMap
$ pcl_viewer map.pcd[书上只给出这行代码,前面两行没有给]
6.Sophus库安装:
git clone http://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
Sophus库本身是一个cmake工程,使用以下命令对它进行编译(Sophus库只需编译,无需安装)。
cd XXXX #进入Sophus库文件目录下
mkdir build #新建build文件夹
cd build #进入build文件夹
cmake .. #build上一层目录下执行CMake命令
make #编译
7.Ceres非线性优化库的安装
Ceres库建议去github上下载:https://github.com/ceres-solver/ceres-solver
安装前需要安装它的依赖项,主要是谷歌的一些日志和测试工具。
sudo apt-get install liblpack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev
libgoogle-glog-dev libgtest-dev
CMAKE:
$cd /home/cy/ceres-solver-master
$ mkdir build
$ cd build
$ cmake ..[有错误 依赖项没安装好]
$ make
make: *** 没有指明目标并且找不到 makefile。 停止。
1.23 周二
1.<<opencv入门教程>>
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=33549&extra=page%3D1
1.命令行参数
C/C++语言中的 main 函数,经常带有参数 argc,argv,如下:
int main(int argc, char** argv)
或者
int main(int argc, char* argv[])
在上面代码中,argc 表示命令行输入参数的个数(以空白符分隔),argv 中
存储了所有的命令行参数。
假如你的程序是 hello.exe,如果在命令行运行该程序
(如图 1.14。首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录),
运行命令为:
hello.exe Shiqi Yu
那么, argc 的值是 3, argv[0]是"hello.exe", argv[1]是"Shiqi", argv[2]是"Yu"
2.图像矩阵
一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维矩阵(M× N × 3)表示。对于图像显示来说,目前大部分设备都是用无符号 8 位整数(类型为 CV_8U)表示像素亮度。在 OpenCV 中,RGB 图像的通道顺序为 BGR
3.
早期的 OpenCV 中,使用 IplImage 和 CvMat 数据结构来表示图像。在新版本的 OpenCV 中引入了 Mat 类。新加入的 Mat 类能够自动管理内存。
4.构造函数方法
Mat 类提供了一系列构造函数,可以方便的根据需要创建 Mat 对象。下面是
一个使用构造函数创建对象的例子。
Mat M(3,2, CV_8UC3, Scalar(0,0,255));
cout << "M = " << endl << " " << M << endl;
第一行代码创建一个行数(高度)为 3,列数(宽度)为 2 的图像,图像元
素是 8 位无符号整数类型,且有三个通道。图像的所有像素值被初始化为(0, 0,
255)。由于 OpenCV 中默认的颜色顺序为 BGR,因此这是一个全红色的图像。
第二行代码是输出 Mat 类的实例 M 的所有像素值。
常用的构造函数有:
Mat::Mat()
无参数构造方法;
Mat::Mat(int rows, int cols, int type)
创建行数为 rows,列数为 col,类型为 type 的图像;
Mat::Mat(Size size, int type)
创建大小为 size,类型为 type 的图像;
Mat::Mat(int rows, int cols, int type, const Scalar& s)
创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始
化为值 s;
Mat::Mat(Size size, int type, const Scalar& s)
创建大小为 size,类型为 type 的图像,并将所有元素初始化为值 s;
Mat::Mat(const Mat& m)
将 m 赋值给新创建的对象,此处不会对图像数据进行复制, m 和新对象
共用图像数据;
Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)
创建行数为 rows,列数为 col,类型为 type 的图像,此构造函数不创建
图像数据所需内存,而是直接使用 data 所指内存,图像的行步长由 step
指定。
Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)
创建大小为 size,类型为 type 的图像,此构造函数不创建图像数据所需
内存,而是直接使用 data 所指内存,图像的行步长由 step 指定。
Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange)
创建的新图像为 m 的一部分,具体的范围由 rowRange 和 colRange 指
定,此构造函数也不进行图像数据的复制操作,新图像与 m 共用图像数
据;
Mat::Mat(const Mat& m, const Rect& roi)
创建的新图像为 m 的一部分,具体的范围 roi 指定,此构造函数也不进
行图像数据的复制操作,新图像与 m 共用图像数据。
这些构造函数中,很多都涉及到类型 type。 type 可以是 CV_8UC1, CV_16SC1, ...,
CV_64FC4 等。里面的 8U 表示 8 位无符号整数,16S 表示 16 位有符号整数,64F
表示 64 位浮点数(即 double 类型);C 后面的数表示通道数,例如 C1 表示一个
通道的图像,C4 表示 4 个通道的图像,以此类推。
1.24周三 9:05-10:05
不知莫名其妙输入法不能输入中文,软件安装失败等问题,搜了好多语言支持更改之类的方法解决不了,最后下载了搜狗,搜狗官网下载,解决参考https://zhidao.baidu.com/question/1450452195533527580.html.
1.安装smplayer视频播放器。
$sudo apt-get install smplayer【推荐这个】
还有一款播放器就是vlc播放器。
$sudo apt-get install vlc
2.ubuntu下软件中心安装软件会提示:下载软件包文件失败
終端機下執行...看看出現什麼錯誤訊息...
代码:
sudo apt-get install -f
这主要是软件源的问题
解决方案:
系统->系统管理->软件源->ubuntu软件->下载自->其他站点
在"中国"里选择一个cn99、srt.cn、163,教育网用bjtu.edu.cn的(北京交通大学),我选的是清华大学。或者按"选择最佳服务器"(因为要测试速度,可能要花费些时间)
4. dpkg 被中断
您必须手工运行 sudo dpkg –configure -a
解决此问题
运行下面的命令即可解决
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update
sudo apt-get upgrade
5.第三讲ubuntu安装Pangolin可视化演示旋转矩阵等
首先,需要安装其依赖的库。分别是Glew、CMake、Boost、Python2/Python3。依次输入以下三行代码即可。【一开始以为装了cmek没有安装这个,后面make就出了问题】
sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
接下来就能安装Pangolin了,代码可以从Github下载,依次输入以下代码(如果顺利的话)即可完成安装_,如果出现错误请先跳过这一步。
git clone https://github.com/stevenlovegrove/Pangolin.git【高翔的源程序已经下载了 直接解压进入目录就行】
cd Pangolin
mkdir build
cd build
cmake ..
make
一开始KDE运行出现问题,后面换成终端,不过忘了删掉之前的build,也出现了问题,删掉后重新编译运行成功。
错误:$ cd /home/cy/slambookGao/slambook-master/ch3/build
bash: cd: /home/cy/slambookGao/slambook-master/ch3/build: No such file or directory
正确编译如下:
$ cd /home/cy/slambookGao/slambook-master/ch3/visualizeGeometry
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./visualizeGeometry
6.第四讲KDE运行Sophus,没在终端编译好像都遇到这个错误,第一次看书运行安装了Sophus没有cmake.
/home/cy/slambookGao/slambook-master/ch4/useSophus/build> '' -G 'Unix Makefiles' -DCATKIN_DEVEL_PREFIX=../../devel -DCMAKE_INSTALL_PREFIX=../../install /home/cy/slambookGao/slambook-master/ch4/useSophus/
*** 失败: has failed to start ***
终端:
$ cd /home/cy/slambookGao/slambook-master/ch4/useSophus/
$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./useSophus
7.tar -zcvf
自己想要压缩后的名字 要压缩的文件的目录 --exclude=排除的目录
8.cmake ceres时遇到错误:
-- No preference for use of exported gflags CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported gflags CMake configuration if available.
-- Failed to find installed gflags CMake configuration, searching for gflags build directories exported with CMake.
-- Failed to find an installed/exported CMake configuration for gflags, will perform search for installed gflags components.
-- Failed to find gflags - Could not find gflags include directory, set GFLAGS_INCLUDE_DIR to directory containing gflags/gflags.h
-- Did not find Google Flags (gflags), Building without gflags - no tests or tools will be built!
-- Failed to find glog - Could not find glog include directory, set GLOG_INCLUDE_DIR to directory containing glog/logging.h
CMake Error at CMakeLists.txt:386 (message):
Can't find Google Log. Please set GLOG_INCLUDE_DIR & GLOG_LIBRARY or
enable MINIGLOG option to use minimal glog implementation.
安装依赖项时
sudo apt-get install liblpack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev
libgoogle-glog-dev libgtest-dev
遇到错误:未发现软件包 liblpack-dev
参考官网安装:http://www.ceres-solver.org/installation.html
Start by installing all the dependencies.
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev
# BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse and CXSparse (optional)
# - If you want to build Ceres as a *static* library (the default)
# you can use the SuiteSparse package in the main Ubuntu package
# repository:
sudo apt-get install libsuitesparse-dev
# - However, if you want to build Ceres as a *shared* library, you must
# add the following PPA:
sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687
sudo apt-get update
sudo apt-get install libsuitesparse-dev
We are now ready to build, test, and install Ceres.
tar zxf ceres-solver-1.13.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.13.0
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install #我用的这个/sudo make install
终端camke运行程序:
$ cd /home/cy/slambookGao/slambook-master/ch6/ceres_curve_fitting
$ mkdir build
$cd build
$cmake ..
$make
$ ./curve_fitting
1.25周四
1.安装g2o【这个编译还挺顺利】
安装g2o前需要安装它的依赖库(部分与Ceres由重合):
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.2
libcholmod-dev
(注:最后一个依赖项需要table键来填充名称) 安装完依赖项之后,按照CMake的方式对g2o进行编译安装。
cmake:
$ cd /home/cy/slambookGao/slambook-master/3rdparty/g2o
$ cd build
$ cmake ..
$ make
however,运行程序又出现问题;
/home/cy/slambookGao/slambook-master/ch6/g2o_curve_fitting/build/curve_fitting: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
终端make没问题
$ cd /home/cy/slambookGao/slambook-master/ch6/g2o_curve_fitting
$ mkdir build
$cd build
$cmake ..
$make
$ ./curve_fitting【这行总有问题】周五gegnxin:现在解决了,当时没记录也不记得怎么解决了.
./curve_fitting: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
kde运行没问题了.
1.26周五
1.重新安装了opencv3.3.1
2.运行第七章feature_extraction
kde运行配参数【1.png 2.png】输出:报错
终端运行:
cd /home/cy/slambookGao/slambook-master/ch7
mkdir build
cd build
cmake ..
make
./feature_extraction 1.png 2.png[原来是个错了]
报错:[OpenCV Error: Assertion failed (!outImage.empty()) in drawKeypoints, file /home/cy/opencv-3.3.1/modules/features2d/src/draw.cpp, line 115
terminate called after throwing an instance of 'cv::Exception'
what(): /home/cy/opencv-3.3.1/modules/features2d/src/draw.cpp:115: error: (-215) !outImage.empty() in function drawKeypoints
]
KDE解决[工作目录:/home/cy/slambookGao/slambook-master/ch7]:醉了醉了,果然是用的不熟,配置参数时起工作目录忘了弄,搞了半天,果然还是太菜了,555555.
终端解决:
cd /home/cy/slambookGao/slambook-master/ch7
mkdir build
cd build
cmake ..
make
cd ..[./ 当前目录 ../ 父级目录 / 根目]
build/feature_extraction 1.png 2.png
或
$cd /home/cy/slambookGao/slambook-master/ch7
$ build/feature_extraction 1.png 2.png
3.图优化详细介绍