【摘要】ZKRT-300型機器人是全國職業院校職業技能大賽官方指定的比賽機器人。本文闡述了使用機器人編程語言RobotBasic編程并直接控制機器人運作的二次開發過程。介紹了開發所需要完成的主要工作:機器人改造(無線通訊);控制命令及協議編制;機器人斷命令翻譯及執行程序設計等。
【關鍵詞】RobotBasic;無線通信;機器人編程
1.引言
ZKRT-300型機器人是全國職業院校職業技能大賽官方指定的比賽機器人,對學生們來說原機器人編程與其說是進行機器人編程不如說是在進行單片機編程,因為原機器人編程就是傳統的KEIL平臺的C51程序編制。能不能讓我們的學生使用機器人編程語言,并對機器人進行控制呢?RobotBASIC最初是由美國德銳大學約翰·布蘭肯希普教授和塞繆爾·米沙勒編寫。RobotBASIC能夠對含多種類型的傳感器的機器人進行仿真(軟件模擬器模擬的機器人)、在現實世界的控制角度使用的無線協議控制一個真正的機器人、創建動畫模擬和視頻游戲、處理復雜的工程問題以及從教育角度激勵學生學習。選擇這樣的課題旨在讓我們的學生使用RobotBASIC進行機器人編程,利用RobotBASIC進行仿真,同時能對真實的機器人:ZKRT-300型機器人進行控制。
RobotBASIC是免費使用的,學校不需要投入前期成本、更不會重復發生費用或許可證。布置家庭作業更是沒問題,每個學生都可以下載自己的個人副本。
要用RobotBasic控制ZKRT-300型機器人我們要做需要完成以下工作:機器人改造(添加無線通訊模塊);編寫控制命令及協議;機器人命令翻譯及執行程序設計。
2.RobotBasic簡介
RobotBasic是一種集成機器人模擬器的解釋性編程語言,與標準Basic語言相似,具備所有編程語言的特點,即語法簡單、易編寫和易調試。在使用中,可以直接利用模擬器來研究與環境相關的傳感器,可以改變傳感器的類型和安裝方式,使其適合不同的軟件,也可以完成對各類現實環境進行模擬算法測試,并且可用于原型設計。
RobotBasic語言功能強大,遠不止普通的機器人模擬器功能。無論是普通的圖形、動畫還是復雜的數學計算,本編程語言都可以予以支持,甚至能支持從I/O口到藍牙技術。進行合理的編程和設置后,還可以用其來控制現實中的機器人。
學習RobotBasic語言編程之前,是不需要特地組裝一臺機器人的,以往動輒數月的時間完全可以省下來。學習時可以直接進行編程,由于這是模擬控制過程,也不會出現電池需要充電或損壞設備的問題。基本的遠程遙控、避障,或者是專業的除草、破解迷宮、目標定位等機器人功能,都能直接模擬。
3.ZKRT-300型機器人簡介
ZKRT-300型自動堆垛式載運機器人是面向職業教育類、工程教育類學生教學與實訓而開發的教學機器人。它體現了基于工程設計的機械機構、機械傳動技術和控制技術的完美結合,基于工程設計理念而開發,結構精巧,符合工程化設計標準,典型機構運用別具匠心,采用工業傳感器,工程化布線、接線,融合多項核心專利技術開發而成。本產品非常適合于中等職業教育和高等職業教育類學生機器人課程的教學以及機器人競賽使用。
ZKRT-300型自動堆垛式載運機器人由機器人行走底盤、回轉機構、升降機構、平移機構、手爪機構以及單片機控制系統組成。主要可實現如下功能:循線計數行走、路徑規劃;自動取物、自動堆垛;多種貨物取放任務方案可自由設計;可自行更換手爪結構以滿足不同尺寸、形狀貨物的抓取任務。
4.電腦和機器人無線通信
ZKRT-300型自動堆垛式載運機器人上設計有與電腦通信用的串行接口,使用usb轉串口線實現對機載MCU的程序下載和EPPOM修改,現設計采用藍牙串口模塊接收電腦藍牙適配器發出的指令并轉發給機載MCU串口,同時機載MCU也可以從串口發送數據,由藍牙模塊轉發給電腦,從而實現電腦和機器人的無線通信,其示意圖如圖1所示:
4.1 RobotBASIC控制命令
(1)rCommPort ne_PortNum{,ne_BaudRate {,ne_NumBits{,ne_Parity{,ne_StopBits{,ne_Protocol}}}}}
打開串口ne_PortNum。
(2)rCommand(ne_Command,ne_Data)
這個函數將兩個字節ne_command和ne_data發送給串口并將字符串中返回5個字節的數據(字節緩沖區)。用于指定指令,可以用來發送控制手抓、升降和回轉電機的命令,實現對貨物的取放。
(3)rLocate ne_X,ne_Y(code 3)
該命令初始化真正的機器人和啟動命令的過程。發送兩個字節03和ne_x。它將接收5個字節,最后兩個是沒有用的。
(4)rForward ne_Amount(code 6 or 7)
這個命令發送兩個字節6(或7)和Abs(ne_amount)。6是前進7是倒退。ne_amount表示移動距離,為正值則發送6,為負值則發送7。接收到的數據包含5字節,但只有前3的使用。他們將用來表示傳感器的狀態。
(5)rTurn ne_Amount(code 12 or 13)
這個命令發送兩個字節12(或13)和Abs(ne_Amount).12表示右轉13表示左傳。ne_Amount表示轉動角度,為正發送12,如果為負發送13。
(6)rSpeed ne_Speed(code 36)
這個命令發送兩個字節36和ne_speed。用于設置機器人行進速度,ne_speed表示速度(0~255)。同時命令還等待接收5字節。前3個字節表示傳感器的狀態。最后的兩個字節沒用到,可以為0。
4.2 控制命令和協議編制
機器人將接收到的控制命令有以下兩個部分:移動地盤部分控制命令包括前進(6)、后退(7)、左轉(13),右轉(12)、初始化(3)和速度設置(36);手臂部分控制命令包括手抓(101)、平移(102)、升降(103)和回轉(104)。
機器人需要在接收到控制命令后回傳5個字節的數據,包括3個字節的傳感器數據。第一個字節為8位循線傳感器數據、第二三個字節為其他12路傳感器的數據。這些數據將由RobotBasic存放在緩存內供傳感器函數使用。
機器人端協議執行流程如圖2所示,首先等待接收2個字節的控制命令,接收到命令后、執行命令對應的控制程序代碼,然后回傳5個字節數據。
5.二次開發的意義
將集成機器人模擬器的RobotBasic編程語言,嫁接到ZKRT-300型自動堆垛式載運機器人上,學生們使用RobotBasic進行編程,同時可以充分使用模擬器,對代碼進行仿真(移動平臺部分)學習和教學,擺脫3個束縛:
讓學習不再被束縛在機器人實驗室。現有的系統,學生寫完程序,需要將目標文件下載到微控器的ROM中,再觀察機器人運行的結果,從而評估自己所編寫的程序,提出修改方案。使用RobotBASIC編寫程序,學生在家就可以在電腦屏幕上看到仿真效果,從而驗證自己的算法。
讓學生擺脫微控器的束縛。在RobotBASIC平臺實現更復雜的算法,不再需要考慮RAM、ROM不夠的問題,不再考慮哪個IO口、哪個寄存器等問題。
讓學生擺脫機器人本體的束縛。只要考慮讓機器人做什么,而不要考慮機器人如何去完成工作。
參考文獻
[1]John Blankenship,Samuel Mishal.Robot Programmer’s Bonanza[M].McGraw-Hill,2008:36-182.
[2]金聰,戴上平等.人工智能教程[M].北京:清華大學出版社,2007:20-26.
[3]朱映輝.RobotBasic應用于人工智能課程的實踐教學研究[J].現代計算機(專業版),2012,03:23-25.
課題項目:江蘇省職業技術教育學會2013-2014年度職業教育研究立項研究課題《五年制高職機器人技術應用校本課程的開發研究》(課題編號:2013254)。
的成果之一。
作者簡介:顧德祥(1981—),男,江蘇東臺人,助教,現供職于無錫機電高等職業技術學校,研究方向:機器人技術應用,移動機器人控制算法。