<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 物聯網與傳感器 > 設計應用 > 基于智能車非勻速行駛記憶算法的研究和實現

          基于智能車非勻速行駛記憶算法的研究和實現

          作者:袁三男,汪劍光,張云峰,呂堯 時間:2009-06-19 來源:電子產品世界 收藏

                  3.1、初圈的控制和記憶:

          本文引用地址:http://www.ex-cimer.com/article/95472.htm

            在行使第一圈時的主要目的就是記憶賽道信息特征,并進行一定的處理。按常規(guī)方法小車需要勻速行駛,以便在固定的時間間隔或固定的路程間隔記憶相關的道路信息。本文在算法上進行了改進,第一圈行使時按照模糊控制算法計算相應的速度和方向。在角度的控制上,由于前輪左右轉向力臂不同,導致左右轉角控制不一致,同時對于特定情況下PID有著響應滯后的缺點,減低了系統的響應度和靈敏度,因此本文取消了傳統意義上的PID控制算法,而采用更為準確的模糊控制和遺傳算法。根據光電的個數來確定其量化的等級,再根據所要求的精度進行細化。在不同賽道由于摩擦系數不同,轉角需要微調,在調試確定轉角時,除了根據當前引導線的偏移外還需要根據當前車的運動趨勢來綜合考慮,從而得到轉角的經驗值。當小車實際運行時,按照測試得到的偏移量,再通過查表就可獲得對應的角度偏移值。小車的速度也是按照偏移情況和當前小車的速度計算而得。

            數據記憶時,采用了12個磁鋼的霍爾傳感器,車輪轉一圈得到12個計數,即使在速度很快的情況下響應時間也是us級的,精度足夠滿足要求。

            在非勻速的條件下,本文采用了新的數據存儲格式。首先對當前的狀態(tài)進行彎直的判斷,根據迷糊控制得到的舵機的轉角值c_ang,判斷得到當前車的彎直情況。同時由于車是非勻速行駛的,而第二圈所行駛的時間間隔和路程間隔也并不一定和第一圈完全相同,因此本文只判斷彎直情況,在彎道時,記憶每一個測試點的轉角值,而直道時,既沒必要存儲轉角,又可節(jié)省大量存儲空間,因此對于直道時只記憶直道的起點和終點路程,而該路程是小車相對于起始點的絕對路程,也即霍爾傳感器檢測到的磁鋼的個數ect_cnt。其數據格式用如下表1所示語法來描述,其中0x7f是分隔符,因為轉角值不可能出現0x7f的值。

            表1 道路信息數據格式  

           

            系統按照前一狀態(tài)和當前狀態(tài)的不同情況分別進行數據存儲,其算法如下:當前一狀態(tài)是彎道,現狀態(tài)是直道時,即彎直態(tài),則寫入0x7f,ect_cnt,其中ect_cnt是當前的路徑計數;當直直態(tài)時,不存儲;當直彎時,寫入當前的ect_cnt,0x7f,當前的c_ang;當彎彎時,寫入c_ang。系統初始化時為彎道,則開始行駛后,進入起跑線,此時檢測到是直道,進入彎直狀態(tài),寫入0x47和當前的ect_cnt,這就是道路的起始存儲數據。

            3.2、數據的分析及處理:

            第二圈行駛時對存儲數據進行分析處理。首先,第二圈是采用不同彎直判斷條件,考慮到車在直道上可能發(fā)生的抖動以及在過S彎時會將短暫平緩的彎道檢測為直道,第二圈彎直判斷的條件必須比第一圈嚴格。數據的處理過程,是放在直彎,和彎直的兩種狀態(tài)下執(zhí)行。

            第二圈過起跑線時,系統配置成進入彎直狀態(tài),此時應該根據第一圈記錄的數據算出直道的長度,這樣車在直線上就可以以很高的速度行使,并且能夠提前減速,安全進彎,達到很好的控制效果。根據不同的長度的直道,應該采用不同的路程來進行提前減速,可以采用路程比例的方式,也可以采用分段細化的方式。當分析數據發(fā)現c_ang個數小于某一值時,認為該角度是因為車在直線上非正常的晃動所造成的,將其過濾。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();