周浩杰 高峰 石金繼


摘要 通過壓力傳感器獲取座椅上的壓力值分布數據,基于vc++與Open Inventor編寫上位機軟件,將壓力分布數據通過串口通信方式實時上傳到上位機,將獲得的數據實時顯示在上位機上,并將數據繪制成三維圖像,使設計人員不必面對一系列復雜、抽象、雜亂的數據,便于分析座椅壓力分布是否合理,減少設計人員設計座椅的難度。
[關鍵詞]座椅 Open Inventor圖形化顯示vc++
1 引言
座椅在人們的生活中十分普遍,辦公室工作的人大部分工作時間是在座椅上度過的。長時間的坐姿容易使人產生疲勞。大量研究表明,一個設計良好的座椅,可以有效地緩解長時間工作帶來的疲勞。以往在設計座椅的時候,設計師們往往采用傳統的人機工程學理論和方法來評價座椅是否舒適,這種評價方式的客觀性很容易受到測試者自身的影響,很少考慮到座椅和人體之間的壓力分布情況。通過壓力傳感器獲得人體與座椅之間的壓力分布數據,并通過上位機直觀的展現出來,設計人員就能夠了解人體各部位所承受的壓力,進而改善座椅的結構。如何有效地表達和顯示人體對座椅壓力的分布情況將是設計人員面臨的一大問題。因此,對于基于Open Inventor的座椅壓力圖形化顯示上位機軟件的研究就很有必要了。通過該上位機軟件設計人員可以直觀地觀察人體和座椅接觸面之間的壓力分布情況,從而設計出更加人性化、更加舒適的座椅,減輕座椅給人體帶來的不舒適感。
2 0pen Inventor簡介
Open Inventor是一個面向對象的、廣泛應用于三維場景的圖形軟件開發包。它作為一組組件庫,能夠以最少的代碼編寫出強大的圖形硬件功能的程序。Open Inventor構建復雜三維場景一般比OpenGL方便得多。這是因為Open Inventor構建三維場景的方式完全不同于OpenGL,這種構建方式類似于“搭積木”的方式。通過對象與對象之間的直接拼接、組合來構造復雜、優美的三維場景是十分方便、快捷、直觀的。
3 軟件的功能分析及流程設計
3.1 軟件功能分析
上位機軟件的主要任務是將一系列抽象而雜亂的數據通過一定的處理轉化為可視的、直觀的三維圖像,從而實現對座椅壓力分布情況的監測,通過對座椅壓力分布情況的進一步分析,從而能夠了解座椅的舒適性。因此,上位機軟件需具備以下幾項主要功能:
(1)樣本數據的顯示。設計人員可以清楚的觀察到人體和座椅之間指定位置處的壓力數據。
(2)實時數據三維圖形化顯示。設計人員可以實時且直觀地觀察人體與座椅之間的壓力分布情況。
3.2 軟件開發流程
根據實際功能的需要,對座椅壓力圖形化顯示上位機軟件的開發流程進行設計,從而實現采集數據在下位機與上位機之間的數據傳輸與處理。接收到的數據顯示方式有兩種:一種是樣本數據在ListCtrl控件上直接顯示,另一種是先在樣本數據的基礎上利用MATLAB三次貝塞爾插值函數獲得新數據,再將這些新數據經過Open Inventor的處理,從而實現數據圖形化顯示。
開發流程如圖1所示。
該流程分為三個步驟。第一步,STM32通過壓力傳感器獲取人體對座椅的壓力數據并傳入到串口內存中。第二步,通過通信協議將上位機和下位機連接在一起,并將測得的數據實時地傳送給上位機軟件。第三步,上位機軟件完成數據的接收、數據的顯示和數據三維圖形的繪制。
4 上位機程序設計
4.1 窗口視圖靜態分割程序設計
在MFC的SDI視圖中,默認情況下一個文檔只能對應于一個視圖,這樣不能很好的完成數據的顯示功能。為了更好的顯示樣本數據和座椅壓力圖形化的分布視圖,這就需要有兩個視圖類,可以利用CSplitterWnd::CreateStatic對視圖進行靜態分割,同時使用CreateView函數添加新視圖。將原始視圖分割為兩個視圖,CFormView視圖類用來顯示樣本數據,CView視圖類用來繪制數據壓力分布的三維圖形。
4.2 MATLAB插值程序設計
基于樣本數據不足以繪制出平滑、精致的三維曲面,因此,需要利用某種插值函數對樣本數據進行處理。Visual C++ 2008本身并沒有直接用來進行插值的函數,而MATLAB是一個強大的數學和圖像處理工具。為了使Visual C++ 2008能使用MATLAB中的功能函數,需要對其進行一定的處理。它的基本思想是:把MATLAB中的功能模塊作為一個函數,再通過MATLAB的某些指令,將函數轉化成動態鏈接庫(dll)文件,Visual C++2008便可直接調用特定的接口函數,從而實現調用MATLAB中的功能函數的目的。
4.3 樣本數據顯示程序設計
在類向導中添加CSplitterWndView類,基類選擇為CFormView,該視圖顯示樣本數據。為了更直觀、條理的顯示樣本數據,這里使用ListCtrl控件。
4.4 座椅圖形化顯示程序設計
在類向導中添加CPaintOIV類,基類選擇為CView,該視圖顯示樣本數據。文檔視圖框架將數據處理和視圖顯示聯系在一起,當文檔數據改變時,在視圖類中調用文檔UpdataAllViews成員函數即可以更新視圖。
5 運行效果
上位機軟件運行界面如圖2所示。
該上位機軟件可以實現如下功能:
(1)通信端口可選:可以從COM1、COM2. COM3. COM4. COM5、COM6.COM7中選擇合適的通信端口。默認端口為COMl;
(2)實時、準確地將下位機上傳的數據顯示出來;
(3)將接收到的實時數據進行三維圖形繪制,顯示數據的大小和分布。
6 結論
通過獲取人體對座椅的壓力數據,并以直觀的三維圖像顯示,座椅設計人員可以很好地了解座椅設計的是否合理,從而對座椅進一步改良,設計出更加舒適的座椅。本文對座椅壓力分布的圖形化顯示展開了研究,取得如下成果:
(1)使用C++語言和Visual C++ 2008開發平臺開發軟件,并進一步完成和OpenInventor的混合編程。
(2)使用Visual C++ 2008的可視化界面,根據功能需求設計出座椅壓力圖形化顯示上位機軟件,實現了對座椅壓力數據的直觀、形象的三維圖形實時顯示等功能。
(3)對上位機軟件進行實時測試,運行狀態良好。
參考文獻
[1]葉佳桐,譚研.汽車駕駛員座椅舒適性仿真方法…,中國農業大學學報,2016,8 (04):35-37.
[2]王琨,基于CAN總線老人服務機器人通信方法的實現[J].現在制造工程,2016,23 (02): 45-48.
[3]蔡磊,基于Open Inventor產品三維可視化系統研究[D].重慶:重慶大學,2012.
[4]張立科.Window API函數參考手冊[M],北京:人民郵電出版社,2002.