張 順,嚴宏志,韓奉林,李 鵬
(1.中南大學 高性能復雜制造國家重點實驗室,長沙 410012;2.中南大學 機電工程學院,長沙 410012)
隨著人工智能技術的飛速發展,出現了許多以Alpha Go為代表的圍棋高水平人工智能對弈軟件[1]。為更好地滿足青少年圍棋教育和空巢老人的圍棋娛樂需求,圍棋對弈軟件需要從顯示屏幕向物理世界延伸,提升用戶對弈過程的真實感。將機器人與人工智能相結合,可使用戶與機器人利用真實的棋子和棋盤對弈,大大提升下棋的趣味性。在當前出現的一些圍棋機器人系統中,大多直接采用工業機械臂,雖然定位精度較好[2],但成本過高,外觀不友好,不能很好地滿足市場需求[3]。
針對上述問題,研發了一款圍棋專用機器人“小智(ZRobot)”,其在控制方面首先應具有類似于工業機器人精度高的特點,按照標準的棋盤和棋子尺寸,定位誤差需要小于0.3mm才能滿足棋子不重疊的要求;其次,圍棋機器人在控制上還要具有消費類服務機器人低成本的要求[4,5]。
綜合考慮系統的性能和成本,基于ARM Cortex M4內核的STM32F407ZGT6微處理器和freeRTOS,為圍棋機器人“小智(ZRobot)”設計了一種控制器,滿足圍棋機器人下棋的精度和速度要求。
圍棋機器人“小智(ZRobot)”的總體構成框圖如圖1所示。圍棋機器人系統由圍棋機器人控制器、三軸機械臂、出子機構、電源、上位機調試軟件、上位控制智能終端和電子棋盤組成。

圖1 機器人系統總體結構框圖
電子棋盤上的光纖傳感器可感知棋手落子的位置坐標,并發送給上位控制智能終端。上位控制智能終端可以是一臺平板或手機,其上安裝有圍棋人工智能軟件,可根據當前棋局形式計算機器人下一步下棋點坐標。
圍棋機器人控制器通過串口接受上位控制智能終端發來的指令,并協調控制出子機構和三軸機械臂,完成棋子準備、棋子取放、按上位智能終端要求定位等動作。機器人控制器的直接被控對象是5臺步進電機(2臺步進電機位于出子機構,3臺步進電機位于三軸機械臂)、用于吸取棋子的真空泵及真空換向閥、運行指示燈等附屬開關量輸出。機器人控制器的外部輸入主要包括機械臂各關節零位、取子轉盤零位和取子位棋子檢測等開關量。
圍棋機器人控制器在機器人系統中需要完成通訊、控制輸出、信號采集、數據儲存等工作。通訊主要有通過兩路串口分別與上位控制智能終端和上位機通訊接收控制命令、運行參數;控制輸出方面對于機械臂需要同時輸出控制機械臂3軸關節步進電機所需最高500kHz脈沖信號和機械臂3軸關節步進電機抱閘的通斷,對于出子機構需要輸出兩通道脈沖信號用于控制推子電機和棋筒轉動電機;信號采集需要得到出子機構棋筒零位紅外傳感器和取子位置光纖傳感器的導通信號;數據儲存需要保存圍棋機器人結構參數、運行參數和控制變量。
基于上述需求,設計圍棋機器人控制器硬件,設計的電路主要有STM32F407ZGT6最小系統電路,電源電路,光耦電路,電平轉換電路,通訊電路,儲存器電路等。圖2為圍棋機器人控制器硬件結構框圖。

圖2 圍棋機器人控制器硬件結構框圖
在處理器芯片的選擇方面,綜合考慮FPGA、DSP和ARM[6~8],在對比成本、開發難易程度和開發周期后選擇基于ARMCotex-M4內核的STM32F407ZGT6芯片,工作主頻168MHz,它是一顆集成FPU及DMA控制器的高性能MCU[9],既可以滿足機械臂正、逆運動學解算、軌跡規劃器求解、梯形加減速等計算量較大的工作[10,11],其USART1、USART2及高級定時器外設可以滿足通信和步進電機控制的需求。
機器人控制器需要掉電存儲機器人D-H參數、棋格坐標、運動速度及加速度等重要的幾何和運動參數,因此選用基于鐵電存儲原理的MB85RC64VFRAM作為擴展數據存儲器。
為保護I/O引腳、同時提高信號穩定性,圍棋機器人控制器在外部傳感器信號和控制器芯片之間加入光耦電路,選用6N137單通道高速光耦合器,轉換速率為10MBit/s。
控制器需要24V、5V、3.3V三種直流電源,其中24V用于電機驅動、抱閘及外部傳感器供電,3.3V用于微處理器供電,5V為板上其他控制芯片供電。
24V電源直接通過明緯AC220V/DC24V-14.5A開關電源獲得,5V電源和3.3V電源利用三端穩壓電源芯片LM2576-5和AMS1117-3.3V降壓獲得,以5V穩壓電路為例,圖3給出了實現原理圖。

