當前位置:首頁 » 編程軟體 » slam編譯器使用教程

slam編譯器使用教程

發布時間: 2022-09-19 16:39:28

❶ 如何使用Google 的Cartographer SLAM演算法

0.安裝所依賴項
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler Python-sphinx ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
1.首先安裝ceres solver選擇版本1.11,路徑隨意
Git clone
cd ceres-solver-1.11.0/build
cmake ..
make –j
sudo make install

2.安裝 cartographer,路徑隨意
git clone
cd cartographer/build
cmake .. -G Ninja
ninja
ninja test
sudo ninja install

3.安裝cartographer_ros
谷歌官提供安裝比較繁瑣我原文件進行少許修改核代碼變修改編譯文件
載catkin_ws面src文件夾
git clone
catkin_ws面運行catkin_make即

4.數據載測試
2d數據概500M用迅雷載

3d數據8G左右同用迅雷載

運行launch文件即
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag
圖左側2d,右側3d

❷ 適合win10系統的c語言編譯器

桌面操作系統

對於當前主流桌面操作系統而言,可使用 VisualC++、GCC以及 LLVM Clang 這三大編譯器。

Visual C++(簡稱 MSVC)只能用於 Windows 操作系統;GCC 和 LLVM Clang除了可用於Windows操作系統之外,主要用於 Unix/linux操作系統。

像現在很多版本的 Linux 都默認使用 GCC 作為C語言編譯器,而像 FreeBSD、macOS 等系統默認使用 LLVM Clang 編譯器。由於當前 LLVM 項目主要在 Apple 的主推下發展的,所以在 macOS中,Clang 編譯器又被稱為 Apple LLVM 編譯器。

MSVC 編譯器主要用於 Windows 操作系統平台下的應用程序開發,它不開源。用戶可以使用 Visual Studio Community 版本來免費使用它,但是如果要把通過 Visual Studio Community 工具生成出來的應用進行商用,那麼就得好好閱讀一下微軟的許可證和說明書了。

而使用 GCC 與 Clang 編譯器構建出來的應用一般沒有任何限制,程序員可以將應用程序隨意發布和進行商用。

MSVC 編譯器對 C99 標準的支持就十分有限,加之它壓根不支持任何 C11 標准,所以本教程中設計 C11 的代碼例子不會針對 MSVC 進行描述。所幸的是,Visual Studio Community 2017 加入了對 Clang 編譯器的支持,官方稱之為——Clang with Microsoft CodeGen,當前版本基於的是 Clang 3.8。

也就是說,應用於 Visual Studio 集成開發環境中的 Clang 編譯器前端可支持 Clang 編譯器的所有語法特性,而後端生成的代碼則與 MSVC 效果一樣,包括像 long 整數類型在 64 位編譯模式下長度仍然為 4 個位元組,所以各位使用的時候也需要注意。

為了方便描述,本教程後面涉及 Visual Studio 集成開發環境下的 Clang 編譯器簡稱為 VS-Clang 編譯器。

嵌入式系統

而在嵌入式系統方面,可用的C語言編譯器就非常豐富了,比如:

  • 用於 Keil 公司 51 系列單片機的 Keil C51 編譯器;

  • 當前大紅大紫的 Arino 板搭載的開發套件,可用針對 AVR 微控制器的 AVRGCC 編譯器;

  • ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和當前最新的 DS-5 Studio;

  • DSP 設計商 TI(Texas Instruments)的 CCS(Code Composer Studio);

  • DSP 設計商 ADI(Analog Devices,Inc.)的 Visual DSP++ 編譯器,等等。


  • 通常,用於嵌入式系統開發的編譯工具鏈都沒有免費版本,而且一般需要通過國內代理進行購買。所以,這對於個人開發者或者嵌入式系統愛好者而言是一道不低的門檻。


  • 不過 Arino 的開發套件是可免費下載使用的,並且用它做開發板連接調試也十分簡單。Arino 所採用的C編譯器是基於 GCC 的。


  • 還有像樹莓派(Raspberry Pi)這種迷你電腦可以直接使用 GCC 和 Clang 編譯器。此外,還有像 nVidia 公司推出的 Jetson TK 系列開發板也可直接使用 GCC 和 Clang 編譯器。樹莓派與 Jetson TK 都默認安裝了 Linux 操作系統。


  • 在嵌入式領域,一般比較低端的單片機,比如 8 位的 MCU 所對應的C編譯器可能只支持 C90 標准,有些甚至連 C90 標準的很多特性都不支持。因為它們一方面內存小,ROM 的容量也小;另一方面,本身處理器機能就十分有限,有些甚至無法支持函數指針,因為處理器本身不包含通過寄存器做間接過程調用的指令。


  • 而像 32 位處理器或 DSP,一般都至少能支持 C99 標准,它們本身的性能也十分強大。而像 ARM 出的 RVDS 編譯器甚至可用 GNU 語法擴展。


  • 下圖展示了上述C語言編譯器的分類。


