X3派 大疆无人机-SLAM单目建图.上
X3派 大疆无人机-SLAM单目建图.ROS包制作
除了我上次说的launch文件没有写,还有SLAM的源码没有分析,除了这些,我先给大家写下SLAM编译的过程,但是X3本身的内存太小了,我一开始按照电脑配置写的j8(相当于火力全开的意思),但是根本不行。
代码语言:javascript复制apt install ros-foxy-vision-opencv ros-foxy-message-filters libeigen3-dev
先安装一下编译的工具
找个目录:
代码语言:javascript复制mkdir -p ./libs
cd ../libs
没必要照抄,自己随便设置
代码语言:javascript复制apt install libgl1-mesa-dev libglew-dev cmake libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev libavdevice-dev libjpeg-dev libpng-dev libtiff5-dev libopenexr-dev
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make install -j8
安装pangolin
j2好一些
只要我慢慢的,就死不了
看起来不是那么死
突然发现X3有点热(编译很无聊的,尤其这种慢的):
想起来盒子里面有一个散热器
很大的哦
在盖以前,我们看看盖子上面有啥?这个微距当然就是使用我们的小微距镜头
就是这个样子的了,我再也不用使用放大镜了(好像这东西就是个放大镜)
一个OK,继续编译
记得回到我们的libs文件夹下面执行我接下来给的命令:
代码语言:javascript复制echo " - Install G2O"
apt install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make install -j2
g2o是一个非线性数值图优化的库:
这个是它大大的名字
还有可爱的Logo
抱歉,哭错坟了
妈的,吓死我了,我以为要死
趁着胆战心惊的编译,这里讲讲SLAM的知识。SLAM的后端一般分为两种处理方法,一种是以扩展卡尔曼滤波(EKF)为代表的滤波方法,一种是以图优化为代表的非线性优化方法。
滤波方法尤其是EKF方法,在SLAM发展很长的一段历史中一直占据主导地位。
优点:在当时计算资源受限、待估计量比较简单的情况下,EKF为代表的滤波方法比较有效,经常用在激光SLAM中。
缺点:它的一个大缺点就是存储量和状态量是平方增长关系,因为存储的是协方差矩阵,因此不适合大型场景。而现在基于视觉的SLAM方案,路标点(特征点)数据很大,滤波方法根本吃不消,所以此时滤波的方法效率非常低。
在视觉SLAM中,虽然包含大量特征点和相机位姿,但其实BA(Bundle Adjustment)是稀疏的,稀疏的就好办了,就可以加速了.
图优化里的图就是数据结构里的图,一个图由若干个顶点(vertex),以及连接这些顶点的边(edge)组成.
比如一个机器人在房屋里移动,它在某个时刻 t 的位姿(pose)就是一个顶点,这个也是待优化的变量。而位姿之间的关系就构成了一个边,比如时刻 t 和时刻 t 1 之间的相对位姿变换矩阵就是边,边通常表示误差项。
在SLAM里,图优化一般分解为两个任务:
1、构建图。机器人位姿作为顶点,位姿间关系作为边。
2、优化图。调整机器人的位姿(顶点)来尽量满足边的约束,使得误差最小。
好怕好怕
成功崩溃哦,这里改j1了,这篇文章快到12点了都没有编译完:
这个是j1编译的,我不知道能不能过
大家晚安,我再守着电脑看看编译情况。
代码语言:javascript复制https://github.com/RainerKuemmerle/g2o
代码语言:javascript复制https://blog.51cto.com/u_14411234/3223690