王瑜,張浩男,趙宇梵
(西安航空學院機械工程學院,陜西西安 710077)
近年來,機器人技術發展迅速,各種各樣的機器人廣泛應用于工業、農業、教育業等場合。魔方作為教學工具,解魔方不僅可以加深人們的空間理解能力,設計解魔方機器人還需要具備機械結構設計、電控系統設計、計算機程序設計等能力,涉及多門課程的理論和實踐教學,解魔方機器人設計是近幾年的熱點[1-4]。
為了設計解魔方機器人,國內外學者們開展了大量相關研究工作,2019 年,長春職業技術學院機電學院的崔文程設計了OPENCV 視覺下閃電解魔方機器人,機器人采用雙臂結構,采用視覺和控制以及Two Phase Algorithm 算法實現魔方復原[5]。2021 年,東華理工大學機械與電子工程學院的劉樹博等以STM32F407VET6 單片機和安卓手機作為核心,使用Android 手機完成解魔方算法,發送指令至下位機,下位機采用STM32F407VET6 單片機控制步進電機和舵機,設計新型四軸解魔方機器人,實現打亂的魔方自動還原功能[6]。河北大學的趙曉軍等設計的嵌入式智能解魔方機器人,以Cortex-A9 處理器為核心,通過PWM 波控制舵機,利用OV5640 攝像頭采集魔方各個面顏色,使用Lab 模型+KNN 算法識別顏色,快速且準確復原魔方[7]。
設計一種基于LabVIEW 的解魔方機器人,系統具有自動和手動兩種模式,可以實現魔方自動求解和手動求解兩種功能。滿足求解魔方和魔方教學的需求。該系統由上位機、下位機兩部分組成。上位機中的視覺模塊主要完成采集和處理圖像功能,生成可用于算法解算的數據,通過程序內部的數據流傳送至算法模塊進行還原解析,后續的解析結果通過通訊模塊傳送到下位機,下位機控制執行機構完成魔方的還原操作。
基于LabVIEW 的解魔方機器人系統結構圖如圖1 所示,系統由上位機和下位機組成。系統上位機基于LabVIEW 平臺,實現圖像采集、色塊位置識別、色塊位置手動配置/校準、三維孿生重建、生成還原指令、發送還原指令等功能。STC89C52 作為系統下位機的控制核心,實現接收還原指令、控制執行組件完成動作指令、轉動并還原魔方等功能。

圖1 系統結構圖
系統選用28BYJ-48 步進電機實現執行動作指令,轉動并還原魔方的功能。28BYJ-48 步進電機為五線四相永磁式步進電機,可以將電脈沖信號轉換成角位移或線位移[8]。28BYJ-48 步進電機的控制線有五根,其中一根是電源線,四根是相序線。系統選用ULN2003 驅動模塊驅動28BYJ-48 步進電機[9],ULN2003 驅動模塊的電源、地接線端分別連接VCC、GND,ULN2003 驅動模塊的IN1-IN4 接線端分別和STC89C52 的I/O 口相連,ULN2003 驅動模塊U2 的IN1-IN4 接線端分別和STC89C52 的P10-P13 相連,ULN2003 驅動模塊U3 的IN1-IN4 接線端分別和STC89C52 的P14-P17 相連,ULN2003 驅動模塊U4的IN1-IN4 接線端分別和STC89C52 的P00~P03 相連,ULN2003 驅動模塊U5 的IN1-IN4 接線端分別和STC89C52 的P04-P07 相連,ULN2003 驅動模塊U6的IN1~IN4 接線端分別和STC89C52 的P20-P23 相連,ULN2003 驅動模塊U7 的IN1-IN4 接線端分別和STC89C52 的P24-P27 相連。步進電機驅動模塊、步進電機模塊的連接電路圖如圖2 所示。

