⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).htm

📁 卡尔曼滤波文章
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    <TD class=f03 
    style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #ffffff 0.5pt solid" 
    vAlign=bottom bgColor=#d1d9e2>  </TD></TR>
  <TR>
    <TD class=f03 
    style="BORDER-RIGHT: #ffffff 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #bbbbbb 0.5pt solid" 
    align=left width="19%" bgColor=#d1d9e2><IMG height=1 
      src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" 
      width=7>2008-02-18,22:35:08 </TD>
    <TD class=f03 
    style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: #bbbbbb 0.5pt solid" 
    vAlign=top width="81%" bgColor=#d1d9e2 ?>
      <TABLE width="100%">
        <TBODY>
        <TR>
          <TD align=left><IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=7> 
            <A class=tt4 
            href="http://www.ouravr.com/bbs/user_information.jsp?user_name=linxianke" 
            target=_blank>资料</A> <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=7> 
            <SPAN class=f01>邮件</SPAN> </TD>
          <TD align=right><IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <A class=tt4 
            href="http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1685378&amp;bbs_id=9999" 
            target=_blank><SPAN class=f01><FONT 
            color=#699bcd>本主题已经审核通过</FONT></SPAN></A> <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <SPAN class=f01>编辑</SPAN> <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <SPAN class=f01>删除</SPAN> <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
            <IMG height=1 
            src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/pixel.gif" width=1> 
          </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0 
