分享

X3派+大疆无人机-SLAM单目建图.中(艰难的编译)

 云深无际 2022-08-20 发布于内蒙古

X3派+大疆无人机-SLAM单目建图.上

X3派+大疆无人机-SLAM单目建图.ROS包制作

除了我上次说的launch文件没有写,还有SLAM的源码没有分析,除了这些,我先给大家写下SLAM编译的过程,但是X3本身的内存太小了,我一开始按照电脑配置写的j8(相当于火力全开的意思),但是根本不行。

apt install ros-foxy-vision-opencv ros-foxy-message-filters libeigen3-dev

先安装一下编译的工具

找个目录:

mkdir -p ./libscd ../libs

没必要照抄,自己随便设置

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-devgit clone https://github.com/stevenlovegrove/Pangolin.gitcd Pangolinmkdir buildcd buildcmake ..make install -j8

安装pangolin

j2好一些

只要我慢慢的,就死不了

看起来不是那么死

突然发现X3有点热(编译很无聊的,尤其这种慢的):

想起来盒子里面有一个散热器

很大的哦

在盖以前,我们看看盖子上面有啥?这个微距当然就是使用我们的小微距镜头

就是这个样子的了,我再也不用使用放大镜了(好像这东西就是个放大镜)

一个OK,继续编译

记得回到我们的libs文件夹下面执行我接下来给的命令:

echo " - Install G2O"apt install cmake libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev-qt5git clone https://github.com/RainerKuemmerle/g2o.gitcd g2omkdir buildcd buildcmake ..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编译的,我不知道能不能过

大家晚安,我再守着电脑看看编译情况。

https://github.com/RainerKuemmerle/g2o
https://blog.51cto.com/u_14411234/3223690

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多