張 順,嚴(yán)宏志,韓奉林,李 鵬
(1.中南大學(xué) 高性能復(fù)雜制造國家重點實驗室,長沙 410012;2.中南大學(xué) 機(jī)電工程學(xué)院,長沙 410012)
隨著人工智能技術(shù)的飛速發(fā)展,出現(xiàn)了許多以Alpha Go為代表的圍棋高水平人工智能對弈軟件[1]。為更好地滿足青少年圍棋教育和空巢老人的圍棋娛樂需求,圍棋對弈軟件需要從顯示屏幕向物理世界延伸,提升用戶對弈過程的真實感。將機(jī)器人與人工智能相結(jié)合,可使用戶與機(jī)器人利用真實的棋子和棋盤對弈,大大提升下棋的趣味性。在當(dāng)前出現(xiàn)的一些圍棋機(jī)器人系統(tǒng)中,大多直接采用工業(yè)機(jī)械臂,雖然定位精度較好[2],但成本過高,外觀不友好,不能很好地滿足市場需求[3]。
針對上述問題,研發(fā)了一款圍棋專用機(jī)器人“小智(ZRobot)”,其在控制方面首先應(yīng)具有類似于工業(yè)機(jī)器人精度高的特點,按照標(biāo)準(zhǔn)的棋盤和棋子尺寸,定位誤差需要小于0.3mm才能滿足棋子不重疊的要求;其次,圍棋機(jī)器人在控制上還要具有消費類服務(wù)機(jī)器人低成本的要求[4,5]。
綜合考慮系統(tǒng)的性能和成本,基于ARM Cortex M4內(nèi)核的STM32F407ZGT6微處理器和freeRTOS,為圍棋機(jī)器人“小智(ZRobot)”設(shè)計了一種控制器,滿足圍棋機(jī)器人下棋的精度和速度要求。
圍棋機(jī)器人“小智(ZRobot)”的總體構(gòu)成框圖如圖1所示。圍棋機(jī)器人系統(tǒng)由圍棋機(jī)器人控制器、三軸機(jī)械臂、出子機(jī)構(gòu)、電源、上位機(jī)調(diào)試軟件、上位控制智能終端和電子棋盤組成。
圖1 機(jī)器人系統(tǒng)總體結(jié)構(gòu)框圖
電子棋盤上的光纖傳感器可感知棋手落子的位置坐標(biāo),并發(fā)送給上位控制智能終端。上位控制智能終端可以是一臺平板或手機(jī),其上安裝有圍棋人工智能軟件,可根據(jù)當(dāng)前棋局形式計算機(jī)器人下一步下棋點坐標(biāo)。
圍棋機(jī)器人控制器通過串口接受上位控制智能終端發(fā)來的指令,并協(xié)調(diào)控制出子機(jī)構(gòu)和三軸機(jī)械臂,完成棋子準(zhǔn)備、棋子取放、按上位智能終端要求定位等動作。機(jī)器人控制器的直接被控對象是5臺步進(jìn)電機(jī)(2臺步進(jìn)電機(jī)位于出子機(jī)構(gòu),3臺步進(jìn)電機(jī)位于三軸機(jī)械臂)、用于吸取棋子的真空泵及真空換向閥、運行指示燈等附屬開關(guān)量輸出。機(jī)器人控制器的外部輸入主要包括機(jī)械臂各關(guān)節(jié)零位、取子轉(zhuǎn)盤零位和取子位棋子檢測等開關(guān)量。
圍棋機(jī)器人控制器在機(jī)器人系統(tǒng)中需要完成通訊、控制輸出、信號采集、數(shù)據(jù)儲存等工作。通訊主要有通過兩路串口分別與上位控制智能終端和上位機(jī)通訊接收控制命令、運行參數(shù);控制輸出方面對于機(jī)械臂需要同時輸出控制機(jī)械臂3軸關(guān)節(jié)步進(jìn)電機(jī)所需最高500kHz脈沖信號和機(jī)械臂3軸關(guān)節(jié)步進(jìn)電機(jī)抱閘的通斷,對于出子機(jī)構(gòu)需要輸出兩通道脈沖信號用于控制推子電機(jī)和棋筒轉(zhuǎn)動電機(jī);信號采集需要得到出子機(jī)構(gòu)棋筒零位紅外傳感器和取子位置光纖傳感器的導(dǎo)通信號;數(shù)據(jù)儲存需要保存圍棋機(jī)器人結(jié)構(gòu)參數(shù)、運行參數(shù)和控制變量。
基于上述需求,設(shè)計圍棋機(jī)器人控制器硬件,設(shè)計的電路主要有STM32F407ZGT6最小系統(tǒng)電路,電源電路,光耦電路,電平轉(zhuǎn)換電路,通訊電路,儲存器電路等。圖2為圍棋機(jī)器人控制器硬件結(jié)構(gòu)框圖。
圖2 圍棋機(jī)器人控制器硬件結(jié)構(gòu)框圖
在處理器芯片的選擇方面,綜合考慮FPGA、DSP和ARM[6~8],在對比成本、開發(fā)難易程度和開發(fā)周期后選擇基于ARMCotex-M4內(nèi)核的STM32F407ZGT6芯片,工作主頻168MHz,它是一顆集成FPU及DMA控制器的高性能MCU[9],既可以滿足機(jī)械臂正、逆運動學(xué)解算、軌跡規(guī)劃器求解、梯形加減速等計算量較大的工作[10,11],其USART1、USART2及高級定時器外設(shè)可以滿足通信和步進(jìn)電機(jī)控制的需求。
機(jī)器人控制器需要掉電存儲機(jī)器人D-H參數(shù)、棋格坐標(biāo)、運動速度及加速度等重要的幾何和運動參數(shù),因此選用基于鐵電存儲原理的MB85RC64VFRAM作為擴(kuò)展數(shù)據(jù)存儲器。
為保護(hù)I/O引腳、同時提高信號穩(wěn)定性,圍棋機(jī)器人控制器在外部傳感器信號和控制器芯片之間加入光耦電路,選用6N137單通道高速光耦合器,轉(zhuǎn)換速率為10MBit/s。
控制器需要24V、5V、3.3V三種直流電源,其中24V用于電機(jī)驅(qū)動、抱閘及外部傳感器供電,3.3V用于微處理器供電,5V為板上其他控制芯片供電。
24V電源直接通過明緯AC220V/DC24V-14.5A開關(guān)電源獲得,5V電源和3.3V電源利用三端穩(wěn)壓電源芯片LM2576-5和AMS1117-3.3V降壓獲得,以5V穩(wěn)壓電路為例,圖3給出了實現(xiàn)原理圖。
圖3 5V穩(wěn)壓電路
圍棋機(jī)器人控制器需要完成通信、軌跡規(guī)劃、步進(jìn)電機(jī)加減速計算、3DOT機(jī)械臂正逆運動學(xué)計算、脈沖輸出等多個工作,為滿足軟件系統(tǒng)實時性、開放性和穩(wěn)定性的需求[12,13],移植開源freeRTOS,把控制器需要完成的工作設(shè)計為多個單獨的任務(wù),利用系統(tǒng)調(diào)度器(scheduler)調(diào)度任務(wù)運行,使用消息通知實現(xiàn)任務(wù)同步,使用隊列完成任務(wù)間數(shù)據(jù)傳送。
圍棋機(jī)器人控制系統(tǒng)基于freeRTOS操作系統(tǒng)開發(fā)的軟件結(jié)構(gòu)如圖4所示,根據(jù)機(jī)器人運行要求需要建立8個主應(yīng)用任務(wù):初始任務(wù)、軌跡規(guī)劃任務(wù)、正、逆運動學(xué)求解任務(wù)、運動控制任務(wù)、出子機(jī)構(gòu)任務(wù)、通信任務(wù)1、通信任務(wù)2、數(shù)據(jù)管理任務(wù)。使用freeRTOS操作系統(tǒng)的多任務(wù)(scheduler)管理機(jī)制協(xié)調(diào)各任務(wù)工作。
各任務(wù)的功能如下:
1)初始化任務(wù)
初始化任務(wù)主要完成系統(tǒng)初始化工作。加載控制器串口、定時器、CAN、IIC等外設(shè)驅(qū)動,從掉電保存儲存器中讀取系統(tǒng)參數(shù),創(chuàng)建其他應(yīng)用任務(wù)后掛起(suspend)自身任務(wù)。
2)軌跡規(guī)劃任務(wù)
軌跡規(guī)劃任務(wù)負(fù)責(zé)給機(jī)械臂末端規(guī)劃一條運行軌跡并協(xié)調(diào)其他任務(wù)完成軌跡輸出。任務(wù)被創(chuàng)建后會進(jìn)入阻塞態(tài),等待通信任務(wù)1或通信任務(wù)2中的消息通知,接收到消息通知后解除阻塞態(tài)進(jìn)入就緒態(tài)等待運行,得到芯片控制權(quán)后則調(diào)用軌跡規(guī)劃器函數(shù)并把通信任務(wù)1或通信任務(wù)2得到的目標(biāo)點作為參數(shù)傳入,在笛卡爾空間內(nèi)規(guī)劃一條機(jī)械臂末端運行軌跡,并根據(jù)插補周期和速度、加速度等約束計算出軌跡上所有插補點。插補點的三維坐標(biāo)存儲于軌跡結(jié)構(gòu)體插補點數(shù)組中,發(fā)送消息通知正逆運動學(xué)求解任務(wù)對所有軌跡點做逆運動學(xué)計算,獲得插補點序列在關(guān)節(jié)空間的映射,然后通知運動控制任務(wù)輸出所有軌跡點,完成一條軌跡的運動控制。
3)正逆運動學(xué)求解任務(wù)
正逆運動學(xué)求解任務(wù)負(fù)責(zé)對機(jī)械臂正向和逆向運動學(xué)進(jìn)行求解。任務(wù)被創(chuàng)建后進(jìn)入阻塞態(tài),等待通信任務(wù)2或軌跡規(guī)劃任務(wù)的消息通知,當(dāng)接收到消息通知時會根據(jù)消息內(nèi)容選擇調(diào)用正運動學(xué)求解函數(shù)或逆運動學(xué)求解函數(shù),把要求解的笛卡爾空間坐標(biāo)或機(jī)械臂關(guān)節(jié)角指針作為函數(shù)參數(shù)傳入,最后返回求得的解,并通知發(fā)送命令任務(wù)。
4)運動控制任務(wù)
運動控制任務(wù)負(fù)責(zé)輸出脈沖控制機(jī)械臂3個步進(jìn)電機(jī)。運動控制任務(wù)等待通信任務(wù)2或軌跡規(guī)劃任務(wù)輸出關(guān)節(jié)角增量的消息通知,根據(jù)每個關(guān)節(jié)角增量計算輸出所需的脈沖數(shù)量,根據(jù)轉(zhuǎn)動速度計算脈沖頻率,啟動定時器1(TIM1)比較輸出功能,使用TIM1的通道1、通道2和通道3作為控制三個軸關(guān)節(jié)步進(jìn)電機(jī)的脈沖輸出 通道。
5)出子機(jī)構(gòu)任務(wù)
出子機(jī)構(gòu)任務(wù)負(fù)責(zé)控制出子機(jī)構(gòu)推出白色或黑色棋子。出子機(jī)構(gòu)任務(wù)接收通信任務(wù)2和軌跡規(guī)劃任務(wù)的消息通知,接收到消息通知時控制推子步進(jìn)電機(jī)推出一個棋子,并等待棋子位激光傳感器檢測棋子信號,然后返回出子成功狀態(tài)。
6)通信任務(wù)1
通信任務(wù)1負(fù)責(zé)利用USART2和上位智能終端進(jìn)行通信。通信任務(wù)1運行時,會等待USART2中斷回調(diào)函數(shù)中的消息通知,當(dāng)上位智能終端發(fā)來命令時,會觸發(fā)USART2接收消息中斷,在中斷回調(diào)函數(shù)中通知通信任務(wù)1,若通信任務(wù)1不在運行態(tài)或就緒態(tài)則退出中斷函數(shù)時立即進(jìn)行任務(wù)調(diào)度使通信任務(wù)1進(jìn)入就緒態(tài),通信任務(wù)1得到MCU控制權(quán)后根據(jù)通信協(xié)議解析通信數(shù)據(jù),把解析得到的下棋點或收棋點棋盤坐標(biāo)變換為機(jī)器人世界坐標(biāo)系坐標(biāo),然后通知軌跡規(guī)劃任務(wù)。
7)通信任務(wù)2
通信任務(wù)2負(fù)責(zé)利用USART1和上位機(jī)進(jìn)行通信。通信任務(wù)2接收消息過程和通信任務(wù)1基本一樣;它相比通信任務(wù)1增加了按固定周期100ms發(fā)送機(jī)器人運行參數(shù)給上位機(jī)顯示的功能,發(fā)送消息時把要發(fā)送的數(shù)據(jù)放入發(fā)送隊列中,串口發(fā)送函數(shù)把隊列中的數(shù)據(jù)按順序依次發(fā)送出去。
8)數(shù)據(jù)管理任務(wù)
數(shù)據(jù)管理任務(wù)用來管理參數(shù)儲存器FRAM。任務(wù)在運行時,會等待其他任務(wù)消息通知,可以接收其他任務(wù)的消息,根據(jù)消息內(nèi)容更新儲存某個參數(shù)或者從FRAM中取得參數(shù)。
機(jī)械臂軌跡規(guī)劃任務(wù)要完成兩個主要任務(wù):1)根據(jù)通訊發(fā)來的下棋或提子指令,在笛卡爾空間內(nèi)規(guī)劃一組機(jī)器人末端行進(jìn)軌跡,保證機(jī)器與棋盤和棋子無干涉;2)考慮速度、加速度要求和插補周期,將規(guī)劃出的行進(jìn)軌跡進(jìn)行插補取樣,獲得一組軌跡插補點序列。
圍棋機(jī)器人的下棋過程和機(jī)械臂運行軌跡如圖5所示,典型的下棋動作包括三個基本動作:1)從初始位置P0前往取子位置P3取子;2)帶著子從取子位置P3前往目標(biāo)棋格P6;3)落子完畢后返回初始位置P0。為防止機(jī)器人發(fā)生碰撞,每個基本動作又可分為三段:第一段為上升至安全高度;第二段為在安全平面上移至目標(biāo)位置上方;第三段從安全高度下降至目標(biāo)位置。安全高度通過上位PC設(shè)定,依據(jù)上述規(guī)則,給定任一目標(biāo)落子棋格時,可唯一確定一組空間軌跡。
圖5 圍棋機(jī)器人下棋過程
如圖6機(jī)械臂連桿坐標(biāo)系所示,機(jī)械臂為三自由度關(guān)節(jié)型串聯(lián)結(jié)構(gòu),為準(zhǔn)確控制機(jī)器人末端位置,需建立實現(xiàn)機(jī)器人關(guān)節(jié)空間向末端笛卡爾空間之間相互映射的機(jī)器人正逆解模型。
圖6 機(jī)械臂連桿坐標(biāo)系
機(jī)械臂對應(yīng)的Denavit-Hartenberg參數(shù)如表1所示。
表1 圍棋機(jī)器人機(jī)械臂Denavit-Hartenberg參數(shù)表
由Denavit-Hartenberg參數(shù),可求得各連桿變換矩陣如下:
各連桿變換矩陣相乘,得到圍棋機(jī)器人機(jī)械臂的變換矩陣:
利用意法半導(dǎo)體公司提供的浮點計算函數(shù)庫矩陣計算函數(shù)式(4),可實現(xiàn)機(jī)械臂的正解求解。
考慮到機(jī)械臂只有三個自由度,利用幾何法計算其逆解更方便[14]。參考圖6中的坐標(biāo)系,圖7給出了關(guān)節(jié)角求解示意圖。
圖7 求解關(guān)節(jié)角示意圖
若已知機(jī)械臂末端笛卡爾坐標(biāo)P(x,y,z),機(jī)械臂逆向運動學(xué)使用幾何法求解,利用幾何關(guān)系,可得到該笛卡爾坐標(biāo)對應(yīng)的各關(guān)節(jié)轉(zhuǎn)角為:
同樣用意法半導(dǎo)體公司提供的浮點計算函數(shù)庫求得上述三式,實現(xiàn)機(jī)械臂的逆解求解。
基于上述設(shè)計,研制了圍棋機(jī)器人控制器并用于圍棋機(jī)器人,并開展了多項動態(tài)實驗。動態(tài)實驗包括單軸點動、三軸聯(lián)動、重復(fù)運行精度實驗等。
圖8 重復(fù)運行精度實驗裝置
重復(fù)運行精度實驗裝置如圖8所示,機(jī)械臂末端安裝有一個尖狀觸針,其尖點作為工具點,測量工具為2.4in電阻式觸摸屏[15],通過單片機(jī)讀取電阻屏信號可以得到觸碰電阻屏?xí)r觸碰點在屏幕矩形平面上沿兩邊X方向和Y方向的位置坐標(biāo),經(jīng)過在三坐標(biāo)測量機(jī)上測定,本實驗用電阻屏觸控精度達(dá)到0.02mm。實驗過程為通過上位機(jī)發(fā)送一個固定的棋盤坐標(biāo)給機(jī)器人,以使機(jī)器人機(jī)械臂末端觸針尖點觸碰到電阻屏,單片機(jī)讀到電阻屏平面觸點坐標(biāo)通過串口發(fā)送到計算機(jī)記錄下來,移開機(jī)器臂,重復(fù)上述過程10次,得到10組平面坐標(biāo)值如表2所示。
?x和?y分別為X方向和Y方向當(dāng)次坐標(biāo)值和第1次坐標(biāo)值的偏差值。則X和Y方向的最大偏差值分別為0.24mm和0.22mm,滿足棋子不重疊定位誤差0.3mm的要求。圖9為對外展覽時人機(jī)對弈表演實驗。
【】【】
表2 通過電阻屏測量到的平面坐標(biāo)值
圖9 人機(jī)對弈表演實驗
實驗結(jié)果表明圍棋機(jī)器人控制器在運行速度、重復(fù)運動精度等關(guān)鍵技術(shù)指標(biāo)上都可以達(dá)到預(yù)期要求。
設(shè)計了一種基于ARM和freeRTOS的圍棋機(jī)器人控制器,從硬件和軟件兩個方面對圍棋機(jī)器人控制器進(jìn)行了開發(fā)。將控制器應(yīng)用于圍棋機(jī)器人,通過運動實驗驗證了控制器的可行性和精度要求,相比現(xiàn)有圍棋用的工業(yè)機(jī)器人具有成本低,可擴(kuò)展性強的優(yōu)點,同時為其他桌面棋類用機(jī)器人控制系統(tǒng)的開發(fā)提供了一個參考。
參考文獻(xiàn):
[1]蘇劍波,陳葉飛,馬哲,黃瑤,向國菲,陳若冰.從AlphaGo到BetaGo–基于任務(wù)可完成性分析的定性人工智能的定量實現(xiàn)[J].控制理論與應(yīng)用,2016,33(12):1572-1583.
[2]韓煥麗.基于DSP的機(jī)械臂控制器及其軌跡規(guī)劃研究[D].華南理工大學(xué),2016.
[3]劉志偉.四軸工業(yè)機(jī)器人嵌入式運動控制器的設(shè)計[D].哈爾濱工業(yè)大學(xué),2012.
[4]胡振旺.基于STM32的家庭服務(wù)機(jī)器人系統(tǒng)設(shè)計[D].廣東工業(yè)大學(xué),2015.
[5]彭剛,袁兵.基于雙ARM Cortex架構(gòu)的移動機(jī)器人控制器設(shè)計[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2013,41(s1):284-288.
[6]韓煥麗.基于DSP的機(jī)械臂控制器及其軌跡規(guī)劃研究[D].華南理工大學(xué),2016.
[7]曹歡.基于ARM和FPGA的多自由度機(jī)械臂控制系統(tǒng)設(shè)計[D]. 華東理工大學(xué),2012.
[8]羅偉濤,張鐵.基于ARM+DSP+FPGA的機(jī)器人運動控制器研究[J].機(jī)床與液壓,2011,39(15):55-58.
[9]楊繼森,許強,馮濟(jì)琴.基于STM32F4的時柵位移傳感器信號處理系統(tǒng)集成化設(shè)計[J].傳感器與微系統(tǒng),2013,32(12):113-116.
[10]徐向榮,馬香峰.機(jī)器人運動軌跡規(guī)劃分析與算法[J].機(jī)器人, 1988(6):20-26.
[11]吳鎮(zhèn)煒,談大龍.機(jī)械手空間圓弧運動的一種有效軌跡規(guī)劃方法[J].機(jī)器人,1999,21(1):8-11.
[12]Guan F, Peng L, Perneel L, et al. Open source FreeRTOS as a case study in real-time operating system evolution[J].Journal of Systems & Software,2016,118(C):19-35.
[13]Craig J J.Introduction to Robotics: Mechanics and Control[M]. Addison-Wesley Pub. Co,1986.
[14]黃晨華.工業(yè)機(jī)器人運動學(xué)逆解的幾何求解方法[J].制造業(yè)自動化,2014(15):109-112.
[15]李飛,凌云,陳歡,羅樹英.一種電阻觸摸屏坐標(biāo)定位方法[J].湖南工業(yè)大學(xué)學(xué)報,2015,29(02):74-78.