工控網(wǎng)首頁(yè)
>

應(yīng)用設(shè)計(jì)

>

機(jī)器人在前進(jìn)之二:開發(fā)工具中的可復(fù)用性軟件模塊

機(jī)器人在前進(jìn)之二:開發(fā)工具中的可復(fù)用性軟件模塊

2013/10/9 11:00:36

  機(jī)器人開發(fā)平臺(tái)的進(jìn)展主要集中在如何讓開發(fā)人員著手工作,但它們也提供更急需的軟件部件重用方法,如從一個(gè)機(jī)器人項(xiàng)目到另一個(gè)機(jī)器人項(xiàng)目。

  要 點(diǎn)
  設(shè)計(jì)者有很多現(xiàn)成可用的機(jī)器人開發(fā)平臺(tái)。
  機(jī)器人平臺(tái)的工具正在逐步成熟,但仍有路要走。
  機(jī)器人開發(fā)環(huán)境使設(shè)計(jì)者能夠快速完成設(shè)計(jì)到測(cè)試思想的重復(fù)。

  玩具、游戲和“真實(shí)世界”應(yīng)用之間的界限正在模糊。原本針對(duì)嚴(yán)格真實(shí)世界應(yīng)用的技術(shù)卻不斷在更大規(guī)模的電動(dòng)玩具、小器具和計(jì)算機(jī)游戲市場(chǎng)上找到自己的用途。與此同時(shí),娛樂(lè)設(shè)備中的新型工程創(chuàng)新有越來(lái)越多的機(jī)會(huì)流入真實(shí)世界的應(yīng)用。對(duì)于很多低價(jià)消費(fèi)電子產(chǎn)品(如娛樂(lè)裝置),消費(fèi)市場(chǎng)現(xiàn)在能接受的產(chǎn)品支持壽命周期遠(yuǎn)小于那些高價(jià)產(chǎn)品,如汽車、其它車輛、工業(yè)與醫(yī)療設(shè)備,以及大型中心辦公室設(shè)備等。這些消費(fèi)電子產(chǎn)品的較短支持壽命周期允許(甚至要求)用更高級(jí)技術(shù)進(jìn)步來(lái)鑒別其工作。

  為了制造工業(yè)機(jī)器人和半自動(dòng)系統(tǒng),開發(fā)人員使用的技術(shù)正日益跨越工業(yè)技術(shù)與消費(fèi)、家用技術(shù)的邊界,如電動(dòng)玩具、小器具、游戲機(jī)和其它個(gè)人娛樂(lè)設(shè)備。不幸的是,與 上世紀(jì)80 年代初的 PC 類似,今天機(jī)器人的軟件兼容性仍有很大的改進(jìn)余地。去年以來(lái)開始出現(xiàn)的公開式機(jī)器人開發(fā)平臺(tái)試圖解決更快啟動(dòng)機(jī)器人設(shè)計(jì)項(xiàng)目的問(wèn)題。實(shí)現(xiàn)這一目標(biāo)的部分方法是提供一種開發(fā)軟件部件的機(jī)制,設(shè)計(jì)者可將其用于一個(gè)機(jī)器人項(xiàng)目的開發(fā),然后在其它機(jī)器人項(xiàng)目中獲得重用。自從本動(dòng)手項(xiàng)目的第一部分發(fā)表以來(lái)(參考文獻(xiàn) 1),我又多知道了兩個(gè)公開的機(jī)器人開發(fā)平臺(tái),一個(gè)來(lái)自 CoroWare,另一個(gè)則來(lái)自 Gostai(見附文“更多平臺(tái)”)。

  機(jī)器人開發(fā)平臺(tái)及其不斷成長(zhǎng)和發(fā)展是實(shí)現(xiàn)今天和未來(lái)項(xiàng)目復(fù)雜程度的增減,使其達(dá)到某種可控水平以保持設(shè)計(jì)者生產(chǎn)率的重要基礎(chǔ)。本動(dòng)手項(xiàng)目主要關(guān)注 Lego NXT Mindstorms 平臺(tái)與 National Instruments 的 LabView 環(huán)境。我也在微軟的 Robotics Studio 上花了一些時(shí)間。

  項(xiàng)目

  本項(xiàng)目的硬件清單依據(jù)是 Brady Duggan 的一次展示,他是 National Instruments 的一名軟件工程師。Duggan 演示了一個(gè)用于電子“牧羊犬”的非官方參考設(shè)計(jì)。他使用了別人已在類似項(xiàng)目中用過(guò)的硬件配置,其價(jià)值是能為快速啟動(dòng)和運(yùn)行提供極大的幫助。硬件配置包括National Instruments基于德州儀器公司 TMS320VC33的Speedy-33 DSP模塊,它連接到一塊來(lái)自HiTechnic公司的原型板。該板再連接到Lego NXT控制器,后者控制Lego積木塊簡(jiǎn)單平臺(tái)的傳動(dòng)電機(jī)(圖 1)。

  Speedy-33有兩個(gè)間距約5英寸的話筒,電路板支持48kHz的話筒采樣。LabView支持對(duì)電路板的直接編程,如同LabView支持的其它硬件部件一樣。Speedy-33用作機(jī)器人的耳朵。因?yàn)槲倚枰诙虝r(shí)間內(nèi)了解有關(guān)聲音的更多信息,因此決定Speedy-33只作為一個(gè)傳感器,然后把數(shù)據(jù)送給NXT。項(xiàng)目后續(xù)內(nèi)容將包括實(shí)現(xiàn)兩個(gè)單元之間的雙向通信,這樣聲音探測(cè)算法可以在判斷聲音信號(hào)相對(duì)機(jī)器人的位置時(shí),混合來(lái)自機(jī)器人平臺(tái)的信息。

  為簡(jiǎn)化項(xiàng)目的復(fù)雜性,我選擇了一個(gè)800Hz的聲源,它在整個(gè)測(cè)試期間都保持可辨別。選擇這個(gè)頻率的原因是:參考算法的實(shí)驗(yàn)表明,系統(tǒng)在較高頻率下比低頻有更高的成功率,如440Hz。只尋找一個(gè)音調(diào)使 LabView DSP模塊包中的DSP函數(shù)更容易使用。實(shí)際上,算法會(huì)將話筒信號(hào)與目標(biāo)頻率作交叉關(guān)聯(lián),通過(guò)比較各個(gè)話筒峰值的采樣點(diǎn),確定相對(duì)相位差。對(duì)于以后再做的項(xiàng)目,系統(tǒng)的終極目標(biāo)是采用機(jī)器人平臺(tái)的運(yùn)動(dòng)反饋,在一個(gè)多噪聲環(huán)境中探測(cè)到任意聲音信號(hào)的相位差,能檢測(cè)出預(yù)定的任何信號(hào)。為實(shí)現(xiàn)這個(gè)終極目標(biāo),機(jī)器人平臺(tái)必須探測(cè)出自己的慣性位置,這樣在平臺(tái)旋轉(zhuǎn)或移動(dòng)時(shí),就可以準(zhǔn)確地將運(yùn)動(dòng)傳送給檢測(cè)算法。這種功能需要為機(jī)器人平臺(tái)增加陀螺和加速度傳感器,如HiTechnic公司的產(chǎn)品。

  HiTechnic原型板基本是Speedy-33 接口與 NXT 接口之間的一個(gè)橋梁,這樣,不需要在 NXT 上建立新的代碼就可以實(shí)現(xiàn)兩個(gè)部件的連接。原型板可以使設(shè)計(jì)者建立自己的傳感器,并更簡(jiǎn)便地將其與 NXT 使用的物理接口與邏輯接口相連接。HiTechnic 板對(duì) NXT 表現(xiàn)為遵循 NXT 傳感器協(xié)議的定制傳感器。對(duì)本項(xiàng)目,我使用了六個(gè)數(shù)字端口,用于從 Speedy-33 向 NXT 的通信。Speedy-33 有一個(gè)密封的外殼,可支持多種外設(shè)的端口。但要用到六個(gè)數(shù)字 I/O 端口,我就必須從外殼中取出板子,否則就無(wú)法連接數(shù)字 I/O。不過(guò),本項(xiàng)目不必對(duì) HiTechnic 原型板作直接編程。

  我喜歡簡(jiǎn)單化和節(jié)省時(shí)間,因此實(shí)現(xiàn)了一種從 Speedy-33 ; 到NXT 控制器的單向通信。我知道建立一種雙向通信方法會(huì)花時(shí)間,并增加對(duì)調(diào)試階段的需求。Speedy-33 會(huì)在檢測(cè)到目標(biāo)聲音時(shí)報(bào)告出聲音的左、右方位。NXT 控制程序必須知道 Speedy-33 是否刷新了記錄,因此我將六個(gè)數(shù)字腳中的兩個(gè)用作計(jì)數(shù)器,其它四個(gè)腳表示從左至右之間的某個(gè)位置,四個(gè)腳可表示聲源的 16 個(gè)位置。這種方法使 Speedy-33 只有在聽到目標(biāo)聲音時(shí)才發(fā)送一個(gè)更新,并且當(dāng)出現(xiàn)一個(gè)新的聲音位置更新時(shí),機(jī)器人控制器負(fù)責(zé)作出識(shí)別。

  如 Speedy-33 一樣,我用 LabView 為 NXT 編程。但是,在為它們編程之間存在著微妙但卻重要的差異。LabView 并不像 LabView 系列中的那些普通硬件部件一樣正式地支持 NXT。如要用 LabView 建立 NXT 代碼,就必須將程序結(jié)構(gòu)用作 NXT 工具集插件。即使是普通的程序結(jié)構(gòu)(如循環(huán)與比較)也必須來(lái)自插件工具集,而不是普通的位置。這種限制仍允許你打開和固定住與 NXT 專用工具集菜單,這樣便于使用,而不會(huì)誤打開用于其它目標(biāo)的工具。

  NXT 裝有一只 32 bit ARM (www.arm.com) 處理器,為該系統(tǒng)提供了大量的處理能力。由于 Speedy-33 的檢測(cè)算法只有在聽到目標(biāo)聲音時(shí)才會(huì)更新方向信息,因此 NXT 可以在兩次方向更新之間顯示狀態(tài)信息或保持空閑。使用這個(gè)檢測(cè)算法時(shí),聲音越接近兩只話筒的等分位置,就越難以判斷聲音的方向。這種現(xiàn)象的部分原因是聲源到達(dá)每只話筒的時(shí)間差小于采樣速率。對(duì)本項(xiàng)目,這種情況是可以接受的。這種現(xiàn)象亦表明,由于機(jī)器人一直在調(diào)整,聲音的方向也越來(lái)越接近兩只話筒的中心。因此,隨著被檢聲音的方向與兩只話筒距離的接近,電機(jī)的運(yùn)動(dòng)也應(yīng)越來(lái)越小。否則,運(yùn)動(dòng)粗放的機(jī)器人會(huì)在兩個(gè)位置之間來(lái)回彈跳。

  建立軟件

  使用 LabView 開發(fā)環(huán)境需要花點(diǎn)時(shí)間適應(yīng)。我的編程經(jīng)驗(yàn)主要以基于文字的編碼為主,如使用 C 語(yǔ)音和匯編語(yǔ)言。指導(dǎo)軟件有很大幫助作用,尤其是它們幫我熟悉了工具資源的訪問(wèn)位置和意義。National Instruments 已經(jīng)對(duì) LabView 的開放環(huán)境進(jìn)行了 20 多年的改進(jìn),并且增加了很多針對(duì)特定領(lǐng)域應(yīng)用的環(huán)境擴(kuò)展工具。LabView 的虛擬儀器工具可用于數(shù)據(jù)采集、顯示與分析,很容易使用,你可以為數(shù)據(jù)分析與糾錯(cuò)設(shè)定完備的顯示,這是 LabView 環(huán)境的優(yōu)點(diǎn)之一。

  在上世紀(jì) 90 年代,我曾用過(guò) LabView 的一個(gè)早期版本做過(guò)一個(gè)可調(diào)激光控制系統(tǒng)。我那時(shí)用虛擬語(yǔ)言工具做了一些編程工作,但多數(shù)還是用 C,因?yàn)槲野l(fā)現(xiàn)很難過(guò)渡到一個(gè)完全虛擬的編程形式。經(jīng)過(guò)對(duì)當(dāng)前項(xiàng)目的仔細(xì)思考,我可以說(shuō)明為什么這種過(guò)渡對(duì)我這么難。幾年來(lái),我已經(jīng)形成了在代碼“空白”處說(shuō)明含義與設(shè)計(jì)信息的編碼風(fēng)格。換句話說(shuō),代碼的意圖、空行的位置,以及長(zhǎng)指令串或復(fù)雜指令串的分行,等等,這些都能給熟悉軟件開發(fā)決策方式的讀者提供有價(jià)值的信息。
