機(jī)器人的開(kāi)發(fā)語(yǔ)言一般為C、C++、C++ Builder、VB、VC等語(yǔ)言,主要取決于執(zhí)行機(jī)構(gòu)(伺服系統(tǒng))的開(kāi)發(fā)語(yǔ)言;而機(jī)器人編程分為示教、動(dòng)作級(jí)機(jī)器人編程語(yǔ)言、任務(wù)級(jí)編程語(yǔ)言三個(gè)級(jí)別;機(jī)器人編程語(yǔ)言分為專用操作語(yǔ)言(如VAL語(yǔ)言、AL語(yǔ)言、SLIM語(yǔ)言等)、應(yīng)用已有計(jì)算機(jī)語(yǔ)言的機(jī)器人程序庫(kù)(如Pascal語(yǔ)言、JARS語(yǔ)言、AR-BASIC語(yǔ)言等)、應(yīng)用新型通用語(yǔ)言的機(jī)器人程序庫(kù)(如RAPID語(yǔ)言、AML語(yǔ)言KAREL語(yǔ)言等)三種類型。目前主要應(yīng)用的是SLIM語(yǔ)言。
機(jī)器人語(yǔ)言可以按照其作業(yè)描述水平的程度分為動(dòng)作級(jí)編程語(yǔ)言、對(duì)象級(jí)編程語(yǔ)言和任務(wù)級(jí)編程語(yǔ)言三類。
機(jī)器人編程語(yǔ)言(一)動(dòng)作級(jí)編程語(yǔ)言
動(dòng)作級(jí)編程語(yǔ)言是最低一級(jí)的機(jī)器人語(yǔ)言。它以機(jī)器人的運(yùn)動(dòng)描述為主,通常一條指令對(duì)應(yīng)機(jī)器人的一個(gè)動(dòng)作,表示從機(jī)器人的一個(gè)位姿運(yùn)動(dòng)到另一個(gè)位姿。動(dòng)作級(jí)編程語(yǔ)言的優(yōu)點(diǎn)是比較簡(jiǎn)單,編程容易。其缺點(diǎn)是功能有限,無(wú)法進(jìn)行繁復(fù)的數(shù)學(xué)運(yùn)算,不接受浮點(diǎn)數(shù)和字符串,子程序不含有自變量;不能接受復(fù)雜的傳感器信息,只能接受傳感器開(kāi)關(guān)信息;與計(jì)算機(jī)的通信能力很差。典型的動(dòng)作級(jí)編程語(yǔ)言為VAL語(yǔ)言,如AVL語(yǔ)言語(yǔ)句“MOVE TO (destination)”的含義為機(jī)器人從當(dāng)前位姿運(yùn)動(dòng)到目的位姿。
動(dòng)作級(jí)編程語(yǔ)言編程時(shí)分為關(guān)節(jié)級(jí)編程和末端執(zhí)行器級(jí)編程兩種。
關(guān)節(jié)級(jí)編程
關(guān)節(jié)級(jí)編程是以機(jī)器人的關(guān)節(jié)為對(duì)象,編程時(shí)給出機(jī)器人一系列各關(guān)節(jié)位置的時(shí)間序列,在關(guān)節(jié)坐標(biāo)系中進(jìn)行的一種編程方法。對(duì)于直角坐標(biāo)型機(jī)器人和圓柱坐標(biāo)型機(jī)器人,由于直角關(guān)節(jié)和圓柱關(guān)節(jié)的表示比較簡(jiǎn)單,這種方法編程較為適用;而對(duì)具有回轉(zhuǎn)關(guān)節(jié)的關(guān)節(jié)型機(jī)器人,由于關(guān)節(jié)位置的時(shí)間序列表示困難,即使一個(gè)簡(jiǎn)單的動(dòng)作也要經(jīng)過(guò)許多復(fù)雜的運(yùn)算,故這一方法并不適用。
關(guān)節(jié)級(jí)編程可以通過(guò)簡(jiǎn)單的編程指令來(lái)實(shí)現(xiàn),也可以通過(guò)示教盒示教和鍵入示教實(shí)現(xiàn)。
末端執(zhí)行器級(jí)編程
末端執(zhí)行器級(jí)編程在機(jī)器人作業(yè)空間的直角坐標(biāo)系中進(jìn)行。在此直角坐標(biāo)系中給出機(jī)器人末端執(zhí)行器一系列位姿組成位姿的時(shí)間序列,連同其他一些輔助功能如力覺(jué)、觸覺(jué)、視覺(jué)等的時(shí)間序列,同時(shí)確定作業(yè)量、作業(yè)工具等,協(xié)調(diào)地進(jìn)行機(jī)器人動(dòng)作的控制。
這種編程方法允許有簡(jiǎn)單的條件分支,有感知功能,可以選擇和設(shè)定工具,有時(shí)還有并行功能,數(shù)據(jù)實(shí)時(shí)處理能力強(qiáng)。
機(jī)器人編程語(yǔ)言(二)對(duì)象級(jí)編程語(yǔ)言
所謂對(duì)象即作業(yè)及作業(yè)物體本身。對(duì)象級(jí)編程語(yǔ)言是比動(dòng)作級(jí)編程語(yǔ)言高一級(jí)的編程語(yǔ)言,它不需要描述機(jī)器人手爪的運(yùn)動(dòng),只要由編程人員用程序的形式給出作業(yè)本身順序過(guò)程的描述和環(huán)境模型的描述,即描述操作物與操作物之間的關(guān)系。通過(guò)編譯程序機(jī)器人即能知道如何動(dòng)作。
這類語(yǔ)言典型的例子有AML及AUTOPASS等語(yǔ)言,其特點(diǎn)為:(1) 具有動(dòng)作級(jí)編程語(yǔ)言的全部動(dòng)作功能。(2) 有較強(qiáng)的感知能力,能處理復(fù)雜的傳感器信息,可以利用傳感器信息來(lái)修改、更新環(huán)境的描述和模型,也可以利用傳感器信息進(jìn)行控制、測(cè)試和監(jiān)督。(3) 具有良好的開(kāi)放性,語(yǔ)言系統(tǒng)提供了開(kāi)發(fā)平臺(tái),用戶可以根據(jù)需要增加指令,擴(kuò)展語(yǔ)言功能。(4) 數(shù)字計(jì)算和數(shù)據(jù)處理能力強(qiáng),可以處理浮點(diǎn)數(shù),能與計(jì)算機(jī)進(jìn)行即時(shí)通信。對(duì)象級(jí)編程語(yǔ)言用接近自然語(yǔ)言的方法描述對(duì)象的變化。對(duì)象級(jí)編程語(yǔ)言的運(yùn)算功能、作業(yè)對(duì)象的位姿時(shí)序、作業(yè)量、作業(yè)對(duì)象承受的力和力矩等都可以以表達(dá)式的形式出現(xiàn)。系統(tǒng)中機(jī)器人尺寸參數(shù)、作業(yè)對(duì)象及工具等參數(shù)一般以知識(shí)庫(kù)和數(shù)據(jù)庫(kù)的形式存在,系統(tǒng)編譯程序時(shí)獲取這些信息后對(duì)機(jī)器人動(dòng)作過(guò)程進(jìn)行仿真,再進(jìn)行實(shí)現(xiàn)作業(yè)對(duì)象合適的位姿,獲取傳感器信息并處理,回避障礙以及與其他設(shè)備通信等工作。
機(jī)器人編程語(yǔ)言(三)任務(wù)級(jí)編程語(yǔ)言
任務(wù)級(jí)編程語(yǔ)言是比前兩類更高級(jí)的一種語(yǔ)言,也是最理想的機(jī)器人高級(jí)語(yǔ)言。這類語(yǔ)言不需要用機(jī)器人的動(dòng)作來(lái)描述作業(yè)任務(wù),也不需要描述機(jī)器人對(duì)象物的中間狀態(tài)過(guò)程,只需要按照某種規(guī)則描述機(jī)器人對(duì)象物的初始狀態(tài)和最終目標(biāo)狀態(tài),機(jī)器人語(yǔ)言系統(tǒng)即可利用已有的環(huán)境信息和知識(shí)庫(kù)、數(shù)據(jù)庫(kù)自動(dòng)進(jìn)行推理、計(jì)算,從而自動(dòng)生成機(jī)器人詳細(xì)的動(dòng)作、順序和數(shù)據(jù)。
例如,一裝配機(jī)器人欲完成某一螺釘?shù)难b配,螺釘?shù)某跏嘉恢煤脱b配后的目標(biāo)位置已知,當(dāng)發(fā)出抓取螺釘?shù)拿顣r(shí),語(yǔ)言系統(tǒng)從初始位置到目標(biāo)位置之間尋找路徑,在復(fù)雜的作業(yè)環(huán)境中找出一條不會(huì)與周圍障礙物產(chǎn)生碰撞的合適路徑,在初始位置處選擇恰當(dāng)?shù)淖藨B(tài)抓取螺釘,沿此路徑運(yùn)動(dòng)到目標(biāo)位置。在此過(guò)程中,作業(yè)中間狀態(tài)作業(yè)方案的設(shè)計(jì)、工序的選擇、動(dòng)作的前后安排等一系列問(wèn)題都由計(jì)算機(jī)自動(dòng)完成。任務(wù)級(jí)編程語(yǔ)言的結(jié)構(gòu)十分復(fù)雜,需要人工智能的理論基礎(chǔ)和大型知識(shí)庫(kù)、數(shù)據(jù)庫(kù)的支持,目前還不是十分完善,是一種理想狀態(tài)下的語(yǔ)言,有待于進(jìn)一步的研究。但可以相信,隨著人工智能技術(shù)及數(shù)據(jù)庫(kù)技術(shù)的不斷發(fā)展,任務(wù)級(jí)編程語(yǔ)言必將取代其他語(yǔ)言而成為機(jī)器人語(yǔ)言的主流,使得機(jī)器人的編程應(yīng)用變得十分簡(jiǎn)單。
一般用戶接觸到的語(yǔ)言都是機(jī)器人公司自己開(kāi)發(fā)的針對(duì)用戶的語(yǔ)言平臺(tái),通俗易懂,在這一層次,每一個(gè)機(jī)器人公司都有自己語(yǔ)法規(guī)則和語(yǔ)言形式,這些都不重要,因?yàn)檫@層是給用戶示教編程使用的。在這個(gè)語(yǔ)言平臺(tái)之后是一種基于硬件相關(guān)的高級(jí)語(yǔ)言平臺(tái),如C語(yǔ)言、C++語(yǔ)言、基于IEC61131標(biāo)準(zhǔn)語(yǔ)言等,這些語(yǔ)言是機(jī)器人公司做機(jī)器人系統(tǒng)開(kāi)發(fā)時(shí)所使用的語(yǔ)言平臺(tái),這一層次的語(yǔ)言平臺(tái)可以編寫翻譯解釋程序,針對(duì)用戶示教的語(yǔ)言平臺(tái)編寫的程序進(jìn)行翻譯解釋成該層語(yǔ)言所能理解的指令,該層語(yǔ)言平臺(tái)主要進(jìn)行運(yùn)動(dòng)學(xué)和控制方面的編程,再底層就是硬件語(yǔ)言,如基于Intel硬件的匯編指令等。
商用機(jī)器人公司提供給用戶的編程接口一般都是自己開(kāi)發(fā)的簡(jiǎn)單的示教編程語(yǔ)言系統(tǒng),如KUKA、ABB等,機(jī)器人控制系統(tǒng)提供商提供給用戶的一般是第二層語(yǔ)言平臺(tái),在這一平臺(tái)層次,控制系統(tǒng)供應(yīng)商可能提供了機(jī)器人運(yùn)動(dòng)學(xué)算法和核心的多軸聯(lián)動(dòng)插補(bǔ)算法,用戶可以針對(duì)自己設(shè)計(jì)的產(chǎn)品應(yīng)用自由的進(jìn)行二次開(kāi)發(fā),該層語(yǔ)言平臺(tái)具有較好的開(kāi)放性,但是用戶的工作量也相應(yīng)增加,這一層次的平臺(tái)主要是針對(duì)機(jī)器人開(kāi)發(fā)廠商的平臺(tái),如歐系一些機(jī)器人控制系統(tǒng)供應(yīng)商就是基于IEC61131標(biāo)準(zhǔn)的編程語(yǔ)言平臺(tái)。最底層的匯編語(yǔ)言級(jí)別的編程環(huán)境我們一般不用太關(guān)注,這些是控制系統(tǒng)芯片硬件廠商的事。各家工業(yè)機(jī)器人公司的機(jī)器人編程語(yǔ)言都不相同,各家有各家自己的編程語(yǔ)言。
但是,不論變化多大,其關(guān)鍵特性都很相似。比如Staubli機(jī)器人的編程語(yǔ)言叫VAL3,風(fēng)格和Basic相似;ABB的叫做RAPID,風(fēng)格和C相似;還有Adept Robotics的V+,Fanuc,KUKA,MOTOMAN都有專用的編程語(yǔ)言,但是大都是相似.而由于機(jī)器人的發(fā)明公司Unimation公司最開(kāi)始的語(yǔ)言就是VAL,所以這些語(yǔ)言結(jié)構(gòu)都有所相似。VAL語(yǔ)言是美國(guó)Unimation公司于1979年推出的一種機(jī)器人編程語(yǔ)言,主要配置在PUMA和UNIMATION等型機(jī)器人上,是一種專用的動(dòng)作類描述語(yǔ)言。VAL語(yǔ)言是在BASIC語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的,所以與BASIC語(yǔ)言的結(jié)構(gòu)很相似。在VAL的基礎(chǔ)上Unimation公司推出了VALⅡ語(yǔ)言;而后來(lái)staubli收購(gòu)了Unimation公司后,又發(fā)展起來(lái)了VAL3的機(jī)器人編程語(yǔ)言。學(xué)習(xí)的話,一般來(lái)說(shuō)各家機(jī)器人的官方網(wǎng)站都會(huì)有這些介紹資料,但是詳細(xì)的資料就會(huì)比較欠缺。
-
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1938瀏覽量
34594 -
工業(yè)機(jī)器人
+關(guān)注
關(guān)注
91文章
3351瀏覽量
92558
原文標(biāo)題:【Robot 學(xué)院】工業(yè)機(jī)器人的編程語(yǔ)言和種類大盤點(diǎn)!
文章出處:【微信號(hào):robotn,微信公眾號(hào):產(chǎn)業(yè)大視野】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論