Robofun 機器人論壇

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

關於卡爾曼濾波和PID

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

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

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

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

感激不盡
2#
 樓主| 發表於 2013-3-23 13:27:42 | 顯示全部樓層
奇怪,這論壇有人嗎??
3#
 樓主| 發表於 2013-3-23 20:22:38 | 顯示全部樓層
本帖最後由 snake0907 於 2013-3-23 20:29 編輯

回復 3# nichal


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

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

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

感謝各位
4#
 樓主| 發表於 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是要加一起平方和開根號嗎??
5#
 樓主| 發表於 2013-3-30 21:46:29 | 顯示全部樓層
又沒人理我了,我已經看了論壇上一些相關文章,但總覺得每每說到關鍵點各位前輩就不說了,帖子就下潛了‧‧‧‧‧‧‧><
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-12 19:04 , Processed in 0.208019 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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