❸ ORB SLAM2運行步驟/怎樣跑通orbslam2

tep1:下載ORB_SLAM2放進~/catkin_ws/src下面
Step2:安裝各種依賴項,github官網都寫了

Step3:編譯ThirdParty下面的庫,可以挨個進入cmake+make,也可以執行給的build.sh,具體怎麼用這個文件readme.md裡面給了:
cd ORB_SLAM2
chmod +x build.sh
./build.sh123

Step4:(如果執行過上面的build.sh文件這一步就不用了)進入Vocabulary解壓裡面的文件

Step5:啟動我上一篇博文裡面的cv_camera把攝像頭數據發布到topic

Step6:進入/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src下面打開ros_mono.cc把程序裡面的topic改為/cv_camera/image_raw,具體還要查看自己的rviz,然後進入/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/build下面cmake+make編譯,然後:
cd~/catkin_ws
catkin_make ORB_LSAM212

對於這個程序沒什麼區別。

Step7:添加ROS_PACKAGE_PATH路徑(要想永久添加參照我之前博文關於如何永久修改linux系統環境變數)
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/ROS

Step8:啟動mono
rosrun ORB_SLAM2 Mono
/home/kylefan/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt
/home/kylefan/catkin_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml
有兩個參數,第二個參數是相機參數文件,根據自己的相機參數修改。

❹ 學習SLAM需要哪些預備知識

開始做SLAM(機器人同時定位與建圖)研究已經近一年了。從一年級開始對這個方向產生興趣,到現在為止,也算是對這個領域有了大致的了解。然而越了解,越覺得這個方向難度很大。總體來講有以下幾個原因:
入門資料很少。雖然國內也有不少人在做,但這方面現在沒有太好的入門教程。《SLAM for mmies》可以算是一篇。中文資料幾乎沒有。
SLAM研究已進行了三十多年,從上世紀的九十年代開始。其中又有若干歷史分枝和爭論,要把握它的走向就很費工夫。
難以實現。SLAM是一個完整的系統,由許多個分支模塊組成。現在經典的方案是「圖像前端,優化後端,閉環檢測」的三部曲,很多文獻看完了自己實現不出來。
自己動手編程需要學習大量的先決知識。首先你要會C和C++,網上很多代碼還用了11標準的C++。第二要會用Linux。第三要會cmake,vim/emacs及一些編程工具。第四要會用openCV, PCL, Eigen等第三方庫。只有學會了這些東西之後,你才能真正上手編一個SLAM系統。如果你要跑實際機器人,還要會ROS。
當然,困難多意味著收獲也多,坎坷的道路才能鍛煉人(比如說走著走著才發現Linux和C++才是我的真愛之類的。)鑒於目前網上關於視覺SLAM的資料極少,我於是想把自己這一年多的經驗與大家分享一下。說的不對的地方請大家批評指正。
這篇文章關注視覺SLAM,專指用攝像機,Kinect等深度像機來做導航和探索,且主要關心室內部分。到目前為止,室內的視覺SLAM仍處於研究階段,遠未到實際應用的程度。一方面,編寫和使用視覺SLAM需要大量的專業知識,演算法的實時性未達到實用要求;另一方面,視覺SLAM生成的地圖(多數是點雲)還不能用來做機器人的路徑規劃,需要科研人員進一步的探索和研究。以下,我會介紹SLAM的歷史、理論以及實現的方式,且主要介紹視覺(Kinect)的實現方式。

❺ rviz 怎麼導入 slam數據

tep1:下載ORB_SLAM2放進~/catkin_ws/src下面 Step2:安裝各種依賴項,github官網都寫了 Step3:編譯ThirdParty下面的庫,可以挨個進入cmake+make,也可以執行給的build.sh,具體怎麼用這個文件readme.md裡面給了

❻ 如何使用ICC編譯器,有沒有相關教程

usage: icc [options] file1 [file2 ...]
icpc [options] file1 [file2 ...]

具體的options,可以使用命令icc -help得到

❼ 學習SLAM需要哪些預備知識

