美國課程學習分享2 - 智慧自主機器人控制(一)
今天要來分享 intelligent and autonomous robot control 這門課的上課心得,因為對機器人的領域十分有興趣的緣故就打算修這門課了,這門課字面上的意思就是智慧自主機器人控制,因此會用到一些不同的估測演算法來計算機器人當前的位置與其他狀態等等...,算是非常有挑戰性的一門課。
這邊先簡單介紹機器人的三大組成部分,機器人本身就是一個控制系統,這三個部分形成了一個簡單的迴圈:
瞭解了機器人的主要組成後,便使用目前提到的控制演算法,即十分有名的卡爾曼濾波器(kalman filter - KF),以及之後提到的增強型卡爾曼濾波器(Extended kalman filter - EKF)。
在開始介紹他們之前,必須先引入機率密度函數(probability-density-function)的概念,這是因為機器人本身會因外界干擾(風力、溫度等)影響感測器sensor的準確性,在運動過程又有摩擦力等影響目標值,這些都是機器人的不確定性 uncertainty ,機率密度函數就可以表達在這些不確定性情況下,機器人的感知(perception)與運動(action)下的狀態預測。這邊注意到,機器人在新的時間點都會量測新的感測數據,也就是說舊的感測值(previous measurements: z)會進而影響新的狀態估測值(estimate: x),就需加入貝氏定理(Bayes Formula)來計算在條件機率影響下的狀態估測值的大小。
而前面提到KF與EKF皆是在機率密度函數與貝氏定理的基礎下建立的演算法,這邊就不詳述KF與EKF的原理與過程了,原理請參考下面的影片:
KF影片說明:
以下以一個簡單的機器人開門例子說明如何用貝氏定理(Bayes Formula)來做狀態估測:
假設一個機器人要開門,要先偵測門是否為開啟的狀態,那機器人可以經由感測器得到門開啟幅度的資訊(雷達偵測距離),我們稱其為感測值 z (door),那我們如何知道在 z (door) 的條件下,門是開啟的機率呢?
可以用貝氏定理將這個問題表示為以下的式子:$$
P(\text {open } | z)=\frac{P(z | \text {open }) P(\text {open})}{P(z)}
$$
其中
$P(\text {open } | z)$ 即代表在已知 z (door) 的條件下,門開啟的機率,此為我們要求的機率,也是上面提到的狀態估測值(estimate: x)
$P(z | \text { open})$ 即代表在已知門開啟的條件下,z (door)的機率,此為結果
這邊先簡單介紹機器人的三大組成部分,機器人本身就是一個控制系統,這三個部分形成了一個簡單的迴圈:
步驟如下:
機器人會先透過感知(perceive)周圍環境,確認現在的位置,這時候感測器會收集所需數據,之後將這些不同種類的感測值經過電腦計算得到機器人要走的路徑(path planning),最後讓機器人移動到目的點(target point)
瞭解了機器人的主要組成後,便使用目前提到的控制演算法,即十分有名的卡爾曼濾波器(kalman filter - KF),以及之後提到的增強型卡爾曼濾波器(Extended kalman filter - EKF)。
在開始介紹他們之前,必須先引入機率密度函數(probability-density-function)的概念,這是因為機器人本身會因外界干擾(風力、溫度等)影響感測器sensor的準確性,在運動過程又有摩擦力等影響目標值,這些都是機器人的不確定性 uncertainty ,機率密度函數就可以表達在這些不確定性情況下,機器人的感知(perception)與運動(action)下的狀態預測。這邊注意到,機器人在新的時間點都會量測新的感測數據,也就是說舊的感測值(previous measurements: z)會進而影響新的狀態估測值(estimate: x),就需加入貝氏定理(Bayes Formula)來計算在條件機率影響下的狀態估測值的大小。
而前面提到KF與EKF皆是在機率密度函數與貝氏定理的基礎下建立的演算法,這邊就不詳述KF與EKF的原理與過程了,原理請參考下面的影片:
KF影片說明:
以下以一個簡單的機器人開門例子說明如何用貝氏定理(Bayes Formula)來做狀態估測:
假設一個機器人要開門,要先偵測門是否為開啟的狀態,那機器人可以經由感測器得到門開啟幅度的資訊(雷達偵測距離),我們稱其為感測值 z (door),那我們如何知道在 z (door) 的條件下,門是開啟的機率呢?
可以用貝氏定理將這個問題表示為以下的式子:$$
P(\text {open } | z)=\frac{P(z | \text {open }) P(\text {open})}{P(z)}
$$
其中
$P(\text {open } | z)$ 即代表在已知 z (door) 的條件下,門開啟的機率,此為我們要求的機率,也是上面提到的狀態估測值(estimate: x)
$P(z | \text { open})$ 即代表在已知門開啟的條件下,z (door)的機率,此為結果
$P(\text {open})$ 即前一個(prior)得到的$P(\text {open } | z)$
$P(z)$ 即 z (door)的機率
在每個新的時間點 t,感測值 z 都會更新數值,意即 $P(\text{open } | z)$ 會持續更新並將每次迭代的值帶入下一次計算的 $P(\text {open})$ ,如此慢慢地機器人就可以得到越接近門是開啟的狀態估測值(estimate: x)(越接近1)。


0 留言