我從來(lái)沒有開發(fā)過(guò)一種在虛擬編程模式的空白中提供信息的類似方法,也不清楚業(yè)內(nèi)對(duì)這種策略的方法,當(dāng)然我還沒找過(guò)。
在做這個(gè)項(xiàng)目時(shí),我可以看到開發(fā)人員如何使用左右和上下程序流,在空白處表示出含義和其它信息。

  使用 LabView 和微軟的 Robotics Studio 這種虛擬編程模型,可以更容易給出有關(guān)并行性的信息,而在文本式編程中要更困難。你可以確定排序結(jié)構(gòu)的位置,這樣就能看到它們可以同時(shí)運(yùn)行,并且可以更容易看到它們是否在共享某些資源。這兩種環(huán)境都可以混合使用虛擬編程與基于文本的編碼,即將基于文本的代碼封裝為塊,再用于虛擬環(huán)境。Robotics Studio 教程中有一個(gè)例子提出了有關(guān)虛擬編程的一個(gè)擔(dān)憂。該例表示如何不采用原來(lái)方式而實(shí)現(xiàn)一個(gè)前述實(shí)例,該例原使用了一個(gè)變量和一個(gè)循環(huán)。我猜由于自己缺乏虛擬編程的經(jīng)驗(yàn),因此看循環(huán)就與重寫代碼一樣,但如只看代碼結(jié)構(gòu),當(dāng)循環(huán)不很明顯時(shí)我還是一籌莫展。

  我很喜歡用 LabView 環(huán)境仿真機(jī)器人,并且,雖然可以將 LabView 與 MathWorks 的 Simulink 環(huán)境鏈接起來(lái),但我未能對(duì)本項(xiàng)目嘗試這種方法。另一方面,我可以下載微軟的 Robotics Studio,并立即開始一臺(tái)機(jī)器人的仿真。不幸的是,據(jù)微軟高級(jí)開發(fā)人員 Kyle Johns 說(shuō),仿真環(huán)境為每個(gè)對(duì)象提供物理與虛擬模型,但現(xiàn)在缺少對(duì)聲音仿真的支持,而這正是項(xiàng)目需要的。公正地說(shuō),微軟的環(huán)境是針對(duì)機(jī)器人技術(shù),而我只使用來(lái)自現(xiàn)有產(chǎn)品的預(yù)定機(jī)器人。但是,能將一臺(tái)機(jī)器人置于某個(gè)環(huán)境中,通過(guò)直觀的方法看到機(jī)器人在環(huán)境中的運(yùn)行方式與功能,還是很不錯(cuò)的。我無(wú)法確認(rèn)要花多少工作量才能設(shè)置一個(gè)機(jī)器人名單,完成對(duì)它的仿真,但很多支持的機(jī)器人平臺(tái)都存在著一些基本配置,可以直接用作啟動(dòng)工作??催@兩個(gè)環(huán)境最終能否相互補(bǔ)充,協(xié)同工作,將會(huì)是件有意思的事。

  用于 Robotics Studio 的虛擬編程工具不像 LabView 環(huán)境那樣成熟,但工具運(yùn)行良好。當(dāng)執(zhí)行某些代碼時(shí),我注意到了 Robotics Studio 中的一個(gè)有趣的問(wèn)題。一個(gè)教程演示了有關(guān)循環(huán)以及將文字轉(zhuǎn)換為語(yǔ)音的方法。聽到系統(tǒng)的計(jì)數(shù)很有意思。但是,如果我在程序執(zhí)行時(shí)實(shí)現(xiàn)一個(gè)上下文開關(guān),則讓人不安的是程序有時(shí)會(huì)混淆編號(hào)順序。換句話說(shuō),消息傳遞會(huì)表現(xiàn)為后進(jìn)先出,這樣,如果系統(tǒng)在接收一條消息時(shí)碰巧很忙,消息就可能丟失,而在亂序情況下,后面會(huì)死鎖在前面的消息上。這種怪異現(xiàn)象可能是語(yǔ)音合成塊的特性,但卻是一種不希望出現(xiàn)的行為。如果與我使用的代碼相比,亂序執(zhí)行不太明顯,則這種類型的行為可能影響調(diào)錯(cuò)階段。

  還有一個(gè)有關(guān) Robotics Studio 開發(fā)環(huán)境接口完備性的例子,它出現(xiàn)在我在一個(gè)派生對(duì)話框中間向另一個(gè)程序作上下文切換時(shí)。當(dāng)對(duì)話框在副窗口中時(shí),有時(shí)候我無(wú)法回到對(duì)話框中,而副窗口也會(huì)鎖死,等候著派生窗口的結(jié)束。在 Windows XP 中對(duì)話框并不出現(xiàn)在任務(wù)欄上,不過(guò)我終于明白可以用 Alt 和 Tab 鍵手工選擇它。

  本項(xiàng)目只是一系列項(xiàng)目中的第一步,我希望能挨個(gè)完成,逐漸增加復(fù)雜性,要實(shí)現(xiàn)的終極目標(biāo)是用一個(gè)立體檢測(cè)系統(tǒng)在噪聲環(huán)境中辨別出一個(gè)任意聲音。除了項(xiàng)目的目標(biāo)與價(jià)值以外,開發(fā)平臺(tái)的使用也提供了一個(gè)機(jī)會(huì),能夠驗(yàn)證開發(fā)人員現(xiàn)在可以使用的資源,輔助復(fù)雜機(jī)器人控制系統(tǒng)的開發(fā)工作。一種常被表述的目標(biāo)是:開發(fā)人員應(yīng)能夠設(shè)計(jì)出一種公共的硬件規(guī)范,然后能夠在跨多種機(jī)器人平臺(tái)上通過(guò)運(yùn)行時(shí)綁定使用這一規(guī)范,而無(wú)需重新設(shè)計(jì)。

  我很高興有現(xiàn)在這些可用產(chǎn)品,也期望今后幾年所有這些開發(fā)平臺(tái)會(huì)有一系列后續(xù)動(dòng)作,它們對(duì)于新機(jī)器人項(xiàng)目的啟動(dòng),以及使開發(fā)人員能夠重用以前項(xiàng)目的軟硬部件都做了很好的工作。我尤其高興的是,有些開發(fā)環(huán)境正將這些系統(tǒng)看作一組可以互相交互的分布式系統(tǒng)。對(duì)于那些建立包含多機(jī)器人協(xié)同工作系統(tǒng)的設(shè)計(jì)者來(lái)說(shuō),這一特性將成為一個(gè)重要能力。

參考文獻(xiàn)
1. Cravotta, Robert, “Robots on the march,” EDN, Dec 3, 2007, pg 44, www.edn.com/article/CA6505566.


  附文:更多平臺(tái)

  自從本文第一部分印出以來(lái),我知道了另外兩個(gè)機(jī)器人開發(fā)平臺(tái):CoreWare 的 CoroBot 和 Gostai 的 URBI(通用實(shí)時(shí)行為接口),CoroBot 是一種四輪滑移轉(zhuǎn)向平臺(tái),帶一只彩色攝像頭、IR 距離傳感器和 1.2 GHz PC 級(jí)處理器,運(yùn)行 Windows XP、Xubuntu Linux,也可以兩者同時(shí)運(yùn)行(圖 A)。設(shè)計(jì)者可以在產(chǎn)品的塑料頂板上鉆孔,作永久性固定,還可以接受多種粘接物(如 Velcro 魔術(shù)貼)作臨時(shí)固定。系統(tǒng)為開放式,簡(jiǎn)化了對(duì)其多個(gè)部件的訪問(wèn),但將其使用限制于室內(nèi)環(huán)境。它的重量為 12 lbs,可以接收最多 5 lbs 的負(fù)荷。

圖ACoroBot平臺(tái)有九種配置


  CoroBot平臺(tái)有九種型號(hào),起價(jià)為2799美元,向開發(fā)人員供應(yīng)。對(duì)于預(yù)裝Windows XP的型號(hào),軟件開發(fā)可以采用微軟的Robotics Studio,而對(duì)預(yù)裝Xubuntu Linux的型號(hào)則使用Player。平臺(tái)現(xiàn)可選雙靴型和可選四 DOF(自由度)臂并帶一個(gè)抓頭傳感器。帶臂型號(hào)有24 個(gè)可用伺服端口,無(wú)臂型號(hào)有30個(gè)可用伺服端口。現(xiàn)在沒有能夠支持平臺(tái)的C 或C++庫(kù),但該公司稱它正在評(píng)審PlusPack for Microsoft Robotics Studio,以支持未來(lái)的開發(fā)。

  Gostai正在將自己的產(chǎn)品URBI腳本接口語(yǔ)言定位成一種用于軟件模塊的通用機(jī)器人平臺(tái)。它在客戶/服務(wù)器結(jié)構(gòu)上工作,可遠(yuǎn)程控制一臺(tái)機(jī)器人或任何復(fù)雜系統(tǒng)。URBI給出了一種通用方法,能夠控制一臺(tái)機(jī)器人、通過(guò)插入軟件部件而增加功能,并且以一種輕便的方式開發(fā)出完全交互的復(fù)雜機(jī)器人應(yīng)用。該平臺(tái)能用于多種機(jī)器人系統(tǒng)、操作系統(tǒng)和編程語(yǔ)言,如C++、Java和 Matlab。

  Gostai 將面向?qū)ο蟮?URBI 基于一種原型方案,允許開發(fā)人員定義純 URBI 的對(duì)象,或者用向核心中插入 C++ 類或“UObjects”,為語(yǔ)言增加類,成為原生的 URBI 類。你甚至可以從核心中拔出 UObjects,將其運(yùn)行為遠(yuǎn)程自主應(yīng)用,從 URBI 引擎獲得 IP(互聯(lián)網(wǎng)協(xié)議)地址作為一個(gè)參數(shù)。

  URBI 語(yǔ)言中有一個(gè)重要考慮因素,那就是在語(yǔ)義的核心中集成了并行與事件。URBI 語(yǔ)言支持四種類型的命令間臨時(shí)約束條件。一是 Task B 必須在 Task A 后面執(zhí)行。第二個(gè)是 Task B 必須在 Task A 結(jié)束時(shí)開始,而第一個(gè)約束條件允許兩個(gè)任務(wù)之間有一個(gè)時(shí)間間隙。第三個(gè)約束是 Task A 和 B 必須同時(shí)開始,即,如果一個(gè)任務(wù)還未準(zhǔn)備好,則另一個(gè)要等待前一個(gè)準(zhǔn)備好后才開始執(zhí)行。第四個(gè)約束是 Task B 的開始必須同時(shí)或晚于 Task A,但其開始不得晚于 Task A 完成前。

  由于 URBI 是一種并行語(yǔ)言,它可以用互斥(互斥-排除)技術(shù)處理并行訪問(wèn),保證一個(gè)時(shí)間只有一種代碼能使用某種資源。URBI 支持七個(gè)混合模式,它們?cè)O(shè)定了系統(tǒng)應(yīng)如何處理沖突性與同步任務(wù)問(wèn)題。一個(gè)混合模式的例子是加法與混合模式,它將沖突任務(wù)的計(jì)算加到或平均到結(jié)果值上。隊(duì)列模式實(shí)現(xiàn)了一種經(jīng)典的互斥機(jī)制。

  為提供更好的并行支持,時(shí)間概念成為 URBI 語(yǔ)義中的一部分。例如,URBI 中的一個(gè)簡(jiǎn)單任務(wù)可以使一個(gè)變量在一個(gè)給定時(shí)間里或以某個(gè)給定速度達(dá)到一個(gè)值,否則就設(shè)為一個(gè)正弦振蕩。這些非瞬時(shí)的任務(wù)可以與其它設(shè)定同時(shí)執(zhí)行。舉例來(lái)說(shuō),考慮任務(wù) neck.val=10 time:450ms&leg.val= -45 speed:7.5 & tail.val=14 sin:4s ampli:45;。這個(gè)任務(wù)使用 "time," "speed," "sin," 和 "ampli" 修改任務(wù)完成的方式。在本例中,"neck.val" 的值將在 450 ms內(nèi)達(dá)到10。其它支持的修飾語(yǔ)有 "phase," "getphase," 和 "smooth."。

  URBI 自身能夠加快并行事件的處理速度,因?yàn)槎鄠€(gè)事件可以并行發(fā)生,并觸發(fā)一些可以并行運(yùn)行和重疊的代碼。實(shí)際中,對(duì) URBI 中一個(gè)事件作出反應(yīng)的最簡(jiǎn)單方式是使用 “at” 命令,它看似 “if” 語(yǔ)句,即當(dāng)檢驗(yàn)為真時(shí)執(zhí)行一條命令。不過(guò),與 “if” 不同的是,”at” 命令會(huì)保持在后臺(tái)作再次觸發(fā),而并不終止。另一種這類工具是 “whenever” 語(yǔ)句,它循環(huán)執(zhí)行命令,直到檢驗(yàn)為真。該語(yǔ)句類似于 “while” 語(yǔ)句,不同的是當(dāng)檢驗(yàn)為假時(shí)它保持在后臺(tái)。語(yǔ)言還可以忽略有參數(shù)或沒有參數(shù)的事件。

投訴建議

提交

查看更多評(píng)論
其他資訊

查看更多

自動(dòng)化機(jī)床的故障排除技術(shù)淺析

安川焊接機(jī)器人編程

ABB機(jī)器人控制軟件RobotWare應(yīng)用手冊(cè)SafeMove(英文)

ABB IRB7600 機(jī)器人維護(hù)信息

ABB IRC5P機(jī)器人培訓(xùn)教材