摘 要:NAO機(jī)器人作為最新一款人形智能機(jī)器人,在教學(xué)中扮演了扮演了重要的角色,為我們提供了良好的平臺(tái)來(lái)學(xué)習(xí)、探索機(jī)器人的設(shè)計(jì)。文章在NAO機(jī)器人的基礎(chǔ)上,設(shè)計(jì)程序?qū)AO機(jī)器人作為迎賓機(jī)器人,可以省下一定的人力,又可以給人們一種新鮮感,帶來(lái)樂(lè)趣。文章也介紹了我們通過(guò)一些實(shí)際的實(shí)驗(yàn)后所得出的一種比較可靠地同時(shí)啟動(dòng)多臺(tái)機(jī)器人的軟件編程方法,可以使多臺(tái)機(jī)器人同時(shí)準(zhǔn)確啟動(dòng)并自主完成一些動(dòng)作。
關(guān)鍵詞:迎賓;NAO機(jī)器人;同時(shí)啟動(dòng);軟件編程
中圖分類(lèi)號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2015)33-0001-02
1 迎賓機(jī)器人的程序設(shè)計(jì)
迎賓機(jī)器人的執(zhí)行動(dòng)作過(guò)程,如圖1所示。
設(shè)計(jì)該程序的主要目的是能夠使NAO機(jī)器人做到自主迎賓,即將機(jī)器人放置與會(huì)場(chǎng)入口處,當(dāng)賓客經(jīng)過(guò)時(shí),機(jī)器人會(huì)主動(dòng)打招呼:“您好!歡迎XX”。該程序設(shè)計(jì)的主要問(wèn)題在于如何判斷是否有人經(jīng)過(guò),經(jīng)過(guò)考慮,我們選擇使用機(jī)器人自帶的超聲波傳感器作為檢測(cè)傳感器,如圖2所示。
NAOV4版機(jī)器人配備有兩對(duì)超聲波傳感器,頻率為 40 Hz,分辨率為1 cm,測(cè)量范圍為60 ?觷,測(cè)量距離為0.25~2.55 m(在0.25 m以?xún)?nèi)無(wú)法獲得距離但可檢測(cè)到有物體存在),位于胸前兩側(cè)對(duì)稱(chēng)分布,具體分布數(shù)據(jù)見(jiàn)表1。
在默認(rèn)值下,2號(hào)傳感器作為1號(hào)傳感器的接受器,4號(hào)傳感器作為3號(hào)傳感器的接收器。
在默認(rèn)值下,其探測(cè)范圍如圖3所示。
當(dāng)沒(méi)有人從門(mén)口經(jīng)過(guò)時(shí),測(cè)量返回值將恒為2.55(即所能測(cè)得最大距離),當(dāng)有人從機(jī)器人前經(jīng)過(guò)時(shí),該值將發(fā)生變化,考慮到會(huì)場(chǎng)正門(mén)寬不會(huì)超過(guò)2 m,我們將判斷值設(shè)為1.5,即memoryProxy.getData(“Device/SubDaviceList/US/Left/Actuator/Va
ator/Value”)<1.5時(shí),跳出等待循環(huán)并做出歡迎的動(dòng)作,結(jié)束后繼續(xù)返回等待。具體程序,如圖4所示。
由于從超聲波發(fā)射器發(fā)出超聲波到測(cè)量值寫(xiě)入存儲(chǔ)器的時(shí)間約為10 ms,為防止誤測(cè),在這里引入變量i擴(kuò)大檢測(cè)時(shí)間到0.5 s。
2 關(guān)于8臺(tái)機(jī)器人同時(shí)啟動(dòng)的程序設(shè)計(jì)
團(tuán)體舞蹈要做到美觀、震撼,整齊劃一是必不可少的條件。而對(duì)于機(jī)器人來(lái)說(shuō),要做到整齊,最重要的是要保證機(jī)器人能夠同時(shí)啟動(dòng),同時(shí)執(zhí)行程序。
來(lái)控制8臺(tái)機(jī)器人。其中,(4)中的可以通過(guò)將8臺(tái)機(jī)器人連入同一局域網(wǎng)后所分配到的IP替換robotIP項(xiàng),使某一臺(tái)機(jī)器人向該IP所屬的機(jī)器人發(fā)出動(dòng)作指令,并通過(guò)函數(shù)(5)對(duì)指定關(guān)節(jié)數(shù)值進(jìn)行檢測(cè),當(dāng)達(dá)到站立時(shí)的數(shù)值后,執(zhí)行舞蹈動(dòng)作。但是運(yùn)用這種方法,我們發(fā)現(xiàn)機(jī)器人不能做到同時(shí)啟動(dòng)并完成站立動(dòng)作。在排除掉網(wǎng)絡(luò)延遲等外界因素干擾下,我們猜測(cè)是由于在該方式中機(jī)器人之間采用點(diǎn)對(duì)點(diǎn)通訊,當(dāng)主機(jī)完成與一臺(tái)從機(jī)通訊后,才會(huì)像下一臺(tái)從機(jī)發(fā)出指令導(dǎo)致的。
隨后,我們考慮采用利用時(shí)鐘完成同時(shí)啟動(dòng),即我們?cè)诔绦蛑欣闷鋱D像編程軟件中所帶的時(shí)鐘指令盒獲取時(shí)間,當(dāng)時(shí)間到達(dá)某一設(shè)定值(即XX點(diǎn)XX分)時(shí),機(jī)器人啟動(dòng)。但是,我們?cè)陔S后的測(cè)試中發(fā)現(xiàn)每一臺(tái)機(jī)器人的內(nèi)部時(shí)鐘都有著小到幾秒鐘多到幾分鐘的誤差,而我們又無(wú)法對(duì)其內(nèi)部時(shí)鐘進(jìn)行調(diào)整。
最后,經(jīng)過(guò)查閱資料,我們選擇利用socket套接字編程,將一臺(tái)PC端作為主機(jī),利用廣播的形式向8臺(tái)機(jī)器人發(fā)送指令,其程序如下:
①PC端:PC端的程序圖如圖5所示。
②NAO機(jī)器人端:NAO機(jī)器人端的程序圖如圖6所示。
利用該程序,每一臺(tái)連入局域網(wǎng)內(nèi)的機(jī)器人在啟動(dòng)完成后,都會(huì)向主機(jī)發(fā)送其IP地址作為準(zhǔn)備就休的標(biāo)志,當(dāng)我們收到所有IP后,便可按下回車(chē),使所有機(jī)器人同時(shí)運(yùn)行。經(jīng)過(guò)多次實(shí)驗(yàn),該方法能實(shí)現(xiàn)8臺(tái)機(jī)器人的同時(shí)啟動(dòng),精確性、穩(wěn)定性很高。
3 總 結(jié)
通過(guò)超聲波傳感器作為檢測(cè)信號(hào),用Python編程實(shí)現(xiàn)設(shè)計(jì)程序?qū)AO機(jī)器人作為迎賓 機(jī)器人,是將來(lái)實(shí)現(xiàn)機(jī)器人為人們做日常服務(wù)的一種基礎(chǔ)設(shè)想,為以后機(jī)器人的開(kāi)發(fā)研究做基礎(chǔ);利用socket套接字編程是我們?cè)诒容^各種控制方法后決定使用的一種比較穩(wěn)定的控制方法,穩(wěn)定性高,方法簡(jiǎn)便。NAO機(jī)器人還有很大的發(fā)展空間,在此基礎(chǔ)上,之后再進(jìn)行更深入的研究。
參考文獻(xiàn):
[1] 鐘秋波,童春芽.機(jī)器人程序設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2013.
[2] 謝濤,徐建峰,張永學(xué),等.類(lèi)人機(jī)器人的研究歷史、現(xiàn)狀及展望[J].機(jī)器 人,2002,(4).
[3] W.Richard Stevens,Bill Fenner,Andrew M.Rudoff(美).UNIX網(wǎng)絡(luò)編程 (卷1):套接字聯(lián)網(wǎng)API[M].北京:人民郵電出版社,2010.