cellPadding=6 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=f03 
    style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: #bbbbbb 0.5pt solid; BORDER-BOTTOM: #bbbbbb 0.5pt solid" 
    vAlign=top align=left width="19%" bgColor=#e8e8e8 rowSpan=2>【1楼】 <FONT 
      color=#000000>vivalite </FONT><BR><IMG height=84 
      src="卡尔曼滤波算法的程序哪位有啊? (ourdev_cn 我们的电子开发社区).files/armok01359331.jpg" 
      width=112><BR>积分:<FONT color=#000000>2457</FONT><BR>派别:<FONT 
      color=#000000></FONT><BR>等级:<FONT color=#000000>------</FONT><BR>来自:<FONT 
      color=#000000>彼岸</FONT><BR></TD>
    <TD class=f03 
    style="BORDER-RIGHT: #bbbbbb 0.5pt solid; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none" 
    vAlign=top width="81%" bgColor=#e8e8e8><FONT 
      color=#000000>============================kalman.h================================ 
      <BR><BR>//&nbsp;kalman.h:&nbsp;interface&nbsp;for&nbsp;the&nbsp;kalman&nbsp;class. 
      <BR>// 
      <BR>////////////////////////////////////////////////////////////////////// 
      <BR><BR>#if&nbsp;!defined(AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C0__INCLUDED_) 
      <BR>#define&nbsp;AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C0__INCLUDED_ 
      <BR><BR>#if&nbsp;_MSC_VER&nbsp;&gt;&nbsp;1000 <BR>#pragma&nbsp;once 
      <BR>#endif&nbsp;//&nbsp;_MSC_VER&nbsp;&gt;&nbsp;1000 
      <BR><BR>#include&nbsp;&lt;math.h&gt; <BR>#include&nbsp;"cv.h" 
      <BR><BR>&nbsp; <BR><BR>class&nbsp;kalman&nbsp;&nbsp; <BR>{ <BR>public: 
      <BR>&nbsp;void&nbsp;init_kalman(int&nbsp;x,int&nbsp;xv,int&nbsp;y,int&nbsp;yv); 
      <BR>&nbsp;CvKalman*&nbsp;cvkalman; <BR>&nbsp;CvMat*&nbsp;state;&nbsp; 
      <BR>&nbsp;CvMat*&nbsp;process_noise; <BR>&nbsp;CvMat*&nbsp;measurement; 
      <BR>&nbsp;const&nbsp;CvMat*&nbsp;prediction; 
      <BR>&nbsp;CvPoint2D32f&nbsp;get_predict(float&nbsp;x,&nbsp;float&nbsp;y); 
      <BR>&nbsp;kalman(int&nbsp;x=0,int&nbsp;xv=0,int&nbsp;y=0,int&nbsp;yv=0); 
      <BR>&nbsp;//virtual&nbsp;~kalman(); <BR><BR><BR>}; 
      <BR><BR>#endif&nbsp;//&nbsp;!defined(AFX_KALMAN_H__ED3D740F_01D2_4616_8B74_8BF57636F2C0__INCLUDED_) 
      <BR><BR><BR>============================kalman.cpp================================ 
      <BR><BR>#include&nbsp;"kalman.h" <BR>#include&nbsp;&lt;stdio.h&gt; 
      <BR><BR><BR>/*&nbsp;tester&nbsp;de&nbsp;printer&nbsp;toutes&nbsp;les&nbsp;valeurs&nbsp;des&nbsp;vecteurs...*/ 
      <BR>/*&nbsp;tester&nbsp;de&nbsp;changer&nbsp;les&nbsp;matrices&nbsp;du&nbsp;noises&nbsp;*/ 
      <BR>/*&nbsp;replace&nbsp;state&nbsp;by&nbsp;cvkalman-&gt;state_post&nbsp;???&nbsp;*/ 
      <BR><BR><BR>CvRandState&nbsp;rng; 
      <BR>const&nbsp;double&nbsp;T&nbsp;=&nbsp;0.1; 
      <BR>kalman::kalman(int&nbsp;x,int&nbsp;xv,int&nbsp;y,int&nbsp;yv) 
      <BR>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvkalman&nbsp;=&nbsp;cvCreateKalman(&nbsp;4,&nbsp;4,&nbsp;0&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;=&nbsp;cvCreateMat(&nbsp;4,&nbsp;1,&nbsp;CV_32FC1&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;process_noise&nbsp;=&nbsp;cvCreateMat(&nbsp;4,&nbsp;1,&nbsp;CV_32FC1&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;measurement&nbsp;=&nbsp;cvCreateMat(&nbsp;4,&nbsp;1,&nbsp;CV_32FC1&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;code&nbsp;=&nbsp;-1; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;create&nbsp;matrix&nbsp;data&nbsp;*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;float&nbsp;A[]&nbsp;=&nbsp;{&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;1,&nbsp;T,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;1,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;T, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;1 <BR>&nbsp;&nbsp;}; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;float&nbsp;H[]&nbsp;=&nbsp;{&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;1,&nbsp;0,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0 <BR>&nbsp;&nbsp;}; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;float&nbsp;P[]&nbsp;=&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;pow(320,2),&nbsp;pow(320,2)/T,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;pow(320,2)/T,&nbsp;pow(320,2)/pow(T,2),&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;pow(240,2),&nbsp;pow(240,2)/T, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;pow(240,2)/T,&nbsp;pow(240,2)/pow(T,2) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;}; 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;float&nbsp;Q[]&nbsp;=&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;pow(T,3)/3,&nbsp;pow(T,2)/2,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;pow(T,2)/2,&nbsp;T,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;pow(T,3)/3,&nbsp;pow(T,2)/2, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;pow(T,2)/2,&nbsp;T 
      <BR>&nbsp;&nbsp;&nbsp;}; <BR>&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;float&nbsp;R[]&nbsp;=&nbsp;{ 
      <BR>&nbsp;&nbsp;&nbsp;1,&nbsp;0,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;1,&nbsp;0, 
      <BR>&nbsp;&nbsp;&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;0 <BR>&nbsp;&nbsp;&nbsp;}; 
      <BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvRandInit(&nbsp;&amp;rng,&nbsp;0,&nbsp;1,&nbsp;-1,&nbsp;CV_RAND_UNI&nbsp;); 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cvZero(&nbsp;measurement&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvRandSetRange(&nbsp;&amp;rng,&nbsp;0,&nbsp;0.1,&nbsp;0&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;rng.disttype&nbsp;=&nbsp;CV_RAND_NORMAL; 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;cvRand(&nbsp;&amp;rng,&nbsp;state&nbsp;); 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;cvkalman-&gt;transition_matrix-&gt;data.fl,&nbsp;A,&nbsp;sizeof(A)); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;cvkalman-&gt;measurement_matrix-&gt;data.fl,&nbsp;H,&nbsp;sizeof(H)); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;cvkalman-&gt;process_noise_cov-&gt;data.fl,&nbsp;Q,&nbsp;sizeof(Q)); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;cvkalman-&gt;error_cov_post-&gt;data.fl,&nbsp;P,&nbsp;sizeof(P)); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;cvkalman-&gt;measurement_noise_cov-&gt;data.fl,&nbsp;R,&nbsp;sizeof(R)); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;//cvSetIdentity(&nbsp;cvkalman-&gt;process_noise_cov,&nbsp;cvRealScalar(1e-5)&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;//cvSetIdentity(&nbsp;cvkalman-&gt;error_cov_post,&nbsp;cvRealScalar(1)); 
      <BR>&nbsp;//cvSetIdentity(&nbsp;cvkalman-&gt;measurement_noise_cov,&nbsp;cvRealScalar(1e-1)&nbsp;); 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;choose&nbsp;initial&nbsp;state&nbsp;*/ 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[0]=x; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[1]=xv; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[2]=y; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[3]=yv; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvkalman-&gt;state_post-&gt;data.fl[0]=x; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvkalman-&gt;state_post-&gt;data.fl[1]=xv; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvkalman-&gt;state_post-&gt;data.fl[2]=y; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvkalman-&gt;state_post-&gt;data.fl[3]=yv; 
      <BR><BR>&nbsp;cvRandSetRange(&nbsp;&amp;rng,&nbsp;0,&nbsp;sqrt(cvkalman-&gt;process_noise_cov-&gt;data.fl[0]),&nbsp;0&nbsp;); 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;cvRand(&nbsp;&amp;rng,&nbsp;process_noise&nbsp;); 
      <BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;} 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>CvPoint2D32f&nbsp;kalman::get_predict(float&nbsp;x,&nbsp;float&nbsp;y){ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;update&nbsp;state&nbsp;with&nbsp;current&nbsp;position&nbsp;*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[0]=x; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;state-&gt;data.fl[2]=y; 
      <BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;predict&nbsp;point&nbsp;position&nbsp;*/ 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;x'k=A鈥

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -