深藍學院SLAM課程第二講作業

2021-09-25 13:58:03 字數 2172 閱讀 5848

r(a)=n:矩陣a的秩等於未知數的個數。

⾼斯消元法:通過用初等行變換將增廣矩陣化為行階梯陣,然後通過回代求解線性方程組的解。原理是將方程組中每個方程含有的未知數的個數降到最低,並且最下面的方程含有的未知數的個數最少。

qr分解:把矩陣分解成乙個列向量正交矩陣與乙個上三角矩陣的積。原理是將矩陣每個列作為乙個基本單元,將其化為正交的基向量與在這個基向量上的投影長度的積。參考了這個博主(傳送門)

cholesky 分解:將乙個對稱正定矩陣分解成乙個下三角矩陣與其共軛轉置之乘積。

**如下:

#include

#include

#include

#include

#define matrix_size 10

using namespace std;

intmain()

對應的cmake檔案:

cmake_minimum_required

(version 3.14

)project

(useeigen)

set(cmake_cxx_standard 11

)set

( cmake_build_type "debug"

)# 新增eigen標頭檔案

對應的cmake檔案和上一題類似。

略虛部是三維度的,實部是一維的

證明如下:

首先做如下的示意圖:

設k是定義旋轉軸的單位向量,並且令v是任何向量以k為角度θ旋轉(右手規則,圖中為逆時針)。

使用點和叉積,向量v可以分解為平行和垂直於軸k的分量則有:

其中與k平行的分量是:

其中k是單位向量,(v·k)k = ( |v| |k| cos) k = |v| k (k表示向量方向),稱為向量投影的v上k。

同樣,我們也可以表示出與k垂直的分量:

向量k × v可以被看作是v ⊥由90°逆時針旋轉ķ,所以它們的大小相等,但方向是垂直的(圖中的w向量)。

向量k ×(k × v)表示v ⊥通過逆時針旋轉180°(推導過程利用了向量的叉乘性質,因為反向的,所以加負號)

則平行於k軸的分量在旋轉下不會改變幅度或方向:

垂直分量會改變方向但保持其大小:

那麼,現在完全旋轉的向量是:

通過聯立上述方程可替換變數如下:

對於r和旋轉向量來說來說,即為:

最後貼乙個很形象的圖:

《視覺SLAM十四講》筆記 第二講 初識SLAM

自身位置 定位 周圍環境 建圖 感測器分類 視覺slam 強調未知環境 單目相機 monocular 單目相機的資料 影象 以二維的形式反映了三維的世界。無法通過單張得到深度資訊。存在尺度不確定性 雙目相機 stereo 兩個相機間的距離 基線已知。基線越大,能測量的距離越遠。因此,無人車上的雙目相...

視覺slam第二講筆記 初識slam和編譯

3.ide clion 源 hello.cpp 編譯 g hello.cpp 執行 a.out 建立工程執行編譯 首先,建立 cmakelists.txt,內容如下 cmake minimum required version 2.8 project projectname add executab...

自學《SLAM十四講》 第二講

1.c 中的類和物件的理解 就好比人類和個人?不知道可不可以這麼理解。2.stl standard template library 就是標準模板庫,是一些 容器 的集合 3.linux的目錄結構 其實就是新的c 的標準,用著用著就熟悉了 5.cmake cmake是乙個跨平台的安裝 編譯 工具,可...