小豆包的学习之旅:里程计运动模型
星球大戰里面有2個非常出色的機器人一個是3PO,一個是R2。我的機器人呢就叫小豆包啦,代號FR2,不許侵犯它的署名哦。
?
常見的機器人運動模型包括:速度計運動模型,里程計運動模型和慣導運動模型。概率運動模型是對機器人運動的一種概率描述。
里程計是比較常見的一種類型。嚴格來說,里程計是一種傳感器測量信息而非控制信息。如果將里程計視為測量信息,貝葉斯濾波需要包含速度作為狀態變量,將增加狀態空間的維度。因此,為了減少狀態空間,通常將里程計數據視為控制信號。
首先是定義:
小豆包在$t-1$時刻的位姿$x_{t-1}=(x,y,\theta)^T$,$t$時刻的位姿$x_{t}=(x',y',\theta')^T$運動控制信息$u_{t}$,概率運動模型為$P\{x_{t}|u_{t},x_{t-1}\}$。
其中,運動控制信息$u_{t}=\{\overline?{x}_{t-1},\overline?{x}_{t}\}$。$\overline?{x}_{t-1}=(?\overline x,?\overline y,?\overline \theta)^T$,$\overline?{x}_{t}=(?\overline x',?\overline y',?\overline?\theta')^T$。
將小豆包在$(t-1,t]$時間間隔內的運動分解為三個階段:旋轉$\delta_{rot1}$,平移$\delta_{trans}$,旋轉$\delta_{rot2}$.
轉向和平移都存在不確定性,則存在三個階段的誤差,認為三個階段的誤差相互獨立,采用高斯分布表達這種不確定性。
運用高斯分布表達噪聲模型,則運動模型算法流程如下:
| ?1: Algorithm motion_model_odometry $(x_{t}, u_{t}, x_{t-1})$: ?2: $\delta_{rot1} = atan2(\overline y'- \overline y, \overline x’ - \overline x) - \overline \theta$ ?3: $\delta_{trans} = (\overline x - \overline x')^2 + (\overline y - \overline y')^2$ ?4: $\delta_{rot2} = \overline \theta' - \overline \theta- \delta_{rot1}$?//里程計讀數,運動控制信息$u_{t}$ ?5: $\delta_{rot1} = atan2(y' - y, x' - x) - \theta$ ?6: $\delta_{trans} = (x - x')^2 + (y - y')^2$ ?7: $\delta_{rot2} = \theta' - \theta - \delta_{rot1}$ ?8: $p1 = prob(\delta_{rot1} - \widehat {\delta}_{rot1}, α1\widehat {\delta}_{rot1}^2 + α2\widehat {\delta}_{rot1}^2 )$ ?9: $p2 = prob(\delta_{trans} - \widehat {\delta}_{trans}, α3\widehat {\delta}_{trans}^2 + α4\widehat {\delta}_{rot1}^2 + α4\widehat {\delta}_{rot2}^2 )$ 10: $p3 = prob(\delta_{rot2} - \widehat {\delta}_{rot2}, α1\widehat {\delta}_{rot2}^2 + α2\widehat {\delta}_{trans}^2 )$ 11: return $p1 · p2 · p3 $ |
采用采樣方式表達運動模型,主要運用于粒子濾波算法中:
| ?1: ?Algorithm Sample_motion_model_odometry $(u_{t}, x_{t-1})$: ?2: ?$\delta_{rot1} = atan2(\overline y'- \overline y, \overline x’ - \overline x) - \overline \theta$ ?3: ?$\delta_{trans} = (\overline x - \overline x')^2 + (\overline y - \overline y')^2$? ?4: ?$\delta_{rot2} = \overline \theta' - \overline \theta- \delta_{rot1}$?//里程計讀數,運動控制信息$u_{t}$ ?5: ?$\widehat {\delta}_{rot1} ?=\delta_{rot1} - sample(α1\widehat {\delta}_{rot1}^2 + α2\widehat {\delta}_{rot1}^2)$ ?6: ?$\widehat {\delta}_{trans}=\delta_{trans}- sample(α3\widehat {\delta}_{trans}^2 + α4\widehat {\delta}_{rot1}^2 + α4\widehat {\delta}_{rot2}^2)$ ?7: ?$\widehat {\delta}_{rot2} ?=\delta_{rot2} - sample(α1\widehat {\delta}_{rot2}^2 + α2\widehat {\delta}_{trans}^2)$ //為運動控制的變化量增加誤差項 ?8: ?$x'= x+\widehat {\delta}_{trans} cos(\theta+\widehat {\delta}_{rot1})$ ?9: ?$y'= y+\widehat {\delta}_{trans} cos(\theta+\widehat {\delta}_{rot1})$ 10: $\theta'= \theta+\widehat {\delta}_{rot1}+\widehat {\delta}_{rot2}$ //加在$t-1$時刻的位姿上,計算出$t$時刻的位姿 11: return $x_{t}=(x',y',\theta')^T$ |
? 里程計數據通過輪編碼器獲取,隨著時間的推移,誤差會不斷累積,而且角度誤差累積的更厲害。IMU對角度的誤差累積比距離累積要小。另外,機器人也可能存在機器人“綁架”之類的機械問題。這些都是運動模型的局限性,需要對運動觀測數據進行優化校正,提高機器人的位姿精度。
機器人“綁架”指的是機器人在運動過程中發生了滑動,機器人傳感器觀測并不知道此情況的發生。
其他的運動模型:Probabilistic Motion Models
?
實例:
轉載于:https://www.cnblogs.com/yhlx125/p/5677135.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的小豆包的学习之旅:里程计运动模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cloud-init 工作原理 - 每天
- 下一篇: 2016-2017 ACM-ICPC P