第一章 里程計(jì)標(biāo)定

寫在前面

我在CSDN上寫了一套關(guān)于ros基礎(chǔ)的圖文教程,歡迎關(guān)注!!!


第一部分、 c++編譯基礎(chǔ)

一、hello slam
  1. 編寫對應(yīng)的c++代碼
#include <iostream>
using namespace std; 

int main( int argc, char** argv )
{
    cout<<"Hello SLAM!"<<endl;
    return 0;
}
  1. 打開終端,進(jìn)入對應(yīng)文件目錄開始編譯
# 直接編譯輸出名為a.out
g++ helloSlam.cpp
# 指定輸出名字
g++ helloSlam.cpp -o helloSlam
二、使用cmake
  1. 編寫CMakeLists.txt
# 聲明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )

# 聲明一個 cmake 工程
project( HelloSLAM )

# 設(shè)置編譯模式
set( CMAKE_BUILD_TYPE "Debug" )

# 添加一個可執(zhí)行程序
# 語法:add_executable( 程序名 源代碼文件 )
add_executable( helloSLAM helloSLAM.cpp )
  1. 調(diào)用cmake對工程分析
cmake .

操作之后會在對應(yīng)文件夾下生成一些中間文件,其中最重要的是makefile

  1. 調(diào)用make對工程進(jìn)行編譯
make

輸出可執(zhí)行文件helloSLAM(與cmakelist中的名稱對應(yīng))

  1. 新建build文件管理生成的大量中間文件
mkdir build
cd build
cmake ..
make
三、 使用庫

只有帶main函數(shù)才可以生成可執(zhí)行文件,對于某些只想直接使用其函數(shù)功能的文件,我們通常用庫形式調(diào)用使用。
一個庫往往是許多算法和程序的集合。

  1. 編寫庫函數(shù)
#include <iostream>

using namespace std;

void printHello(){
    cout << "this is shared library function!" << endl;
}
  1. 編寫對應(yīng)的頭文件
#ifndef TESTLIB_SHAREDLIB_H
#define TESTLIB_SHAREDLIB_H
void printHello();
#endif //TESTLIB_SHAREDLIB_H
  1. 編寫cmakelist.txt
    其中關(guān)鍵步驟分三步:
  • 添加可執(zhí)行庫:
add_library(庫名:Lib  <SHARED> 庫函數(shù)名:useLib.cpp)

執(zhí)行完成上述步驟后,會在對應(yīng)build文件夾下生成庫文件。庫文件分兩種,分別是中間加shared關(guān)鍵字的.so后綴的共享庫文件和不加shared關(guān)鍵字的.a后綴的靜態(tài)庫文件。
兩者的區(qū)別是:靜態(tài)庫每次調(diào)用都會生成一個副本,共享庫只有一個副本。

  • 鏈接庫:
target_link_libraries(可執(zhí)行文件的名稱:main    生成可執(zhí)行庫的名稱:Lib)
  • 在可執(zhí)行文件main.cpp 中include庫文件的頭文件
#include <iostream>
#include "sharedLib.h"

int main() {
    printHello();

    std::cout << "Hello, World!" << std::endl;
    return 0;
}

最終輸出:

this is shared library function!
Hello, World!

第二部分

附上對應(yīng)的作業(yè)地址:
https://github.com/allenhsu6/Odom_Calibration
這個所謂的里程計(jì)標(biāo)定,其實(shí)就是利用激光雷達(dá)的信息,矯正里程計(jì)的系統(tǒng)誤差。默認(rèn)認(rèn)為兩者之間存在某種線性關(guān)系。通過線性最小二乘法求解!

在這個作業(yè)中我們學(xué)習(xí)了eigen庫的基本操作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容