圖2 步進電機驅動模塊、步進電機模塊的連接電路圖
28BYJ-48 步進電機的五根控制線分別和ULN2003 驅動模塊的步進電機接口端相連[10-11]。28BYJ-48 步進電機的VCC 和ULN2003 驅動模塊的VCC 接線端相連。28BYJ-48 步進電機B1 的1A-4A接線端分別和ULN2003 驅動模塊U2 的對應接線端相連,28BYJ-48 步進電機B2 的1B~4B 接線端分別和ULN2003 驅動模塊U3 的對應接線端相連,28BYJ-48 步進電機B3 的1C-4C 接線端分別和ULN2003 驅動模塊U4 的對應接線端相連,28BYJ-48 步進電機B4 的1D-4D 接線端分別和ULN2003 驅動模塊U5 的對應接線端相連,28BYJ-48 步進電機B5 的1E~4E 接線端分別和ULN2003 驅動模塊U6 的對應接線端相連,28BYJ-48 步進電機B6 的1F-4F接線端分別和ULN2003 驅動模塊U7 的對應接線端相連。
系統選用STC89C52作為控制核心[12],STC89C52、USB 轉TTL 模塊的連接電路圖如圖3 所示。STC89 C52 的VCC 和USB 轉TTL 模塊的5 V 接線端相連,STC89C52 的GND 和USB 轉TTL 模塊的GND 接線端相連,STC89C52 的TXD 和USB 轉TTL 模塊的RXD接線端相連,STC89C52 的RXD 和USB 轉TTL 模塊的TXD 接線端相連。STC89C52 的RST 接線端連接復位電路,STC89C52 的XTAL1、XTAL2 接線端連接晶振電路[13]。

圖3 STC89C52、USB轉TTL模塊的連接電路圖
系統上位機軟件需要具備以下功能:圖像采集功能、色塊位置識別功能、色塊位置手動配置/校準功能、三維孿生重建功能、還原算法指令生成功能、串口通信功能等。上位機參數配置前面板如圖4 所示[14],主要包括相機端口控件、串口配置控件等。

圖4 上位機參數配置前面板
上位機主界面設計主要功能分區為左上角的圖像采集顯示功能區、左下角的色塊位置自動識別與手動校準配置功能區、右上角的三維孿生實時顯示交互功能區、右下角的建模還原功能區。上位機主界面前面板如圖5 所示。

圖5 上位機主界面前面板
圖像采集顯示功能區主要實現圖像實時采集顯示功能,并為用戶提供魔方位置參考,方便用戶快速調整魔方位置達到快速準確識別的目的[15]。
色塊位置自動識別與手動校準配置功能區實現色塊的識別配置功能,主要有自動與手動配置功能,手動配置功能可滿足上位機硬件外設不足的情況下對魔方建模的需求,校準功能可以提高自動識別算法的準確性。
三維孿生實時顯示交互功能區可以查看三維魔方建模,驗證魔方建模的準確,方便提前驗證數據及方法的正確與否。
建模還原功能區可以實現魔方建模、自動/手動還原、串口通信交互信息顯示、退出程序等功能。
系統下位機軟件主要實現以下功能:通過串口接收上位機指令,并控制解魔方機器人做出相應操作;通過串口返回執行狀態指令,方便上位機完成狀態判斷;控制執行組件完成動作指令的功能,轉動魔方完成指令響應[16-19]。系統下位機程序流程圖如圖6所示。

圖6 系統下位程序流程圖
系統下位機主要包括系統初始化、步進電機驅動、串口通信等。系統初始化后,判斷下位機數據接收端是否成功讀取數據,讀取數據成功后,判斷執行哪種控制指令,并返回指令,執行指令,從而實現控制步進電機旋轉,求解魔方。
最快、最直接評價解魔方機器人的方法是其能否將一個任意打亂的魔方成功復原。為了測試基于LabVIEW 的解魔方機器人的性能,進行了15次實驗。
對魔方進行隨機的打亂,為了保證每次打亂的魔方都不相似,五人分別進行魔方打亂,且每次打亂的時間都要求在30 s 以上,保證可以充分的打亂魔方,實際測試基于LabVIEW 的解魔方機器人的性能。基于LabVIEW 的解魔方機器人測試數據如表1所示。

表1 基于LabVIEW的解魔方機器人測試數據
通過測試數據可以看出,基于LabVIEW 的解魔方機器人可以將一個任意打亂的魔方進行復原,且復原過程中機械結構穩定。
文中設計了一種基于LabVIEW 的解魔方機器人。利用LabVIEW 編寫上位機程序,實現圖像采集、色塊位置識別、色塊位置手動配置/校準、三維孿生重建、還原算法指令生成、串口通信等功能。系統下位機選用STC89C52 作為控制核心,實現接收上位機指令、控制步進電機、返回執行狀態指令、控制執行組件完成動作指令、轉動魔方完成指令響應等功能。基于LabVIEW 的解魔方機器人具有手動與自動兩種模式,在手動模式下可以分步執行,魔方愛好者在解魔方遇到困難時,為其提供還原思路。系統成本低、體積小、便于攜帶、操作簡單。