<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SLAM基礎(chǔ)環(huán)境配置

          共 4232字,需瀏覽 9分鐘

           ·

          2023-09-21 21:52

          點(diǎn)擊下方卡片,關(guān)注“新機(jī)器視覺”公眾號(hào)

          視覺/圖像重磅干貨,第一時(shí)間送達(dá)

          轉(zhuǎn)自知乎作者:佳浩

          原文鏈接:

          https://zhuanlan.zhihu.com/p/385255026


          如今,各行各業(yè)都在向著人工智能,自動(dòng)化,網(wǎng)聯(lián)化方向發(fā)展,而SLAM(simultaneous localization and mapping,同步定位與構(gòu)圖)則是智能化方向上很火熱的一個(gè)技術(shù)領(lǐng)域。本篇主要是寫當(dāng)拿到新的操作系統(tǒng)時(shí),該如何配置一個(gè)基礎(chǔ)開發(fā)環(huán)境,那么閑言少敘,讓我們就此進(jìn)入正題。


          1.網(wǎng)絡(luò)連接及軟件源

          • 網(wǎng)絡(luò)連接

          一個(gè)新系統(tǒng)的網(wǎng)絡(luò),可能需要配置一下網(wǎng)關(guān)才能夠連接到現(xiàn)有網(wǎng)絡(luò)上。如果直接能夠連到網(wǎng)絡(luò)上,可以跳過這一條。插上網(wǎng)線或者確認(rèn)wifi后,在右上角網(wǎng)絡(luò)配置里面選擇需要的網(wǎng)絡(luò)進(jìn)行'Edit',確認(rèn)IPV4的信息正常(一般配置192.168.1.XXX等類似的模式),便可以進(jìn)行正常網(wǎng)絡(luò)訪問,下次重啟時(shí)也會(huì)自動(dòng)連接。

          • 軟件源設(shè)置

          可以通過左上角的search按鈕搜'Software & Updates',或者在'System Settings'里面找到這一項(xiàng)。主要修改兩個(gè)地方,如下圖。

          一個(gè)是把從網(wǎng)絡(luò)上下載源碼勾選上,另一個(gè)是源選項(xiàng),可以根據(jù)網(wǎng)絡(luò)情況來自動(dòng)選擇源,也可以使用上交,清華,華中,阿里等的源,這里不會(huì)選的話建議自動(dòng)。一般有點(diǎn)經(jīng)驗(yàn)的話,直接修改鏡像下載地址也可以。

          更改好后,執(zhí)行'sudo apt update'、'sudo apt upgrade -y'兩條命令進(jìn)行更新,大約幾分鐘就可以。


          2.基礎(chǔ)開發(fā)環(huán)境確認(rèn)與搭建

          配置好上述幾點(diǎn),你就可以按照自己的習(xí)慣來處理一下眼前這個(gè)單薄的系統(tǒng)了。舉幾個(gè)基本命令,可以查看一些系統(tǒng)信息,與windows任務(wù)管理的使用方法有些類似。如:使用'ifconfig'可以確認(rèn)網(wǎng)絡(luò)信息,使用'df'命令可以確認(rèn)磁盤,使用'top'可以確認(rèn)cpu及進(jìn)程等。而SLAM技術(shù)的開發(fā)環(huán)境,根據(jù)功能需求或編程語言等劃分也各有不同,此處舉例說明一些基礎(chǔ)庫,IDE的確認(rèn)與配置。

          • SLAM通用類別

          ①g++/gcc。作為最基礎(chǔ)的編譯工具,確認(rèn)好它的版本是很關(guān)鍵的(命令行g(shù)cc/g++ -v 或者gcc/g++ -version)。從4.8到5.4再到更高級的版本,對于相同的源碼編譯出來的結(jié)果,或者說能否通過編譯正確鏈接,是影響很大的,一般來說4.8.5和5.4.0是網(wǎng)上大部分代碼的可用編譯器版本,這里建議兩個(gè)都安裝,平常使用5.4.0,如果遇到低版本兼容問題(難點(diǎn)在于bug發(fā)生時(shí)能否順利發(fā)現(xiàn)是因?yàn)榫幾g器版本的問題,很可能某個(gè)模塊高低版本都能編過,運(yùn)行也都可以,但是有細(xì)小的不可捉摸的錯(cuò)誤,很折磨),需要切換gcc版本編譯,切換方法可以自行搜索。如果需要高版本適配,臨時(shí)使用也是可以的;

          ②boost。boost是一個(gè)大類,含有豐富的功能,這里直接給出安裝命令'sudo apt install libboost-all-dev -y',它主要把C++各個(gè)函數(shù)和你的模塊協(xié)調(diào)起來,增強(qiáng)你對API的調(diào)用,實(shí)現(xiàn)功能,隨便舉個(gè)例子:多線程。確保有這個(gè)庫,讓你事半功倍。

          ③Eigen。Eigen是矩陣庫,SLAM中大量的矩陣運(yùn)算,以及用于數(shù)學(xué)計(jì)算的向量,多維數(shù)組等,Eigen提供了非常好的模板。理解起來就像是把線性代數(shù)帶入了C++,讓一步步累加起來繁瑣的步驟可以直接通過矩陣變換或者類似的原理簡便起來,例如:向量的點(diǎn)積叉積,雅可比黑塞矩陣運(yùn)算等。安裝命令:'sudo apt install libeigen3-dev -y'。

          ④PCL。PCL庫是點(diǎn)云庫,PCL可以對點(diǎn)云進(jìn)行API式的操作,包括各種濾波,特征提取,聚類,旋轉(zhuǎn)平移變換,可視化等十分強(qiáng)大的功能,在激光SLAM算法中堪稱使用最多的庫,甚至可以不加之一倆字。為了避免使用出錯(cuò),PCL庫的安裝盡可能的選擇編譯源碼,因此它并不是像別的確認(rèn)一下或者隨手一個(gè)命令就能解決的了的,在Github的PCL倉能看到,目前有1.7,1.8,1.9,1.10,1.11幾個(gè)不同版本,以安裝差異來區(qū)別:其中1.7是屬于一類,1.8,1.9,1.10屬于另一類,1.11屬于新一類。此處安裝差異指以源碼編譯方式安裝或移植造成可能的錯(cuò)誤。

          ⑤OpenCV。OpenCV庫是主要處理視覺圖像的庫,在視覺SLAM算法中也是使用最多的一類,對此也要確認(rèn)2系列和3系列的區(qū)別,由于接口和API的相當(dāng)一部分不同,在代碼寫作時(shí)也會(huì)有較大差異,安裝時(shí)盡可能計(jì)劃清楚。安裝命令'sudo apt install libopencv-dev'(一般鏡像源上的OpenCV是2系列)

          ⑥Ceres。SLAM算法中一個(gè)著名的區(qū)分方向就是后端優(yōu)化,如何用手上粗糙的數(shù)據(jù)給出精準(zhǔn)的預(yù)測,或者是把數(shù)據(jù)融合成一個(gè)能夠讓人信服的結(jié)果,就是后端優(yōu)化經(jīng)常考慮的問題。而Ceres庫就是為了后端優(yōu)化而生,它本身源于谷歌,安裝的時(shí)候也是從GitHub上下載源代碼進(jìn)行編譯使用,因?yàn)樗陌惭b還要求了一些依賴項(xiàng),使用起來也會(huì)有比較多的說法。計(jì)劃后續(xù)也會(huì)開一個(gè)專題來講這個(gè)Ceres庫的應(yīng)用。

          另外還有諸如g2o,py系列的一些工具等也比較常用,由于使用經(jīng)驗(yàn)不足,就不在這里多說,且行且學(xué)習(xí),相關(guān)問題可以交流。

          • IDE

          IDE種類很多,見過多屏多IDE的代碼大佬,也見過用gedit的魔幻選手,還有使用vi的祖師爺,不過就使用上來講,還是固定一兩個(gè)IDE來比較好。部分IDE舉例:VSCode,QT Creator,Kdevelop,CLion等等。這里就稍微說說VSCode和QT Creator,因?yàn)槊恳粋€(gè)IDE從安裝到配置,再到使用時(shí)的額外附加項(xiàng),其實(shí)都有挺多坑,如果有必要的話,后期再聊,這里就是一個(gè)普通的安裝科普。

          ①VSCode。VSCode現(xiàn)在是本人最喜歡的開發(fā)環(huán)境,安裝簡單,隨手一個(gè)官網(wǎng),就有詳細(xì)的安裝步驟。這里提出來說是因?yàn)閂SCode集成了許多功能插件,寫代碼方面的幫助非常強(qiáng)大,還有一些奇妙的黑科技,甚至一些摸魚奇招,感興趣可以自己找,有空的話再多介紹。需要注意的是幾個(gè)配置的json文件,包括尋庫路徑,編譯參數(shù)等等,如果一個(gè)大工程是基于VSCode開發(fā)的話,代碼移植性也會(huì)由于json文件的存在而提高許多,另外VSCode的插件版本也可以一同管理著大家的公共部分版本,在以控制變量法解決問題時(shí)非常有幫助,各模塊版本管理也就方便了起來。

          ②QT Creator。QT Creator個(gè)人感覺是一個(gè)更加專業(yè)的代碼開發(fā)環(huán)境,有點(diǎn)類似于windows下的VS,它的強(qiáng)大之處在于圖形化界面開發(fā)以及工具開發(fā),具備非常優(yōu)秀的輔助調(diào)試能力,其特有的qmake也可以讓代碼安全等級更高,在配置中具備更多的高級選項(xiàng),啟動(dòng)時(shí)可以加載觸發(fā)文件就能瀏覽整個(gè)工程,也很方便。如果說VSCode像是一匹戰(zhàn)馬,你可以自由地更改方向和速度,那么QTCreator就像是一部戰(zhàn)車,威力強(qiáng)大,裝甲優(yōu)良。個(gè)人使用過程中唯一遇到的難點(diǎn)就是QTCreator在包含部分頭文件/庫的時(shí)候,跳轉(zhuǎn)功能會(huì)卡住甚至未響應(yīng)。

          ③Kdevelop。安裝簡單,方便上手,在需要打開項(xiàng)目工程代碼的時(shí)候,沒有良好配備的VSCode或者QT,也不想用vim,nano甚至是詭異的gedit,Kdevelop也是個(gè)不錯(cuò)的選擇。使用命令'sudo apt-get install Kdevelop-dev'

          IDE的選擇,根據(jù)實(shí)際需來決定,就像是VSCode和QT Creator在本身上的一些區(qū)別一樣,需要什么就用什么,甚至無圖形界面的vi也是一代開發(fā)板編輯傳奇呢,實(shí)在不行g(shù)edit也是可以完成任務(wù)的。


          3.嘗試一個(gè)Hello World

          好啦,安裝好了各種環(huán)境,不試一下怎么能行呢。隨手寫一個(gè)Hello World,檢測一下你的編碼能力吧。

          std::cout << "Hello World!" << std::endl;

          聲明:部分內(nèi)容來源于網(wǎng)絡(luò),僅供讀者學(xué)習(xí)、交流之目的。文章版權(quán)歸原作者所有。如有不妥,請聯(lián)系刪除。
          —THE END—

          瀏覽 191
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大鸡巴视频网 | 在线一区播放 | 免费日p视频 | 亚洲在钱免费观看 | 日韩国产操逼 |