2019上半年有大半時間花在如題話題上
上述主要在MATLAB/SIMULINK下仿真完成,主要的目標是機器人遙感知領域,通過對slave-robot端存在環境擾動下進行力反饋補償,增強master的感知真實性
主要方式是通過採樣環境的干擾運動狀態,對環境干擾運動狀態建模,得到其運動狀態方程X1,和命令slave-robot運動的運動狀態X2疊加(仿真情況)形成帶擾動的運動狀態輸入至環境(根據論文可以建立環境模型)。
要補償的值是力反饋值,在力反饋回master路徑下插入補償值
在過去的日子裏我用了好幾種方法對環境擾動的運動狀態進行估計然後輸入至環境模型得到力補償值進行補償。
數字版系統框圖
MASTER————SLAVE_Robot————Environment————MASTER
|
|
Disturb
1.Kalman Filter
剛開始考慮的環境是線性的,最最最簡單的物理系統:彈簧阻尼系統-卡爾曼波爾茲曼模型(KB-Model)
主要的補償方式是這樣的
MASTER————SLAVE_Robot————Environment——————————————————MASTER
| |
| |
Disturb————KalmanFilter————KB_Model
通過KalmanFILTER對環境運動狀態作出最優估計,將最優估計值代入到KB-Model得到力補償值Fcom,Environment的輸出即是在擾動下的力反饋值Fe,所需要的力增強的反饋值就是
Fd=Fe-Fcom
這樣可能會好理解一點,擾動是你建立的模型,和實際有偏差,將實際的擾動和擾動模型的狀態輸入到KalmanFilter(卡爾曼濾波器還是很好用的,不懂就去搜一搜)再通過建立的參考環境模型得到需要的力補償值,這個補償值一套流程下來基本都是建立在自己建立的參考模型上實現的,所以這裏建立的模型非常關鍵,要比較準確才行,出現較大偏差會對補償產生影響。
2.Extend Kalman Filter
線性在現實時間基本沒存在多少,所以下一步做的仿真就開始注意到非線性上。
其實輸入的狀態一直都是非線性的,MASTER在仿真時候輸入的是正弦波,擾動通過其他論文可以得到可以用正弦波及其諧波疊加代替。但是上一步目標環境的線性的,所以補償效果還是可以的,不過回頭想想,KF並沒有包括環境,其實KF估計目標就是一個非線性的方程,不過這個非線性的仿真在求導後是平移相位,或者說是有無窮階導,如果上述方式利用EKF來估計,再輸入到非線性的model裏面,應該只是非線性的model有變化。
在這裏用的非線性的model叫HC-Model
MASTER————SLAVE_Robot————Environment——————————————————MASTER
| |
| |
Disturb———— EKF ————HC_Model
其他基本不變,就是把KF的估計方式換成EKF,環境模型換成HC-model
但是效果並不是很好,這個應該是應爲沒有把環境模型一起放進去估計的原因,但是如果放進去同時估計,就沒有測量值,所以這種方法還有待考量
3.BP-NN
因爲EKF效果不是很理想,我估摸是因爲環境模型變成了非線性的,所以用BP-NN來訓練力補償值,把環境也包括進去,這樣輸出的力就是估計模型有包括非線性模型的情況了。
輸入數據爲擾動的運動狀態,選取速度V和位移X
輸出數據位環境的輸出值,選取力補償值Fd
訓練後插入進去代替EKF以及HC-model,補償效果依然不好。
4.LSTM-Layer NN
最後考慮到運動的時序性能,用RNN方式來代替BP-NN,但是效果依然不是很好。
在選用非線性模型作爲環境模型的情況下,補償效果都不理想,估計在應爲補償方式僅爲減法,可能需要換一種計算方法進行補償。經過3個多月斷續的實驗,基本的應用方式就上述四種,在此作記錄。