圖3 5V穩壓電路
圍棋機器人控制器需要完成通信、軌跡規劃、步進電機加減速計算、3DOT機械臂正逆運動學計算、脈沖輸出等多個工作,為滿足軟件系統實時性、開放性和穩定性的需求[12,13],移植開源freeRTOS,把控制器需要完成的工作設計為多個單獨的任務,利用系統調度器(scheduler)調度任務運行,使用消息通知實現任務同步,使用隊列完成任務間數據傳送。
圍棋機器人控制系統基于freeRTOS操作系統開發的軟件結構如圖4所示,根據機器人運行要求需要建立8個主應用任務:初始任務、軌跡規劃任務、正、逆運動學求解任務、運動控制任務、出子機構任務、通信任務1、通信任務2、數據管理任務。使用freeRTOS操作系統的多任務(scheduler)管理機制協調各任務工作。
各任務的功能如下:
1)初始化任務
初始化任務主要完成系統初始化工作。加載控制器串口、定時器、CAN、IIC等外設驅動,從掉電保存儲存器中讀取系統參數,創建其他應用任務后掛起(suspend)自身任務。
2)軌跡規劃任務
軌跡規劃任務負責給機械臂末端規劃一條運行軌跡并協調其他任務完成軌跡輸出。任務被創建后會進入阻塞態,等待通信任務1或通信任務2中的消息通知,接收到消息通知后解除阻塞態進入就緒態等待運行,得到芯片控制權后則調用軌跡規劃器函數并把通信任務1或通信任務2得到的目標點作為參數傳入,在笛卡爾空間內規劃一條機械臂末端運行軌跡,并根據插補周期和速度、加速度等約束計算出軌跡上所有插補點。插補點的三維坐標存儲于軌跡結構體插補點數組中,發送消息通知正逆運動學求解任務對所有軌跡點做逆運動學計算,獲得插補點序列在關節空間的映射,然后通知運動控制任務輸出所有軌跡點,完成一條軌跡的運動控制。
3)正逆運動學求解任務
正逆運動學求解任務負責對機械臂正向和逆向運動學進行求解。任務被創建后進入阻塞態,等待通信任務2或軌跡規劃任務的消息通知,當接收到消息通知時會根據消息內容選擇調用正運動學求解函數或逆運動學求解函數,把要求解的笛卡爾空間坐標或機械臂關節角指針作為函數參數傳入,最后返回求得的解,并通知發送命令任務。
4)運動控制任務
運動控制任務負責輸出脈沖控制機械臂3個步進電機。運動控制任務等待通信任務2或軌跡規劃任務輸出關節角增量的消息通知,根據每個關節角增量計算輸出所需的脈沖數量,根據轉動速度計算脈沖頻率,啟動定時器1(TIM1)比較輸出功能,使用TIM1的通道1、通道2和通道3作為控制三個軸關節步進電機的脈沖輸出 通道。
5)出子機構任務
出子機構任務負責控制出子機構推出白色或黑色棋子。出子機構任務接收通信任務2和軌跡規劃任務的消息通知,接收到消息通知時控制推子步進電機推出一個棋子,并等待棋子位激光傳感器檢測棋子信號,然后返回出子成功狀態。
6)通信任務1
通信任務1負責利用USART2和上位智能終端進行通信。通信任務1運行時,會等待USART2中斷回調函數中的消息通知,當上位智能終端發來命令時,會觸發USART2接收消息中斷,在中斷回調函數中通知通信任務1,若通信任務1不在運行態或就緒態則退出中斷函數時立即進行任務調度使通信任務1進入就緒態,通信任務1得到MCU控制權后根據通信協議解析通信數據,把解析得到的下棋點或收棋點棋盤坐標變換為機器人世界坐標系坐標,然后通知軌跡規劃任務。
7)通信任務2
通信任務2負責利用USART1和上位機進行通信。通信任務2接收消息過程和通信任務1基本一樣;它相比通信任務1增加了按固定周期100ms發送機器人運行參數給上位機顯示的功能,發送消息時把要發送的數據放入發送隊列中,串口發送函數把隊列中的數據按順序依次發送出去。
8)數據管理任務
數據管理任務用來管理參數儲存器FRAM。任務在運行時,會等待其他任務消息通知,可以接收其他任務的消息,根據消息內容更新儲存某個參數或者從FRAM中取得參數。
機械臂軌跡規劃任務要完成兩個主要任務:1)根據通訊發來的下棋或提子指令,在笛卡爾空間內規劃一組機器人末端行進軌跡,保證機器與棋盤和棋子無干涉;2)考慮速度、加速度要求和插補周期,將規劃出的行進軌跡進行插補取樣,獲得一組軌跡插補點序列。
圍棋機器人的下棋過程和機械臂運行軌跡如圖5所示,典型的下棋動作包括三個基本動作:1)從初始位置P0前往取子位置P3取子;2)帶著子從取子位置P3前往目標棋格P6;3)落子完畢后返回初始位置P0。為防止機器人發生碰撞,每個基本動作又可分為三段:第一段為上升至安全高度;第二段為在安全平面上移至目標位置上方;第三段從安全高度下降至目標位置。安全高度通過上位PC設定,依據上述規則,給定任一目標落子棋格時,可唯一確定一組空間軌跡。

