基於二階濾波方法的遙控信號平滑處理

基於二階濾波方法的遙控信號平滑處理

使用遙控器控制機器人運動時,若將遙控信號直接轉換爲速度信息,常常會引起機器人的急加/減速。這主要是由於遙控信號存在階躍特性(如速度從0.1m/s突然增大到0.2m/s),大的階躍信號直接作用於電機時,瞬時加/減速度較大,使得整車運動不夠平順。因此本文對遙控信號進行濾波後作用於電機,達到速度平滑的作用。

阻尼器

所謂濾波,即對信號進行平滑。對於遙控信號,可理解爲在信號輸入時增加阻尼器,阻尼器使得響應滯後,達到濾波效果。對於阻尼器的設計,輸入是階躍信號,研究阻尼器系統對階躍信號的響應即可。

理想響應過程

理想響應過程如下圖所示:
在這裏插入圖片描述

系統的響應過程加加速度和加減速度階段互相對稱,且加速度連續變化,速度較爲平滑,可使用sigmoid函數進行變換:

f(x)=11+exbf(x)=\frac{1}{1+e^{x-b}}
其中bb爲座標偏移。
然而由於sigmoid函數無法進行拉氏變換,因此無法使用其特性進行濾波。

一階系統

一階系統傳遞函數:
G(s)=as+aG(s)=\frac{a}{s+a}
系統階躍響應如下圖所示:
在這裏插入圖片描述

從響應曲線來看,在加速度過程中,加速度在0時刻存在瞬間突變,其他過程爲加減速過程,可能導致最終速度的不連貫性。

二階系統

二階系統傳遞函數爲:
G(s)=wn2s2+2ξwns+wn2G(s)=\frac{w^2_n}{s^2+2\xi w_ns+w^2_n}
設定阻尼比ξ=1\xi=1,系統處於臨界阻尼狀態。系統階躍響應如下圖所示:
在這裏插入圖片描述

從圖中可以看出,相較於一階系統,加速度曲線無突變,呈現連續變化的趨勢;與sigmod函數相比,加加速度和加減速度過程不對稱,達不到理想狀態。

實現

本文使用C++進行實現,在ROS上觀察效果。

實現時,阻尼器使用IIR濾波器結構,源碼參照IIR濾波器的C++實現

遙控端使用turtlebot3_teleop節點,接收節點爲filter_node。

首先在code目錄下,使用catkin_make進行編譯。然後啓動turtlebot3_teleop節點:

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

接着啓動接收節點

roslaunch filter_node filter_node.launch

通過PlotJuggler進行數據查看,加速和加減速過程響應曲線如下圖所示:
在這裏插入圖片描述
在這裏插入圖片描述
源碼見github源碼.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章