智能車運動狀態即時檢測系統的設計及實現

來源:互聯網
上載者:User
  系統功能及應用

    本系統主要完成將智能車行駛過程中的各種狀態資訊(如感應器亮滅,車速,舵機轉角,電池電量等)即時地以無線串列通訊方式發送至上位機處理,並繪製各部分狀態值關於時間的曲線。有了這些曲線就不難看出智能車在賽道各個位置的狀態,各種控制參數的優劣便一目瞭然了。尤為重要的是對於電機控制PID參數的選取,通過速度—時間曲線可以很容易發現各套PID參數之間的差異。對於採用CCD感應器的隊伍來說,該系統便成為了調試者的眼睛,可以見智能車之所見,相信對編寫循線演算法有很大協助。而且還可以對這些資料作進一步處理,例如求取一階導數,以得到更多的資訊。

    系統的硬、軟體設計

    設計方案主要分成三部分:車載資料擷取系統,無線數傳系統,上位機資料處理系統。系統基本構建1所示。

 

                     圖1智能即時監測系統結構框圖與流程圖

    車載資料擷取系統

    車載資料擷取系統主要由單片機負責採集賽車行駛過程中的速度、感應器狀態、電池電壓、舵機轉角等資訊。為了使監測系統不佔用S12單片機的內部資源並且支援熱插拔,我們將除供電之外的監測系統與智能車控制系統相分離。我們選擇ATMEL公司的ATMEGA16單片機作為該資料擷取系統的處理器。二值型光電感應器訊號的採集直接使用該單片機的I/O口進行採集,連續型光電感應器、電池電壓及CCD網路攝影機訊號則採用該單片機的A/D口進行採集,速度資訊則通過光電編碼器和該單片機的計數器來採集。採集到的資料每20ms向上位機發送一次。

    無線數傳系統

    下位機向上位機傳輸的是以每20ms傳輸一組包含了光電編碼器值(speed),電池電壓(battery),舵機轉角值(angle),感應器目前狀態(sensor)的資料,如果是在理想狀態下,上位機接收到的應是上述各值迴圈出現的周期性資料,此時上位機只需將這些資料按順序裝入各自的數組並畫圖即可。但在實際的無線傳輸過程中可能出現資料丟失現象。因此加入適當的資料校正是必要的,否則會出現資料裝入錯誤,造成畫圖的混亂。我們在實際過程中是在每組資料中加入0x00,0xff的幀頭,當資料出現錯誤時,則捨棄該幀資料。

    資料的無線收發部分採用的是SUNRAY公司的QC96型無線收發模組,該模組可以收發傳輸速率為9600bps的串列資料,距離可達100m。

    上位機的資料接收及處理

    上位機部份主要由四個模組構成:

    ·資料接收模組

    功能:上位機通過串口採集下位機發送的未經處理資料。

    實現:VC++中實現串口通訊一般有二種方式,分別是MSComm控制項和Windows API函數。MSComm簡潔易用,適用於比較簡單的系統,Windows API函數應用較廣但比較複雜繁瑣,由於此模組的串口通訊功能相對簡單,本系統採用前者。在實際過程中使用的是事件驅動的方式,這種方法響應及時,可靠性高,並且比查詢法佔用更少的資源。 

    ·儲存模組

    功能:可直接儲存採集到的未經處理資料,以備以後更多的分析處理。

    實現:在每個OnComm事件被觸發後,將串口接收到的資料直接存入temp臨時檔案,並且可以在使用者的要求下將temp臨時檔案裡的值儲存到指定檔案。

    ·資料的分析和處理模組

    功能:將採集到的未經處理資料進行使用者選定的分析和處理,主要包括丟棄錯誤資料,以及去除幀頭並進行資料裝入任務,同時也可以對已儲存的資料進行分析和處理。

    實現:將temp臨時檔案或使用者指定檔案的資料讀出並裝入,以下為主要程式碼:

    void CChuankokjDlg::find_data(car_data c_data[], BYTE c_source[], int c_length)
{
 int i=0;
 while(i<c_length-6)//防止下標越界
 {  if((c_source[i]==0x00)&&(c_source[i+1]==0 xff)&&(c_source[i+6]==0x0 0)&&(c_source[i+7]==0xff))//判斷幀頭並進行資料裝入
  {
   c_data[length].speed_data=c_source[i+2];
   c_data[length].battary_data=c_source[i+3];
   c_data[length].direction_data=c_source[i+4];
   c_data[length].sensor_data=c_source[i+5];
   i=i+1;
  }
  else
   i++;
 }
}

    ·圖形顯示模組

    功能:以圖形介面來顯示處理後的資料,以便更直觀地觀察智能車的運行狀態。

    實現:將上一模組中裝入各數組的資料在使用者的選擇的模式下進行畫圖,可以只看一幅圖,也可以將四幅圖放在一起進行對比觀看。實際的運行介面及效果2。

                 圖2  圖形顯示介面運行模組
    
    結語

    該系統通過添加無線收發模組,將智能車的即時狀態資訊傳到上位機上,通過VC++編程,用圖象直觀形象地將其表現出來,很好地達到了對智能車狀態即時監測的目的,極大地方便了我們調節PID等智能車參數,對賽道記憶演算法的研究提供了很大的協助。

   (來源:電子產品世界)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.