1. 程式人生 > >概率機器人學習筆記:遞迴狀態估計

概率機器人學習筆記:遞迴狀態估計

       不再可能情況的單一“最好推測”,而用概率演算法表示整個推測空間的概率分佈資訊。其核心為模糊性和置信度,通過在整個空間上的概率密度函式來表示機器人的瞬時置信度<機器人瞬時位置各可能點的各自概率>,機器人感知問題用概率來描述,就是一個狀態估計問題。概率演算法預支未來的不確定性,在本質上確實比非概率演算法效率要低,因為它考慮的是整個概率密度而不是單一的推測。

      由歸納法推導說明。在將時刻t=0的置信度正確初始化的假設下,環境特徵以狀態來表徵,認為狀態是所有會對未來產生影響的機器人以及環境的所有方面的因素。假設一個狀態x可以最好的預測未來,則稱其為完整的,未來可以是隨機的,但沒有先於x的狀態變數可以影響未來狀態的隨機變化。滿足這些條件的暫態過程稱為馬爾科夫鏈。狀態完整性主要是理論上的,在實際的機器人系統當中,不可能指定一個完整的系統。

濾波過程一般分為兩個步驟:預測和更新。貝葉斯濾波器當然也不例外。狀態轉移概率預測,測量概率修正。

      概率生成法則 

        在整個狀態估計當中,有兩個很重要的概念即狀態和測量的演變,由概率法則表示為狀態轉移概率和測量概率。在設定好初始化概率的情況下,系統產生控制作用u_{t},經過計算的到一個控制作用產生後一個當前的系統狀態即為狀態轉移P(x_{t}|x_{t-1},u_{t})

即t-1時刻的系統對其施加一個u_{t}的控制作用,經過計算推導得到t時刻系統狀態,這是一個先驗狀態值,它指出環境狀態作為機器人控制u_{t}的函式是如何變化的。

       而後再經過感測器資料推導得到真實的狀態,就可將之前計算得到的系統狀態做一個修正,這個中間量就是測量概率P(z_{t}|x_{t})

,即經過u_{t}作用在t-1時刻的系統上得到t時刻的系統狀態值,這是一個後驗值。

       以次,狀態轉移概率和測量概率一起,描述了機器人及其環境組成的動態隨機系統。

      置信分佈

      狀態不可測量,而機器人必須從資料中推匯出當前位姿。對於真實的狀態,置信度分佈為每一個可能的假設分配一個概率或者說一個概率密度值。置信度分佈是以可獲得資料為條件的後驗概率,用bel(x_{t})表示置信度。

                                                 bel(x_{t})=P(x_{t}|z_{1:t},u_{1:t})  經過測量值修正的後驗概率

                                                 \bar{bel}(x_{t})=P(x_{t}|z_{1:t-1},u_{1:t})

 先驗值,即預測值

貝葉斯濾波數學推導

        我們來回顧一下一些基本的概率統計當中的一些概念。首先是貝葉斯公式的推導:

        P(A|B)=P(A\cap B)/P(B)     P(B|A)=P(B\cap A)/P(A)

       則 P(A|B)\cdot P(B)=P(B|A)\cdot P(A)P(A|B)=(P(B|A)\cdot P(A))/P(B)

以任意隨機變數為條件,如以條件Z=z為條件由貝葉斯公式:

       P(x|y,z) = \frac{P(y|x,z)P(x|z)}{P(y|z)}

由上一步後驗值p(x_{t-1}|z_{1:t-1},u_{1:t}) 計算後驗分佈p(x_{t}|z_{1:t},u_{1:t})。在將t=0時刻的置信度bel(x0)正確初始化的假設下