圖5 圍棋機器人下棋過程
如圖6機械臂連桿坐標系所示,機械臂為三自由度關節型串聯結構,為準確控制機器人末端位置,需建立實現機器人關節空間向末端笛卡爾空間之間相互映射的機器人正逆解模型。

圖6 機械臂連桿坐標系
機械臂對應的Denavit-Hartenberg參數如表1所示。

表1 圍棋機器人機械臂Denavit-Hartenberg參數表
由Denavit-Hartenberg參數,可求得各連桿變換矩陣如下:


各連桿變換矩陣相乘,得到圍棋機器人機械臂的變換矩陣:

利用意法半導體公司提供的浮點計算函數庫矩陣計算函數式(4),可實現機械臂的正解求解。
考慮到機械臂只有三個自由度,利用幾何法計算其逆解更方便[14]。參考圖6中的坐標系,圖7給出了關節角求解示意圖。

圖7 求解關節角示意圖
若已知機械臂末端笛卡爾坐標P(x,y,z),機械臂逆向運動學使用幾何法求解,利用幾何關系,可得到該笛卡爾坐標對應的各關節轉角為:

同樣用意法半導體公司提供的浮點計算函數庫求得上述三式,實現機械臂的逆解求解。
基于上述設計,研制了圍棋機器人控制器并用于圍棋機器人,并開展了多項動態實驗。動態實驗包括單軸點動、三軸聯動、重復運行精度實驗等。

圖8 重復運行精度實驗裝置
重復運行精度實驗裝置如圖8所示,機械臂末端安裝有一個尖狀觸針,其尖點作為工具點,測量工具為2.4in電阻式觸摸屏[15],通過單片機讀取電阻屏信號可以得到觸碰電阻屏時觸碰點在屏幕矩形平面上沿兩邊X方向和Y方向的位置坐標,經過在三坐標測量機上測定,本實驗用電阻屏觸控精度達到0.02mm。實驗過程為通過上位機發送一個固定的棋盤坐標給機器人,以使機器人機械臂末端觸針尖點觸碰到電阻屏,單片機讀到電阻屏平面觸點坐標通過串口發送到計算機記錄下來,移開機器臂,重復上述過程10次,得到10組平面坐標值如表2所示。
?x和?y分別為X方向和Y方向當次坐標值和第1次坐標值的偏差值。則X和Y方向的最大偏差值分別為0.24mm和0.22mm,滿足棋子不重疊定位誤差0.3mm的要求。圖9為對外展覽時人機對弈表演實驗。
【】【】

表2 通過電阻屏測量到的平面坐標值

圖9 人機對弈表演實驗
實驗結果表明圍棋機器人控制器在運行速度、重復運動精度等關鍵技術指標上都可以達到預期要求。
設計了一種基于ARM和freeRTOS的圍棋機器人控制器,從硬件和軟件兩個方面對圍棋機器人控制器進行了開發。將控制器應用于圍棋機器人,通過運動實驗驗證了控制器的可行性和精度要求,相比現有圍棋用的工業機器人具有成本低,可擴展性強的優點,同時為其他桌面棋類用機器人控制系統的開發提供了一個參考。
參考文獻:
[1]蘇劍波,陳葉飛,馬哲,黃瑤,向國菲,陳若冰.從AlphaGo到BetaGo–基于任務可完成性分析的定性人工智能的定量實現[J].控制理論與應用,2016,33(12):1572-1583.
[2]韓煥麗.基于DSP的機械臂控制器及其軌跡規劃研究[D].華南理工大學,2016.
[3]劉志偉.四軸工業機器人嵌入式運動控制器的設計[D].哈爾濱工業大學,2012.
[4]胡振旺.基于STM32的家庭服務機器人系統設計[D].廣東工業大學,2015.
[5]彭剛,袁兵.基于雙ARM Cortex架構的移動機器人控制器設計[J].華中科技大學學報(自然科學版),2013,41(s1):284-288.
[6]韓煥麗.基于DSP的機械臂控制器及其軌跡規劃研究[D].華南理工大學,2016.
[7]曹歡.基于ARM和FPGA的多自由度機械臂控制系統設計[D]. 華東理工大學,2012.
[8]羅偉濤,張鐵.基于ARM+DSP+FPGA的機器人運動控制器研究[J].機床與液壓,2011,39(15):55-58.
[9]楊繼森,許強,馮濟琴.基于STM32F4的時柵位移傳感器信號處理系統集成化設計[J].傳感器與微系統,2013,32(12):113-116.
[10]徐向榮,馬香峰.機器人運動軌跡規劃分析與算法[J].機器人, 1988(6):20-26.
[11]吳鎮煒,談大龍.機械手空間圓弧運動的一種有效軌跡規劃方法[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]黃晨華.工業機器人運動學逆解的幾何求解方法[J].制造業自動化,2014(15):109-112.
[15]李飛,凌云,陳歡,羅樹英.一種電阻觸摸屏坐標定位方法[J].湖南工業大學學報,2015,29(02):74-78.