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. 主程式(main.cpp) 主程式是一個可執行檔案,將整個系統的各個部分連線到一起,形成一個整體。其功能主要用來跑 控制閉環 。