Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 8737|回復: 8
打印 上一主題 下一主題

關於卡爾曼濾波和PID

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-3-22 21:29:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我最近也在看卡爾曼濾波,不知是否否有較淺顯易懂的一些相關資料??

我現在用的是i2c介面的陀螺儀和加速器,想請問陀螺儀傳送出的是否是角速度??

卡爾曼完就要PID了,但網路上的卡爾曼都說得好複雜,也沒有個實例說明。

不知有沒有哪位前輩可以以較簡單的方式說明一下卡爾曼濾波或PID。

感激不盡
2#
 樓主| 發表於 2013-3-23 13:27:42 | 只看該作者
奇怪,這論壇有人嗎??
nichal 該用戶已被刪除
3#
發表於 2013-3-23 14:25:22 | 只看該作者
先在論壇上搜索一下吧

http://www.robofun.net/forum/viewthread.php?tid=6327
這是說Kalman Filter

http://www.robofun.net/forum/viewthread.php?tid=2237
這是說PID

如果不會用論壇上的搜索功能
可以看一下首頁右半邊的小格子
裡面有一個搜索分頁
點進去之後輸入你想要知道的關鍵字
(ex: Kalman)
再來選擇全文搜索
預設是"標題"
要改成"全文"才容易找到
因為很多信息是在回應中被提出來的
不是原標題

這樣應該可以幫上你一些忙

另外
這裡不只是挖資料的地方
也歡迎您將自己理解的訊息跟大家分享
論壇是用來討論的
所以對錯也要由您自行判斷

作工程的通常沒有假期
所以比較晚來回應也請耐心等候
有時自己上來回覆自己的問題會更好
祝你順利
4#
發表於 2013-3-23 15:53:19 | 只看該作者
回復 1# snake0907

Kalman filter(KF)是一個"數學"上的,並且以機率為基礎的估測系統,跟一般概念上的"低通""高通"濾波器不一樣。
如果你是要將KF用於陀螺儀和加速規上,我覺得是浪費時間,主要是加速規用於建立系統模型的或量測模型的描述有缺陷。

我否而比較建議用Balance filterhttp://web.mit.edu/scolton/www/filter.pdf
相同的使用條件,BF使用更直覺,code也比較有效能‧
5#
 樓主| 發表於 2013-3-23 20:22:38 | 只看該作者
本帖最後由 snake0907 於 2013-3-23 20:29 編輯

回復 3# nichal


   
感謝兩位大大的回覆,我也有找了不少資料了,但是許多資料
都較困難,看得有點吃力,想請問兩位大大,我用的陀螺儀跟加速器是I2C介面的LSM303DLH+L3G4200D,它們讀到的"值"是什麼??是角速度或加速度嗎??

我現在使用的是簡單移動平均濾波,但好像會有點延遲。

不好意思都用一些簡單問題來煩大家,但是很多在網路上或書裡的資料都寫得很複雜,瞭解後才發現沒那麼難。

感謝各位
6#
 樓主| 發表於 2013-3-23 21:29:33 | 只看該作者
我在網上有看到關於卡爾曼濾波的資料。

想請問

以下這幾個值要怎麼得到啊??
譬如說:


#include <math.h>

class KalmanFilter
{
   public:

      KalmanFilter(double q,double r);
      double Update(double);
      double GetK(){return k;}

   private:

      double k;
//kalman gain
      double p;
//estimation error cvariance
      double q;
//process noise cvariance
      double r;
//measurement noise covariance
      double x;
//value
};

KalmanFilter::KalmanFilter(double q,double r):q(q),r(r),x(0.0)
{
  p = sqrt(q * q + r * r);
}

double KalmanFilter::Update(double value)
{
   p += q;
   k = p / (p + r);
   x += k * (value - x);
   p *= (1 - k);

   return x;
}


q是預測誤差 →請問怎麼"預測"??我在網路上都看到說要預測誤差值,但是我不太清楚它的意思,譬如陀螺儀如果放著不動時應該輸出0,但是確一直輸出5,那5不是就是誤差值嗎?也不需預測啊?

r是感測器誤差 →為什麼有預測誤差和感測器誤差兩種誤差??
k是卡爾曼增益 →這是一個固定的數嗎??
x用來紀錄狀態值
p直接取q與r的平方和開根號 →q與r是要加一起平方和開根號嗎??
7#
 樓主| 發表於 2013-3-30 21:46:29 | 只看該作者
又沒人理我了,我已經看了論壇上一些相關文章,但總覺得每每說到關鍵點各位前輩就不說了,帖子就下潛了‧‧‧‧‧‧‧><
8#
發表於 2013-4-3 00:17:48 | 只看該作者
回復 5# snake0907

>我用的陀螺儀跟加速器是I2C介面的LSM303DLH+L3G4200D,它們讀到的"值"是什麼??是角速度或加速度嗎??

類比轉數位的值,你要看datasheet兩者之間的關係。
比如L3G4200D的設定量程是±500dps(度/秒),那係數就是17.50mdps/digit,所以把量到的值乘以17.5就是實際的角速度,加速規同理。

>我現在使用的是簡單移動平均濾波,但好像會有點延遲。
那就表示你的濾波模型的截止頻率低於系統響應。

>不好意思都用一些簡單問題來煩大家,但是很多在網路上或書裡的資料都寫得很複雜,瞭解後才發現沒那麼難。
>感謝各位
9#
發表於 2013-4-3 00:29:42 | 只看該作者
本帖最後由 g921002 於 2013-4-3 00:32 編輯

回復 6# snake0907
>q是預測誤差 →請問怎麼"預測"??我在網路上都看到說要預測誤差值,但是我不太清楚它的意思,譬如陀螺儀如果放著不動時應該輸出0
>但是確一直輸出5,那5不是就是誤差值嗎?也不需預測啊?
>r是感測器誤差 →為什麼有預測誤差和感測器誤差兩種誤差??

不是,q是量測方程的誤差協方差,不管你用哪種sensor,那要去量出來(靜、動態測試)。跟r(系統方程的誤差協方差)是一樣的東西。
因為你的模型都是根據sensor,所以要實際去量。

而且不管用加速規來描述量測方程或是系統方程,你覺的誤差協方差會是定值嗎?

>k是卡爾曼增益 →這是一個固定的數嗎??
不是

>p直接取q與r的平方和開根號 →q與r是要加一起平方和開根號嗎??
這個似乎有問題,見以下文章
http://www.cs.unc.edu/~welch/media/pdf/kalman_intro.pdf

你沒注意到你引用的code會退化到最小二乘模型嗎?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-4-28 06:55 , Processed in 0.117059 second(s), 11 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表