SLAM涵蓋的東西比較多,分為前端和後端兩大塊。前端主要是研究相鄰幀的拼接,又叫配准。根據感測器不一樣,有激光點雲、圖像、RGB-D拼接幾種,其中圖像配准中又分基於稀疏特徵(Sparse)的和稠密(Dense)的兩種。後端主要是研究地圖拼接(前端)中累積誤差的校正,主流就兩種,基於概率學理論的貝葉斯濾波器(EKF,PF)以及基於優化的方法。EKF已經用得很少了,PF也就在2D地圖SLAM(Gmapping)中用得多,大多還是用優化的方法在做。

你自己已經說了這塊需要的知識,一個是數學,一個是編程。所以入門的話,也從這兩塊開始弄。
一、數學方面
數學的話,建議樓上說過的Thrun的《probabilistic robotics》,其實不需要全部看完,了解下概率學是如何解決機器人中的問題的,關鍵學習貝葉斯濾波,也是就是貝葉斯公式在各個問題(定位,SLAM)中的應用。另外,優化的話,建議先把最小二乘優化中給弄透徹,數學推導要會,因為很多問題,最後都是歸結到最小二乘優化,然後就是梯度下降、求Jacobian之類的。
二、編程方面
理論的東西是比較無聊的,必須得實戰。建議入門先寫一發最小二乘優化,可以就做一個簡單的直線擬合,不要用Matlab中的優化工具,了解數學推導最後是怎麼寫到代碼裡面的。然後,一定要玩好Matlab優化工具包,做實驗最方便了。
有了一些基礎之後,可以嘗試玩一些現有的SLAM包,推薦兩個地方,一個是www.openslam.org,裡面有各種SLAM包,主流的SLAM演算法,在這一般都有源碼。另外一個就是ROS了,裡面有很多現成的SLAM包,像Gmapping,RGB-D SLAM,上手非常快,甚至你沒有任何設備,你也可以利用ROS中的模擬環境(如Gazebo)跑。建議先試試Gmapping,網路上有很多中文教程,一開始跑這些package還是很漲成就感的,可以提高你的興趣。
如果你是做視覺或者RGB-D,那麼OpenCV和PCL是必不可少的工具。早點上手肯定沒得錯。
三、進階
大體入門之後,你就需要根據你實驗室研究的項目來學習了,看是用激光、相機、還是Kinect來做了,不同感測器的前端演算法還是有些差距的。激光的話一般是ICP,相對簡單。視覺的東西還是比較多的,樓上推薦《Multiview Geometry in Computer Vision》確實很重要,不過,我覺得這同時你還應該了解特徵提取、特徵描述子、特徵匹配這些東西。如果你們實驗室做的Dense registration,那你還得學李代數那些東西(高大上啊,神馬李群看好多天都看不懂啊!!!)。其實,很多演算法都有開源包,你可以去ROS、一些大神博客、牛逼實驗室主頁中多逛逛。

❽ 如何評價高博的《視覺SLAM十四講》

SLAM技術在上個世紀90年代的電腦游戲里就開始應用了,你在玩星際爭霸游戲的時候,每個小兵撥開迷霧向前運動都和SLAM演算法分不開。在幾百塊錢的掃地機器人里,用一個幾十塊錢的嵌入式單板+幾塊錢的紅外感測器+1塊錢的玩具電機就完成了對房間的遍歷,完成房間的清掃。說實話,這些演算法里都用不著狀態估計,別說李代數了,就連線性代數都不用。機器人的位置估計,利用紅外感測器更簡單更准確更有效,是不需要非用攝像頭來做的。而且大部分實際應用中機器人其實根本不需要估計自己的位置,機器人只需要找到目標,向目標移動,遇到障礙進行避障即可。如果視覺系統找不到目標,則對所在的房間進行遍歷。
所以在孤陋寡聞的我看來,SLAM技術差不多到2000年左右,就根本用不著什麼創新了。機器人工程應用中真正使用攝像頭和視覺要解決的問題,是要讓機器人理解哪裡是客廳,哪裡是廚房,哪裡有電冰箱,當主人發出指令來冰箱這里,機器人能夠自己移動到冰箱附近,能夠打開冰箱門,能夠拿東西。這是一個四歲或者五歲孩子到了一個陌生環境中,能夠自己去觀察環境之後,聽到大人的指令就能完成的事情。這是今天真正創新要做的事情。你的狀態估計不僅僅是三維空間內部的估計,更要在視覺語義空間中進行。視覺語義空間則是要讓機器人建立和人類共同的對周圍環境的理解。因為機器人進行的三維空間建模是無法和人直接溝通的。而只有對房間的視覺語義空間進行建模,才真正的能夠和人溝通,解決實際應用問題。能做到這個,那就NB大了!

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:618
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:345
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:60
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:287
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:780
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:332
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:195
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:784
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:348
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:576