1. 程式人生 > >[工程經驗] 一個完整控制系統所需要的軟體框架(上位機)

[工程經驗] 一個完整控制系統所需要的軟體框架(上位機)

前言

       每一個大工程都有特定的框架,這樣不僅為一次開發人員提供了基石,更是為二次開發人員提供了便利。每個人可能都會有自己的框架,但是法無定法,萬法歸宗,下面小白給出自己做開發時使用的軟體框架。你既可以直接拿去使用,也可以在此基礎上開創屬於你的框架。

       下面講述的框架,來自小白使用的機器人,是用C++語言編寫的控制程式。也就是說此框架是從一個完整的機器人控制系統中摘下來的。

檔案(.cpp)的任務分配

  1. 全域性變數(Data.cpp)
    建立一個“全域性變數”管理檔案,把系統所有的全域性變數都在此檔案中定義,方便後面的呼叫和修改。
     
  2. 控制迴圈(DataProc.cpp)
    建立一個“全域性迴圈”管理檔案,把系統中某些對全域性變數的迴圈放在此檔案中,方便對全域性性的把握。
     
  3. 運動學分解(Calwheelvel.cpp)
    機器人控制,又可以叫運動機器人控制。顯然這裡就涉及到,機器人整體的速度與車輪(或足)的速度之間的關係,通過運動學解算便可以得到。將這一部分放到一個單獨的檔案中,方便我們對機器人增減 運動執行器(輪或足)的後期操作。
     
  4. 高通,低通濾波(Library.cpp \ HLowFilter.cpp)
    對訊號濾波是很常用的功能,而且我們會不止一次的使用它,但是每一次呼叫的引數可能不同。所以這裡我們需要建立一個高通與低通濾波的庫,將我們需要的形式、引數都列寫在庫裡,使用的時候直接呼叫即可。接下來我們將所有低通和高通的呼叫,再寫到另一個文件裡面,這樣的管理方式是很清晰的。
     
  5. 卡爾曼濾波(Matrix.cpp)
    卡爾曼是什麼,網路上有很多解釋。我們需要為這種濾波方式單獨建立一個檔案。當然,你也可以選擇其它的濾波方式,我們只需要為這種濾波方式單獨建立一個檔案就可以了。
     
  6. 控制演算法(.cpp)
    演算法是一個控制系統的核心部分,也是程式設計師最寶貴的智慧財產權所在。我們可以把演算法的核心控制部分放在單獨的檔案裡,只要設定好輸入與輸出的介面資訊,便可以接入到整個工程中去了。
    這個環節可能有不止一個檔案。
     
  7. 互動按鈕(Tccomm.cpp)
    任一個完整的控制系統都會有一個前端的控制視窗(如:MFC),程式設計師會將每一個按鈕及候選框等人機互動工功能的實現,放到一個單獨的檔案中完成。
     
  8. 機器視覺(Comvision.cpp)
    將計算機視覺的相關資訊,寫到這個單獨的文件裡。
     
  9. 主程式(main.cpp)
    主程式檔案是一個可執行檔案,將整個系統的各個部分連線到一起,形成一個整體。其功能主要用來跑 控制閉環 。