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