1 引言
傳統關節臂坐標測量機存在采用人工手動拖拽、離線測量方式及測量效率低等缺點,無法滿足在線、智能及高精度測量的發展要求 。為實現關節臂坐標測量機在線自動測量,需要開發一款可以實現工件測量點抓取、運動路徑規劃、關節運動控制、測量數據記錄、運算和誤差補償等功能的測控軟件 。
學者們在具有類似結構的串聯機械臂測控軟件及其仿真測試方面取得了不少成果 。李哲樸等研發的軟件被應用于機器人離線編程 , 可以對機器人進行建模仿真及碰撞檢測,但僅能實現人機交互仿真分析,無法將仿真模型與測量機硬件直接連接 。目前常用的ADAMS軟件可以用于預測機械系統性能、可活動范圍及碰撞檢測等,但其仿真不是實時仿真 , 且無交互功能 , 仿真速度慢 。王帥使用軟件開發了機械臂虛擬交互平臺,可以實現場景虛擬測試,但無法滿足現實環境的交互需求 。張戟等利用軟件進行三維建模,并運用ADAMS、AME Sim和開展聯合仿真 。方偉結合與QT平臺搭建了虛擬仿真環境,但僅能滿足示教機器人的使用與操作,兼容性差 。
上述國內外研究的機械臂控制與仿真軟件無法滿足目前自驅動關節臂測量機的運動控制和測量需求,因此有必要重新開發一種能滿足測量機運動控制、測量功能以及精度要求的測控軟件 。
2 上位機測控系統軟件分析
2.1 自驅動關節臂坐標測量機工作原理
自驅動關節臂坐標測量機(簡稱測量機)的整體結構見圖1,由上位機、控制系統和測量機本體三大部分組成 , 通過改造手動關節臂坐標測量機結構,在關節處添加電機、減速器和編碼器等,實現測量機自驅動定位和測量 。
測量機本體由1個基座、3個雙關節、1個測頭和3段連桿組成;控制系統分為主測控模塊和3個關節測控模塊兩大部分,主測控模塊負責總體運行、各模塊間協調及與上位機通信;每個關節測控模塊主要負責一個雙關節電機閉環控制、傳感器的數據采集與傳輸 。工作時,控制系統接到上位機傳輸的指令,轉化為電信號驅動電機轉動,使測頭到達指定位置,角度編碼器采集轉角值實時傳輸到上位機 。
測量機工作時,將被測工件三維模型導入測控軟件 , 精確抓取待測點,并對其三維坐標和測量機測頭初始坐標進行路徑規劃,獲取待測點與測頭初始位置之間的最優路徑 , 實現最佳定位與測量精度 。同時利用運動學反解算法,結合測量機動力學分析結果,確定測量機6個關節的角度變化范圍,傳輸到測量機電機控制系統 , 控制組成3個關節的6個關節模組運動,實現測量機的精確定位與測量 。關節模組編碼器測量得到的角度值被反饋到上位機測控軟件中,基于D-H模型利用測量機建立測量模型 , 實時顯示測量機測頭位置,并利用誤差補償算法進行三維坐標誤差補償,最終實現測量精確定位和高精度測量 。
圖1 自驅動關節臂坐標測量機結構
2.2 測控系統軟件需求分析
由上述測量機的工作原理可知,為了實現測量機路徑規劃、運動控制、精確定位、誤差補償和精確測量,本文研究的測控軟件需滿足以下功能需求 。
(1)自動測量需獲取工件待測點相對于測量機的三維坐標值 , 因此應在上位機軟件中導入待測零件和測量機模型,生成虛擬三維工件,并將加工零件轉化到測量機的坐標系中,精確抓取被測工件的空間位置 。
(2)測控軟件與軟件連接,由抓取得到的坐標點反算出各個關節轉角值,并利用軌跡規劃算法得到最優路徑 。將計算得到的轉角通過通信方式傳輸到控制系統中 , 完成軟件與硬件的連接達到自驅動控制的目的 。
(3)測控軟件需要配置數據庫,將測量系統采集的數據實時傳輸到上位機軟件進行存儲,并利用算法對數據進行誤差補償,完成自動測量 。
3 測量機上位機測控系統軟件設計
對上位機通信系統軟件需求進行深入分析,確定軟件需要具備的功能,完成整體軟件框架設計和軟件環境需求配置 。使用2015開發平臺,并利用MFC與跨平臺API的實現對環境的軟件設計與開發 。
3.1 測量系統軟件功能分析
針對測量機軟件需求,上位機軟件應具備登錄頁面、三維模型顯示、軌跡規劃、定位測量、參數顯示、誤差補償和通信等七大功能(見圖2) 。
為了精確抓取被測工件的三維坐標,三維模型顯示模塊需要將被測工件的三維模型導入上位機建立的測量機三維測量坐標系中 , 進行模型的重構、旋轉、縮放和平移等操作,精確抓取零件測量點和路徑規劃點的三維坐標,并顯示在軟件窗口中 。
圖2 功能模塊
為了將抓取到的坐標點通過軟件中S型軌跡規劃算法反算出6個關節轉角值并顯示在相應控件中,軌跡規劃功能需要與算法鏈接 。為了實現定位測量,軟件需具備設置6個關節的速度與加速度的功能,并通過通信控制各關節的電機轉動 。
為了能夠驅動各關節電機 , 上位機通過通信功能將反解算出的關節轉角和最優路徑發送給控制器 , 同時接收光柵傳感器實時采集反饋回的6個關節轉角 。執行器模塊通過以太網通信 , 光柵傳感器通過串口通信實現數據傳輸 。針對常用通信方式及高實時性要求 , 決定采取串口通信與以太網通信方式 。
為獲得當前關節轉動角度 , 需要實時顯示采集6個關節轉角值和測頭三維坐標位置及6個關節速度 。為實現對被測點坐標數據進行誤差實時補償 , 測量軟件需要具備誤差補償功能 。將采集的6個關節轉角數據、速度、加速度和標定得到的桿長、偏置值、扭轉角,代入由軟件編寫的誤差補償程序,算出點位誤差、標準偏差和平均誤差,從而實現三維坐標的實時補償,并將補償前與補償后的三維坐標數值同步顯示在軟件界面中,便于后續誤差補償效果對比 。
3.2 測控系統軟件框架設計
采用2015中的MFC單文檔應用程序框架和開放端口進行測量機測控軟件界面編寫 。軟件主體框架分為菜單項、左側三維圖形顯示部分和右側參數輸入與顯示部分(見圖3) 。通過類拆分窗口,在類中聲明類型的對象,重寫框架類的()函數,并利用界面掛載自定義消息宏完成通過菜單項選擇調用不同類的Dlg界面mapx寫的地圖能在別的程序中調用嗎,以完成不同功能 。
3.3 測控系統軟件搭建
3.3.1 自驅動關節臂坐標測量機模型抓取
本文編寫的用于三維模型導入重構和三維模型坐標抓取的顯示模塊,利用2015和開放端口,將MFC的繪制設備DC與的繪制環境RC連接起來 。
圖3 軟件整體界面
具體方法為軟件建模后,存儲為.obj文件,采取glfw+glad的程序框架和庫讀取.obj模型文件 。在中定義一個數據結構,包含位置向量、法向量和紋理坐標 , 定義一個結構體存儲紋理數據的id 。定義一個mesh類 , 將所有數據賦予網格,最終調用Draw函數繪制網格 。利用庫中的::::()加載模型,并轉移至上面創建的Mesh對象中 。
采用射線拾取算法獲取測量機三維模型測頭所在坐標點及工件待測點坐標;點擊屏幕二維坐標 , 經過坐標轉化得到投影點;以近平面為起點,向遠平面方向發出一條射線,射線與物體相交得到待測工件坐標點和測頭坐標點 。
3.3.2 調用運動學反解和軌跡規劃算法
用于調用軟件中編寫好的運動學反解算法的軌跡規劃模塊,選擇在MFC中調用軟件編譯生成DLL,并在其文件中編寫算法程序,根據mcc-W :Test-T link:lib Test命令生成庫文件和頭文件 。將生成的庫文件與頭文件添加到項目中,并配置VS的編譯環境 。初始化的調用:
if (!tion(NULL,0))
{(_T(“Could not!”));
;}
if (!())//文件名+構成
{(_T(“Could not!”));
;}
初始化后編寫程序調用軟件已寫好的算法 。
3.3.3 存儲編碼器采集的數據
選擇SQL 數據庫作為測控系統軟件的數據管理系統,對編碼器采集的數據進行存儲和查詢等操作 。MFC采用ADO技術鏈接SQL 數據庫 。
(1)在SQL 數據庫中建立Jointθ數據庫,并新建表 。
(2)加載ADO庫,將以下代碼加入.h中 。
# “c:/ files/ files//ado/.dll”(“EOF” , ””)
(3)創建和對象 。代碼如下:
;//初始化ADO服務器
rdset;//對ADO服務器操作對象
(4)在MFC單文檔的分割對話框()函數中鏈接數據庫 , 可以通過SQL語言實現數據存儲、查詢、修改和刪除等操作 。
3.4 驅動測量機運動
通過串口或以太網通信方式解決PC端上位機軟件與坐標測量機下位機系統實時通信的問題 , 將上位機中設置的信息傳輸到下位機系統,控制坐標測量機運動,達到下位機系統采集到的角度數據傳輸到上位機軟件中進一步處理的目的 。
3.4.1 串口通信
本文上位機與關節臂的實時通信利用類進行串口通信的編寫 , 將類添加到軟件編寫工程中,定義一個變量來標志串口打開,對按鈕“打開串口”添加響應函數完成對串口的初始化 。在.h的頭文件中對類賦予一個具體的對象 。通過串口號、波特率和校驗位等打開串口,根據通信協議將波特率設置為,數據位設置為8位 , 停止位1位,無校驗位 。
實現ASCII文本和十六進制數據發送與顯示 。在中對“發送”按鈕添加事件響應函數d(),檢查串口是否打開,如果沒有打開則直接退出函數 , 打開則調用()函數讀取編輯框中的數據 。再根據十六進制數據和ASCII文本調用類中的兩種不同發送函數發送數據 。添加自定義消息響應函數()接收消息,同樣根據十六進制和ASCII碼調用不同的接收函數()、(),并將消息顯示在串口通信界面的接收編輯框中 。
3.4.2 以太網通信
上位機作為以太網通信中的客戶端,利用 API進行基于TCP的網絡連接,向下位機服務器端請求服務 。
(1)用MFC提供的()函數加載套接字庫 , 在類中增加一個類型成員變量,用于創建套接字,并在類的“連接”按鈕中添加事件響應函數() , 在此函數中調用()函數加載套接字,加載的網絡版本為2.2版本 。
(2)套接字創建成功后mapx寫的地圖能在別的程序中調用嗎,將其綁定到某個IP地址和端口上,IP地址和端口號通過IP地址編輯控件和端口號編輯控件獲取,完成后向服務器發出連接請求,連接成功即可發送及接收消息 。
(3)在類的“發送”按鈕中添加事件響應函數()函數 , 使用()和()函數獲取相應的編輯框控件和信息 。利用Send()函數發送數據 。
(4)在類中自定義靜態線程函數( p),獲取主線程傳遞的套接字和窗口句柄 。
4 仿真測試結果
4.1 測量機三維模型顯示
將測量機模型和待測零件導入軟件,獲取測頭和待測點的三維坐標點 。同一模型在不同軟件中的顯示效果見圖4 。對模型進行平移、縮放和旋轉等操作,并拾取模型上三維坐標點測試(見圖5) 。
圖4 不同軟件顯示效果
圖5 模型基本變換操作和三維坐標點拾取
4.2 調用算法
在軟件三維模型中獲取的待測坐標點通過MFC與軟件連接,調用軟件中函數和算法計算出6個關節轉角,并調用軌跡規劃算法 。通過菜單中“誤差補償”的子菜單“調用” , 可以實現與軟件連接 。此處通過一個簡單函數驗證連接,如圖6所示,調用函數進行簡單的“1+2”計算,生成函數圖形 。
圖6 調用函數測試
4.3 通信
利用虛擬串口通信進行測試,可以實現串口連接,并能發送十六進制和ASCII碼數據(見圖7a) 。對以太網通信進行測試 , 可以實現客戶端與服務器連接并傳輸數據(見圖7b) 。
圖7 串口通信與以太網通信
4.4 數據庫連接
測量機角度編碼器采集的數據通過通信傳輸到上位機需實時存儲,并可以調用存儲數據進行后續誤差補償等處理 。如圖8所示,數據庫連接成功后彈出窗口,提示數據庫連接成功,通過上位機存入數據按鈕將采集的數據存入數據庫中,實現目標任務 。
圖8 數據庫連接及數據存儲
5 結語
本文研究的上位機軟件可以較好地實現自驅動關節臂的需求,兼容性高,界面設計符合友好人機交互性 。
(1)針對自驅動關節臂坐標測量機在線測控系統進行上位機需求分析,確定上位機需完成的功能模塊,完成整體軟件編譯環境配置 。結果表明,配置的編譯環境能夠將采集的數據存入數據庫 , 并可以調用算法對數據進行處理,從而將MFC友好的界面設計與軟件強大的算法相結合 。
(2)對上位機軟件進行了整體界面設計,通過串口通信與以太網通信實現軟件與硬件的連接,達到關節臂自驅動的目的 。將軟件制作的工件模型和關節臂模型導入軟件顯示區域 , 并能對模型進行縮放、旋轉、平移操作和坐標點抓取等操作 。
【自驅動關節臂坐標測量機上位機測控系統軟件設計與仿真】本文到此結束,希望對大家有所幫助 。
- 1 自然教育小活動觀察動物 ?觀察一種小動物
- sharp是什么牌子
- 逆向思維:沒本事的人,都喜歡表現自己
- 豆瓣評分8.2的犯罪片,導演用自己的真實經歷拍了一部電影!
- “戀愛腦”女人的恐怖心理:把全世界的女人都當成自己的情敵
- 川進青出·自由行線路備選/參考
- 性格內向自卑嘴笨不愛交際 ?內向的人很笨
- 食物的營養價值使食用者受益,平時工作繁忙的你是否會為自己洗手作羹湯?
- 不迷信,Windows自帶組件替代者們
- 如何判斷自己的電腦是否有病毒?
