X3派+大疆無人機(jī)-SLAM單目建圖.上
X3派+大疆無人機(jī)-SLAM單目建圖.ROS包制作
除了我上次說的launch文件沒有寫,還有SLAM的源碼沒有分析,除了這些,我先給大家寫下SLAM編譯的過程,但是X3本身的內(nèi)存太小了,我一開始按照電腦配置寫的j8(相當(dāng)于火力全開的意思),但是根本不行。
apt install ros-foxy-vision-opencv ros-foxy-message-filters libeigen3-dev先安裝一下編譯的工具
找個(gè)目錄:
mkdir?-p?./libscd?../libs
沒必要照抄,自己隨便設(shè)置
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好一些

只要我慢慢的,就死不了

看起來不是那么死
突然發(fā)現(xiàn)X3有點(diǎn)熱(編譯很無聊的,尤其這種慢的):

想起來盒子里面有一個(gè)散熱器

很大的哦

在蓋以前,我們看看蓋子上面有啥?這個(gè)微距當(dāng)然就是使用我們的小微距鏡頭

就是這個(gè)樣子的了,我再也不用使用放大鏡了(好像這東西就是個(gè)放大鏡)

一個(gè)OK,繼續(xù)編譯
記得回到我們的libs文件夾下面執(zhí)行我接下來給的命令:
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是一個(gè)非線性數(shù)值圖優(yōu)化的庫:

這個(gè)是它大大的名字

還有可愛的Logo

抱歉,哭錯(cuò)墳了

媽的,嚇?biāo)牢伊耍乙詾橐?/p>
趁著膽戰(zhàn)心驚的編譯,這里講講SLAM的知識(shí)。SLAM的后端一般分為兩種處理方法,一種是以擴(kuò)展卡爾曼濾波(EKF)為代表的濾波方法,一種是以圖優(yōu)化為代表的非線性優(yōu)化方法。
濾波方法尤其是EKF方法,在SLAM發(fā)展很長的一段歷史中一直占據(jù)主導(dǎo)地位。
優(yōu)點(diǎn):在當(dāng)時(shí)計(jì)算資源受限、待估計(jì)量比較簡(jiǎn)單的情況下,EKF為代表的濾波方法比較有效,經(jīng)常用在激光SLAM中。
缺點(diǎn):它的一個(gè)大缺點(diǎn)就是存儲(chǔ)量和狀態(tài)量是平方增長關(guān)系,因?yàn)榇鎯?chǔ)的是協(xié)方差矩陣,因此不適合大型場(chǎng)景。而現(xiàn)在基于視覺的SLAM方案,路標(biāo)點(diǎn)(特征點(diǎn))數(shù)據(jù)很大,濾波方法根本吃不消,所以此時(shí)濾波的方法效率非常低。
在視覺SLAM中,雖然包含大量特征點(diǎn)和相機(jī)位姿,但其實(shí)BA(Bundle Adjustment)是稀疏的,稀疏的就好辦了,就可以加速了.
圖優(yōu)化里的圖就是數(shù)據(jù)結(jié)構(gòu)里的圖,一個(gè)圖由若干個(gè)頂點(diǎn)(vertex),以及連接這些頂點(diǎn)的邊(edge)組成.
比如一個(gè)機(jī)器人在房屋里移動(dòng),它在某個(gè)時(shí)刻 t 的位姿(pose)就是一個(gè)頂點(diǎn),這個(gè)也是待優(yōu)化的變量。而位姿之間的關(guān)系就構(gòu)成了一個(gè)邊,比如時(shí)刻 t 和時(shí)刻 t+1 之間的相對(duì)位姿變換矩陣就是邊,邊通常表示誤差項(xiàng)。
在SLAM里,圖優(yōu)化一般分解為兩個(gè)任務(wù):
1、構(gòu)建圖。機(jī)器人位姿作為頂點(diǎn),位姿間關(guān)系作為邊。
2、優(yōu)化圖。調(diào)整機(jī)器人的位姿(頂點(diǎn))來盡量滿足邊的約束,使得誤差最小。

好怕好怕
成功崩潰哦,這里改j1了,這篇文章快到12點(diǎn)了都沒有編譯完:

這個(gè)是j1編譯的,我不知道能不能過
大家晚安,我再守著電腦看看編譯情況。
https://github.com/RainerKuemmerle/g2ohttps://blog.51cto.com/u_14411234/3223690