SLAM十四讲之3
ch3的基本知识还不算难,这里注意向量p在某坐标系下的坐标指的是p点到原点的向量在这个坐标系的单位正交基向量下的表示。例如p= e1a1+e2a2+e3a3 。其中e1,e2,e3为单位正交基向量,那么(a1,a2,a3)就是坐标值。高翔的书解释不是很清楚,此为大坑!
剩下的就是跑程序的事情了。由于cMake理解的不透彻,vscode不太会用,debug一下午一晚上,cMake属实是不会是真不会,会了真简单。
如何CMAKE
在一个大型程序中,经常出现一个大项目中包含了许多小工程文件夹,除了总工程有个汇总的CMAKElist.txt,每个小工程文件夹都有自己的CMAKElist.txt。
如何CMAKE?首先安装CMAKE,之后在cMakelist.txt同级并列建一个build文件夹,在build文件夹中执行以下代码
cmake ..
make
./生成的可执行文件
cmake ..是回到与build文件夹平级的目录下找cMakelist.txt文件。build文件夹的作用是装中间生成的文件,避免项目内容杂乱。
如何安装github上的库?
在ubuntu系统中,在想要下载的文件夹下
git clone http...... .git
下载以后安装依赖:
sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
安装pangolin
cd Pangolin
mkdir build
cd build
cmake ..
make
sudo make install
卸载pangolin:在build文件夹下
sudo make uninstall
出现同类型相同异常报错
这种错误一般出自两个方面:
1、缺少相关的依赖和库
2、库、编译器、cMake版本不协调。
本节项目中,要用到c++14而不是c++11。
C++ 的国际标准有 5 个版本,1998, 2003, 2011, 2014, 2017
最新的 C++20 截至目前还没正式出版。C++03 是给 C++98 打的补丁,所以现在的人提到 C++98, C++03 往往指的是同一个。
ldconfig指令的作用
1、ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。
2、ldconfig的主要用途:
默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。
搜索出可共享的动态链接库,库文件的格式为:lib*.so.,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
缓存文件默认为/etc/ld.so.cache,该文件保存已排好序的动态链接库名字列表。
ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。
ldconfig需要注意的地方:
1、往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf文件的,但是添加完后需要调用下ldconfig,不然添加的library会找不到。
2、如果添加的library不在/lib和/usr/lib里面的话,就一定要修改/etc/ld.so.conf文件,往该文件追加library所在的路径,然后也需要重新调用下ldconfig命令。比如在安装MySQL的时候,其库文件/usr/local/mysql/lib,就需要追加到/etc/ld.so.conf文件中。命令如下:
%# echo “/usr/local/mysql/lib” >> /etc/ld.so.conf
%# ldconfig -v | grep mysql
3、如果添加的library不在/lib或/usr/lib下,但是却没有权限操作写/etc/ld.so.conf文件的话,这时就需要往export里写一个全局变量LD_LIBRARY_PATH,就可以了。