由貝葉斯公式得到目標後驗:

        \mathit{p(x_{t}|z_{1:t},u_{1:t})=\frac{p(z_{t}|x_{t},z_{1:t-1},u_{1:t})p(x_{t}|z_{1:t-1},u_{1:t})}{p(z_{t}|z_{1:t-1},u_{1:t})}}

                                =\eta p(z_{t}|x_{t},z_{1:t-1},u_{1:t})p(x_{t}|z_{1:t-1},u_{1:t})

 而在個條件獨立的情況下p(z_{t}|x_{t},z_{1:t-1},u_{1:t})=p(z_{t}|x_{t}),p(x_{t}|z_{1:t-1},u_{1:t})=\bar{bel}(x_{t})則:

                                p(x_{t}|z_{1:t},u_{1:t})=\eta p(z_{t}|x_{t})\bar{bel}(x_{t})bel(x_{t})=\eta p(z_{t}|x_{t})\bar{bel}(x_{t})

由全概率公式p(x)=\int p(x|y)p(y)dy可得:

                                 \bar{bel}(x_{t})=p(x_{t}|z_{1:t-1},u_{1:t})

                                              =\int p(x_{t}|x_{t-1},z_{1:t-1},u_{1:t})p(x_{t-1}|z_{1:t},u_{1:t})d_{x-1}

       馬爾科夫假設是全書的基本假設,所有的公式都是在這個假設基礎行推導而來的,馬爾科夫假設核心思想是:已知當前時刻的狀態,不會影響過去和將來的狀態,即條件相互獨立。

        \bar{bel}(x_{t})=\int p(x_{t}|x_{t-1},u_{t})p(x_{t-1}|z_{1:t-1},u_{1:t-1})d_{x-1}

       \bar{bel}(x_{t})=\int p(x_{t}|x_{t-1},u_{t})bel(x_{t-1})d_{x-1}

       bel(x_{t})=\eta p(z_{t}|x_{t})\bar{bel}(x_{t})

而基本的貝葉斯濾波演算法輸入量為前一時刻後驗值、此刻的控制量和此刻的測量值三個值。虛擬碼如下:

1.機器人使用一個可以測量0~3m距離的感測器。為了簡化,假定真實的距離在這個範圍中均勻分佈。很不幸的是,感測器會壞掉。當感測器故障時,不管感測器的錐形測量範圍內實際測距結果應該是多少,其輸出測距值均小於1m,已知對於感測器故障的先驗概率是p=0.01。 
設想機器人查詢了N次感測器,每次測量值都小於1m。對於N=1,2,...,10 的感測器故障的後驗概率是多少?用公式表示相關的概率模型。
答:設Xn為隨機變數,表示距離感測器在日期n時的狀態。

x_{n}=\left\{\begin{matrix} 0 & broken & \\ 1& intact& \end{matrix}\right. 則\begin{matrix} P(X_{n} = 0)= P = 0.01& & \\ P(X_{n} = 1)= 1 - P = 0.99& & \end{matrix}

由題可知,由於每次測量值都小於1m,即\forall n\in \mathbb{N},Z_{n}\in [0,1]

P(X_{n}=0|z_{1:n})=\eta P(z_{n}|X_{t}=0,z_{1:n-1})P(X_{n}=0|z_{1:n-1})
                           =\eta P(z_{n}|X_{t}=0,z_{1:n-1})P(X_{n-1}=0|z_{1:n-1})

                           =\eta \cdot 1\cdot P(X_{n-1}=0|z_{1:n-1})

                            =\eta \cdot P(X_{0}=0)

                            =\eta \cdot P

同理P(X_{n}=1|z_{1:n})=\eta P(z_{n}|X_{t}=1,z_{1:n-1})P(X_{n}=0|z_{1:n-1})

                                   =\eta P(z_{n}|X_{t}=0,z_{1:n-1})P(X_{n-1}=0|z_{1:n-1})

                                   =\eta \cdot 1/3\cdot P(X_{n-1}=0|z_{1:n-1})

                                   =\eta \cdot 1/3^{n}\cdot P(X_{0}=1)

                                   =\eta \cdot 1/3^{n}\cdot P(1-P)

將其做歸一化處理得到:\eta =1/[p+1/3^{n}\cdot P\cdot (1-P)] 代入概率模型中便可得後驗概率。