我的眼睛採集的是一段連續時間內某些時刻的影象資料,你能得到的是我在這些時刻的位置和環境地圖。而這些時刻是離散的時間點t。
在某一時刻,我自身的位置就是x,從t=1開始到t=k,這段時間內我的所有位置對應為x1……xk,形成我的運動軌跡。
同時,我身上的感測器會在每一時刻測量到一些路標點y,獲取它們的觀測資料。
我需要用數學方式告訴你兩件事:
1.我的運動。兩個相鄰的時刻點k-1和k之間,我的位置x是怎麼變化的。
2.我的觀測。在我運動到某一時刻k時,感測器探測到路標yk。我該怎麼告訴你。
——————————————————————————————————————
1.我的運動。當然有測量我運動的感測器啦。毫無疑問,此刻我的運動肯定跟前一時刻的位置有關係。而且我的運動不是簡單的從a到b:也許是直走前進1公尺,也許是左轉90度,也許是加油,也許是剎車——有距離、有角度、還有加速度,這些都是感測器能夠讀到或者告訴我的運動資料。而且我眼睛看到的會和實際的存在資料會有一定的誤差,這就是雜訊。所以,我可以給你乙個抽象的函式,表示我的運動方程:
x(此刻位置)=f(前一時刻的位置,此刻的運動資料,雜訊)
關於雜訊,舉個例子。感測器告訴我前進1公尺,但是在我身體運動的時候腳下打滑,只前進了0.5公尺。感測器告訴我轉90度,但是我的身體碰到臨時障礙,只轉了80度。這些臨時事故讓雜訊充滿隨機性,如果你對這些雜訊不管不顧,那計算出來的結果一定和我的實際運動相差十萬八千里。
2.我的觀測
當我運動的某一時刻,感測器發現了附近有乙個路標。你肯定會根據我的位置和路標點位置,通過函式計算你想要的的觀測資料。這個過程中肯定也存在雜訊。這個抽象函式可以表示為
z(此刻位置的觀測資料)=h(路標點此刻資料,機械人此刻的位置,雜訊)
根據此刻我的位置x和路標點的資料y,結合雜訊資料,可以大概估計我的定位和環境建。因此slam問題實際就是狀態估計問題。至此,完成基本的數學建模。
slam十四講(一)三維空間剛體運動
外積的方向垂直於這兩個向量,大小為 a b sin a,b 是兩個向量張成的四邊形的有向面積。且外積可以表達旋轉矩陣。其中這個為反對稱矩陣,寫作a 我們把中間的陣拿出來,定義成乙個矩陣 r。這個矩陣由兩組基之間的內積組成,刻畫了旋轉前後同乙個向量的座標變換關係。只要旋轉是一樣的,那麼這個矩陣也是一樣...
視覺SLAM十四講 三 三維空間剛體運動 下
理論部分請看 三維空間剛體運動 首先安裝 eigen sudo apt get install libeigen3 dev一般都安裝在 usr include eigen3 中 include include using namespace std eigen 部分 include 稠密矩陣的代數運...
視覺SLAM十四講 三 三維空間剛體運動 下
理論部分請看 三維空間剛體運動 首先安裝 eigen sudo apt get install libeigen3 dev一般都安裝在 usr include eigen3 中 include include using namespace std eigen 部分 include 稠密矩陣的代數運...