機器人的開發(fā)語言一般為c、c++、c++ builder、vb、vc等語言,主要取決于執(zhí)行機構(gòu)(伺服系統(tǒng))的開發(fā)語言;而機器人編程分為示教、動作級機器人編程語言、任務(wù)級編程語言三個級別;機器人編程語言分為專用操作語言(如val語言、al語言、slim語言等)、應(yīng)用已有計算機語言的機器人程序庫(如pascal語言、jars語言、ar-basic語言等)、應(yīng)用新型通用語言的機器人程序庫(如rapid語言、aml語言karel語言等)三種類型。目前主要應(yīng)用的是slim語言。
機器人編程語言(一)
伴隨著機器人的發(fā)展,機器人語言也得到發(fā)展和完善。機器人語言已成為機器人技術(shù)的一個重要部分。機器人的功能除了依靠機器人硬件的支持外,相當一部分依賴機器人語言來完成。早期的機器人由于功能單一,動作簡單,可采用固定程序或示教方式來控制機器人的運動。隨著機器人作業(yè)動作的多樣化和作業(yè)環(huán)境的復(fù)雜化,依靠固定的程序或示教方式已滿足不了要求,必須依靠能適應(yīng)作業(yè)和環(huán)境隨時變化的機器人語言編程來完成機器人的工作。
自機器人出現(xiàn)以來,美國、日本等機器人的原創(chuàng)國也同時開始進行機器人語言的研究。美國斯坦福大學(xué)于1973年研制出世界上第一種機器人語言——wave語言。wave是一種機器人動作語言,即語言功能以描述機器人的動作為主,兼以力和接觸的控制,還能配合視覺傳感器進行機器人的手、眼協(xié)調(diào)控制。
在wave語言的基礎(chǔ)上,1974年斯坦福大學(xué)人工智能實驗室又開發(fā)出一種新的語言,稱為al語言。這種語言與高級計算機語言algol結(jié)構(gòu)相似,是一種編譯形式的語言,帶有一個指令編譯器,能在實時機上控制,用戶編寫好的機器人語言源程序經(jīng)編譯器編譯后對機器人進行任務(wù)分配和作業(yè)命令控制。al語言不僅能描述手爪的動作,而且可以記憶作業(yè)環(huán)境和該環(huán)境內(nèi)物體和物體之間的相對位置,實現(xiàn)多臺機器人的協(xié)調(diào)控制。
美國ibm公司也一直致力于機器人語言的研究,取得了不少成果。1975年,ibm公司研制出ml語言,主要用于機器人的裝配作業(yè)。隨后該公司又研制出另一種語言——autopass語言,這是一種用于裝配的更高級語言,它可以對幾何模型類任務(wù)進行半自動編程。
美國的unimation公司于1979年推出了val語言。它是在basic語言基礎(chǔ)上擴展的一種機器人語言,因此具有basic的內(nèi)核與結(jié)構(gòu),編程簡單,語句簡練。val語言成功地用于puma和unimate型機器人。1984年,unimation公司又推出了在val基礎(chǔ)上改進的機器人語言——val ⅱ語言。valⅱ語言除了含有val語言的全部功能外,還增加了對傳感器信息的讀取,使得可以利用傳感器信息進行運動控制。
20世紀80年代初,美國automatix公司開發(fā)了rail語言,該語言可以利用傳感器的信息進行零件作業(yè)的檢測。同時,麥道公司研制了mcl語言,這是一種在數(shù)控自動編程語言——apt語言的基礎(chǔ)上發(fā)展起來的一種機器人語言。mcl特別適用于由數(shù)控機床、機器人等組成的柔性加工單元的編程。
機器人語言品種繁多,而且新的語言層出不窮。這是因為機器人的功能不斷拓展,需要新的語言來配合其工作。另一方面,機器人語言多是針對某種類型的具體機器人而開發(fā)的,所以機器人語言的通用性很差,幾乎一種新的機器人問世,就有一種新的機器人語言與之配套。
機器人語言可以按照其作業(yè)描述水平的程度分為動作級編程語言、對象級編程語言和任務(wù)級編程語言三類。
動作級編程語言
動作級編程語言是最低一級的機器人語言。它以機器人的運動描述為主,通常一條指令對應(yīng)機器人的一個動作,表示從機器人的一個位姿運動到另一個位姿。動作級編程語言的優(yōu)點是比較簡單,編程容易。其缺點是功能有限,無法進行繁復(fù)的數(shù)學(xué)運算,不接受浮點數(shù)和字符串,子程序不含有自變量;不能接受復(fù)雜的傳感器信息,只能接受傳感器開關(guān)信息;與計算機的通信能力很差。典型的動作級編程語言為val語言,如avl語言語句“move to (destination)”的含義為機器人從當前位姿運動到目的位姿。
動作級編程語言編程時分為關(guān)節(jié)級編程和末端執(zhí)行器級編程兩種。
關(guān)節(jié)級編程
關(guān)節(jié)級編程是以機器人的關(guān)節(jié)為對象,編程時給出機器人一系列各關(guān)節(jié)位置的時間序列,在關(guān)節(jié)坐標系中進行的一種編程方法。對于直角坐標型機器人和圓柱坐標型機器人,由于直角關(guān)節(jié)和圓柱關(guān)節(jié)的表示比較簡單,這種方法編程較為適用;而對具有回轉(zhuǎn)關(guān)節(jié)的關(guān)節(jié)型機器人,由于關(guān)節(jié)位置的時間序列表示困難,即使一個簡單的動作也要經(jīng)過許多復(fù)雜的運算,故這一方法并不適用。
關(guān)節(jié)級編程可以通過簡單的編程指令來實現(xiàn),也可以通過示教盒示教和鍵入示教實現(xiàn)。
末端執(zhí)行器級編程
末端執(zhí)行器級編程在機器人作業(yè)空間的直角坐標系中進行。在此直角坐標系中給出機器人末端執(zhí)行器一系列位姿組成位姿的時間序列,連同其他一些輔助功能如力覺、觸覺、視覺等的時間序列,同時確定作業(yè)量、作業(yè)工具等,協(xié)調(diào)地進行機器人動作的控制。
這種編程方法允許有簡單的條件分支,有感知功能,可以選擇和設(shè)定工具,有時還有并行功能,數(shù)據(jù)實時處理能力強。
機器人編程語言(二)
對象級編程語言
所謂對象即作業(yè)及作業(yè)物體本身。對象級編程語言是比動作級編程語言高一級的編程語言,它不需要描述機器人手爪的運動,只要由編程人員用程序的形式給出作業(yè)本身順序過程的描述和環(huán)境模型的描述,即描述操作物與操作物之間的關(guān)系。通過編譯程序機器人即能知道如何動作。
這類語言典型的例子有aml及autopass等語言,其特點為:
(1) 具有動作級編程語言的全部動作功能。
(2) 有較強的感知能力,能處理復(fù)雜的傳感器信息,可以利用傳感器信息來修改、更新環(huán)境的描述和模型,也可以利用傳感器信息進行控制、測試和監(jiān)督。
(3) 具有良好的開放性,語言系統(tǒng)提供了開發(fā)平臺,用戶可以根據(jù)需要增加指令,擴展語言功能。
(4) 數(shù)字計算和數(shù)據(jù)處理能力強,可以處理浮點數(shù),能與計算機進行即時通信。
對象級編程語言用接近自然語言的方法描述對象的變化。對象級編程語言的運算功能、作業(yè)對象的位姿時序、作業(yè)量、作業(yè)對象承受的力和力矩等都可以以表達式的形式出現(xiàn)。系統(tǒng)中機器人尺寸參數(shù)、作業(yè)對象及工具等參數(shù)一般以知識庫和數(shù)據(jù)庫的形式存在,系統(tǒng)編譯程序時獲取這些信息后對機器人動作過程進行仿真,再進行實現(xiàn)作業(yè)對象合適的位姿,獲取傳感器信息并處理,回避障礙以及與其他設(shè)備通信等工作。
任務(wù)級編程語言
任務(wù)級編程語言是比前兩類更高級的一種語言,也是最理想的機器人高級語言。這類語言不需要用機器人的動作來描述作業(yè)任務(wù),也不需要描述機器人對象物的中間狀態(tài)過程,只需要按照某種規(guī)則描述機器人對象物的初始狀態(tài)和最終目標狀態(tài),機器人語言系統(tǒng)即可利用已有的環(huán)境信息和知識庫、數(shù)據(jù)庫自動進行推理、計算,從而自動生成機器人詳細的動作、順序和數(shù)據(jù)。例如,一裝配機器人欲完成某一螺釘?shù)难b配,螺釘?shù)某跏嘉恢煤脱b配后的目標位置已知,當發(fā)出抓取螺釘?shù)拿顣r,語言系統(tǒng)從初始位置到目標位置之間尋找路徑,在復(fù)雜的作業(yè)環(huán)境中找出一條不會與周圍障礙物產(chǎn)生碰撞的合適路徑,在初始位置處選擇恰當?shù)淖藨B(tài)抓取螺釘,沿此路徑運動到目標位置。在此過程中,作業(yè)中間狀態(tài)作業(yè)方案的設(shè)計、工序的選擇、動作的前后安排等一系列問題都由計算機自動完成。
任務(wù)級編程語言的結(jié)構(gòu)十分復(fù)雜,需要人工智能的理論基礎(chǔ)和大型知識庫、數(shù)據(jù)庫的支持,目前還不是十分完善,是一種理想狀態(tài)下的語言,有待于進一步的研究。但可以相信,隨著人工智能技術(shù)及數(shù)據(jù)庫技術(shù)的不斷發(fā)展,任務(wù)級編程語言必將取代其他語言而成為機器人語言的主流,使得機器人的編程應(yīng)用變得十分簡單。
一般用戶接觸到的語言都是機器人公司自己開發(fā)的針對用戶的語言平臺,通俗易懂,在這一層次,每一個機器人公司都有自己語法規(guī)則和語言形式,這些都不重要,因為這層是給用戶示教編程使用的。在這個語言平臺之后是一種基于硬件相關(guān)的高級語言平臺,如c語言、c++語言、基于iec61131標準語言等,這些語言是機器人公司做機器人系統(tǒng)開發(fā)時所使用的語言平臺,這一層次的語言平臺可以編寫翻譯解釋程序,針對用戶示教的語言平臺編寫的程序進行翻譯解釋成該層語言所能理解的指令,該層語言平臺主要進行運動學(xué)和控制方面的編程,再底層就是硬件語言,如基于intel硬件的匯編指令等。
商用機器人公司提供給用戶的編程接口一般都是自己開發(fā)的簡單的示教編程語言系統(tǒng),如kuka、abb等,機器人控制系統(tǒng)提供商提供給用戶的一般是第二層語言平臺,在這一平臺層次,控制系統(tǒng)供應(yīng)商可能提供了機器人運動學(xué)算法和核心的多軸聯(lián)動插補算法,用戶可以針對自己設(shè)計的產(chǎn)品應(yīng)用自由的進行二次開發(fā),該層語言平臺具有較好的開放性,但是用戶的工作量也相應(yīng)增加,這一層次的平臺主要是針對機器人開發(fā)廠商的平臺,如歐系一些機器人控制系統(tǒng)供應(yīng)商就是基于iec61131標準的編程語言平臺。最底層的匯編語言級別的編程環(huán)境我們一般不用太關(guān)注,這些是控制系統(tǒng)芯片硬件廠商的事。
各家工業(yè)機器人公司的機器人編程語言都不相同,各家有各家自己的編程語言。但是,不論變化多大,其關(guān)鍵特性都很相似。比如staubli 機器人的編程語言叫val3,風(fēng)格和basic相似;abb的叫做rapid,風(fēng)格和c相似;還有adept robotics 的v+,fanuc,kuka,motoman都有專用的編程語言,但是大都是相似.而由于機器人的發(fā)明公司unimation公司最開始的語言就是val,所以這些語言結(jié)構(gòu)都有所相似。 val語言是美國unimation公司于1979年推出的一種機器人編程語言,主要配置在puma和unimation等型機器人上,是一種專用的動作類描述語言。
val語言是在basic語言的基礎(chǔ)上發(fā)展起來的,所以與basic語言的結(jié)構(gòu)很相似。在val的基礎(chǔ)上unimation公司推出了valⅱ語言;而后來staubli 收購了unimation公司后,又發(fā)展起來了val3的機器人編程語言。
學(xué)習(xí)的話,一般來說各家機器人的官方網(wǎng)站都會有這些介紹資料,但是詳細的資料就會比較欠缺。
如果您問“機器人的最佳編程語言是什么?
計算機視覺程序員會給出不同于認知機器人的答案。每個人都不同意什么是“最好的編程語言”,語言首先學(xué)習(xí),即使這是最現(xiàn)實的答案,因為它取決于您要開發(fā)的應(yīng)用程序類型以及您正在使用的系統(tǒng)。
機器人十大流行編程語言
世界上有超過1500種編程語言,這是目前機器人技術(shù)中十種最流行的編程語言。每種語言對機器人有不同的優(yōu)勢:
10. basic / 帕斯卡
basic和pascal,它們是幾種工業(yè)機器人語言的基礎(chǔ),如下所述。basic是為初學(xué)者設(shè)計的(它代表初學(xué)者通用符號指令代碼),這使它成為一個非常簡單的語言開始。帕斯卡爾旨在鼓勵良好的編程習(xí)慣小號,并介紹構(gòu)造,如指針,它一個很好的“敲門磚”,從普通版使一個更復(fù)雜的語言。這幾天,這兩種語言都有點過時,有利于“日常使用”。但是,如果要進行大量的低級編碼,或者想要熟悉其他工業(yè)機器人語言,可以學(xué)習(xí)它們。
9.工業(yè)機器人語言
幾乎每個機器人制造商都開發(fā)了自己的專有機器人編程語言。您可以通過學(xué)習(xí)pascal熟悉其中的幾個。但是,您每次開始使用新的機器人時,仍然需要學(xué)習(xí)新的語言。
abb擁有rapid編程語言。kuka有krl(kuka robot language)。comau使用pdl2,安川使用inform和川崎使用as。然后,fanuc機器人使用karel,stäubli機器人使用val3和universal robots使用urscript。
近年來,像ros industrial這樣的編程選項開始為程序員提供更多的標準化選項。但是,如果您是技術(shù)人員,則您更有可能使用制造商的語言。
8. lisp
lisp是世界上第二大最古老的編程語言(fortran年齡較大,但只有一年)。它不像這個列表上許多其他編程語言那么廣泛使用; 然而,在人工智能編程中仍然非常重要。ros的一部分是用lisp編寫的,盡管你不需要知道使用ros。
7. 硬件描述語言(hdl)
硬件描述語言基本上是描述電子設(shè)備的編程方式。這些語言對于一些機器人專家來說是相當熟悉的,因為它們用于編程現(xiàn)場可編程門陣列(fpga)。fpga允許您開發(fā)電子硬件,而無需實際生產(chǎn)硅芯片,這使得它們成為更快更容易的一些開發(fā)選擇。
如果你不是電子原型,你可能永遠不會使用hdl。即使如此,重要的是知道它們存在,因為它們與其他編程語言完全不同。一方面,所有操作都是并行執(zhí)行的,而不是依照基于處理器的語言進行。
8 裝配
大會允許您以“一級和零級”進行編程,這是最低級別(或多或少)的編程,最近大多數(shù)低級別的電子設(shè)備都需要編程,隨著arduino等的興起微控制器,您現(xiàn)在可以使用c / c ++輕松地在這個級別進行編程,這意味著大部分機器人可能不那么必要。
9. matlab
matlab及其開放源碼的親戚,如octave,是非常受歡迎的一些機器人工程師分析數(shù)據(jù)和開發(fā)控制系統(tǒng)。還有一個非常受歡迎的機器人工具箱用于matlab。我知道使用matlab開發(fā)整個機器人系統(tǒng)的人。如果要分析數(shù)據(jù),生成高級圖形或?qū)崿F(xiàn)控制系統(tǒng),您可能需要學(xué)習(xí)matlab。
10. c# / .net
c#是microsoft提供的專有編程語言。我在這里包括c#/ .net,主要是因為使用它作為主要語言的microsoft robotics developer studio。如果你要使用這個系統(tǒng),你可能要使用c#。但是,首先學(xué)習(xí)c / c ++可能是長期發(fā)展編碼技巧的好選擇。
11. java
一些計算機科學(xué)學(xué)位將java教學(xué)作為他們的第一種編程語言。java從程序員“隱藏”底層的內(nèi)存功能,這使得它比c更容易編程,但這也意味著你對代碼實際做的不太了解。如果您從計算機科學(xué)的背景(許多人,特別是在研究中)來到機器人,你可能已經(jīng)學(xué)會了java。像c#和matlab一樣,java是一種解釋語言,這意味著它不會被編譯成機器代碼。相反,java虛擬機在運行時解釋指令。使用java的理論是,由于java虛擬機,您可以在許多不同的機器上使用相同的代碼。在實踐中,這并不總是奏效,有時會導(dǎo)致代碼運行緩慢。然而,java在機器人的某些部分非常受歡迎,因此你可能需要它。
12. python
python近年來尤其在機器人技術(shù)方面出現(xiàn)了巨大的復(fù)蘇。其中一個原因可能是python(和c ++)是ros中發(fā)現(xiàn)的兩種主要的編程語言。像java一樣,它是一種解釋語言。與java不同,語言的主要重點是易用性。許多人都認為這樣做非常好。
python節(jié)省了許多常規(guī)的事情,這些事情在編程中花費時間,例如定義和轉(zhuǎn)換變量類型。此外,還有大量免費的圖書館,這意味著當您需要實現(xiàn)一些基本功能時,您不必“重新發(fā)明”。并且由于它允許使用c / c ++代碼進行簡單的綁定,這意味著代碼的性能很重的部分可以用這些語言來實現(xiàn),以避免性能下降。
13. c / c ++
最后,我們達到機器人技術(shù)的第一編程語言!許多人都同意c和c ++是新機器人的好起點。為什么?因為很多硬件庫都使用這些語言。它們允許與低級硬件進行交互,允許實時性能和非常成熟的編程語言。這些天,您可能會使用c ++多于c,因為該語言具有更多的功能。c ++基本上是c的擴展。首先學(xué)習(xí)至少一點c可能是有用的,以便您可以在找到以c編寫的硬件庫時識別它。c / c ++并不像以前那樣簡單,比如python或者matlab。使用c實現(xiàn)相同的功能可能需要相當長的時間,并且需要更多的代碼行。然而,由于機器人非常依賴于實時性能,
機器人的主要特點之一是其通用性,是機器人具有可編程能力是實現(xiàn)這一特點的重要手段。機器人編程必然涉及機器人語言。機器人語言是使用符號來描述機器人動作的方法,它通過對機器人的描述,使機器人按照編程者的意圖進行各種操作。
機器人語言的產(chǎn)生和發(fā)展是與機器人技術(shù)的發(fā)展以及計算機編程語言的發(fā)展緊密相關(guān)的。編程系統(tǒng)的核心問題是操作運動控制問題。
機器人編程系統(tǒng)以及方法
機器人編程是機器人運動和控制問題的結(jié)合點,也是機器人系統(tǒng)最關(guān)鍵的問題之一。當前實用的工業(yè)機器人常為離線編程或示教,在調(diào)試階段可以通過示教控制盒對編譯好的程序一步一步地進行,調(diào)試成功后可投入正式運行。
機器人語言操作系統(tǒng)包括3個基本的操作狀態(tài):
1. 監(jiān)控狀態(tài)
2. 編程狀態(tài)
3.執(zhí)行狀態(tài)
監(jiān)控狀態(tài):用來進行整個系統(tǒng)的監(jiān)督控制。
編輯狀態(tài):提供操作者編制程序或編輯程序
執(zhí)行狀態(tài):用來執(zhí)行機器人程序
把機器人源程序轉(zhuǎn)換成機器碼,以便機器人控制柜能直接讀取和執(zhí)行,編譯后的程序運行速度將大大加快。
根據(jù)機器人不同的工作要求,需要不同的編程。編程能力和編程方式有很大的關(guān)系,編程方式?jīng)Q定著機器人的適應(yīng)性和作業(yè)能力。隨著計算機在工業(yè)上的廣泛應(yīng)用,工業(yè)機器人的計算機編程變得日益重要。
編程語言也是多種多樣的,目前工業(yè)機器人的編程方式有以下幾種:
順序控制的編程
在順序控制的機器中,所有的控制都是由機械或者電氣的順序控制來實現(xiàn),一般沒有程序設(shè)計的要求。順序控制的靈活性小,這是因為所有的工作過程都已編輯好,由機械擋塊,或其他確定的辦法所控制。大量的自動機都是在順序控制下操作的,這種方法的主要優(yōu)點是成本低、易于控制和操作。
示教方式編程
目前,大多數(shù)工業(yè)機器人都具有采用示教方式來編程的功能。示教方式編程一般可分為手把手示教編程和示教盒示教編程兩種方式:
1、手把手示教編程:主要用于噴漆、弧焊等要求實現(xiàn)連續(xù)軌跡控制的工業(yè)機器人示教編程中。具體的方法是利用示教手柄引導(dǎo)末端執(zhí)行器經(jīng)過所要求的位置,同時由傳感器檢測出工業(yè)機器人個關(guān)節(jié)處的坐標值,并由控制系統(tǒng)記錄、存儲下這些數(shù)據(jù)信息。實際工作中,工業(yè)機器人的控制系統(tǒng)會重復(fù)再現(xiàn)示教過的軌跡和操作技能。
手把手示教編程也能實現(xiàn)點位控制,與cp控制不同的是它只記錄個軌跡程序移動的兩端點位置,軌跡的運動速度則按各軌跡程序段應(yīng)對的功能數(shù)據(jù)輸入。
2、示教盒示教編程方式是人工利用示教盒上所具有的各種功能的按鈕來驅(qū)動工業(yè)機器人的各關(guān)節(jié)軸,按作業(yè)所需要的順序單軸運動或多關(guān)節(jié)協(xié)調(diào)運動,完成位置和功能的示教編程。示教盒示教一般用于大型機器人或危險條件作業(yè)下的機器人示教。
3、脫機編程或預(yù)編程
(1)脫機編程和預(yù)編程的含義相同,它是指用機器人程序語言預(yù)先用示教的方法編程,脫機編程的優(yōu)點:
(2)編程可以不使用機器人,可以騰出機器人去做其他工作
(3)可預(yù)先優(yōu)化操作方案和運行周期
(4)以前完成的過程或子程序可結(jié)合到代編的程序中去
(5)可以用傳感器探測外部信息,從而使機器人做出相應(yīng)的響應(yīng)。這種響應(yīng)使機器人可以在自適應(yīng)的方式下工作
(6)控制功能中,可以包含現(xiàn)有的計算機輔助設(shè)計(cad)和計算機輔助制造(cam)的信息
(7)可以用預(yù)先運行程序來模擬實際運動,從而不會出現(xiàn)危險,以在屏幕上模擬機器人運動來輔助編程
(8)對不同的工作目的,只需替換一部分待定的程序
(9)在非自適應(yīng)系統(tǒng)中,沒有外界環(huán)境的反饋,僅有的輸入是關(guān)節(jié)傳感器的測量值,從而可以使用簡單的程序設(shè)計手段。
4、對機器人的編程要求
a. 能夠建立世界模型
b. 能夠描述機器人的作業(yè)
c. 能夠描述機器人的運動
d. 允許用戶規(guī)定執(zhí)行流程
e. 有良好的編輯環(huán)境
5、機器人編輯語言的類型
a. 動作級(al語言系統(tǒng)、luna語言及其特征)
b. 對象級(autopass語言及其特征、rapt語言及其特征)
c.任務(wù)級
3評論
一個小西西07-03 15:0623贊踩做工業(yè)機器人多半都是做控制,做控制需要學(xué)習(xí)基本的電氣知識,plc,基本的c語言編程邏輯,然后就是實踐。如果要做得深入一些必須學(xué)習(xí)一些數(shù)學(xué)和控制理論方面的知識。 如果是做機械設(shè)計方向,不需要額外再學(xué)習(xí)什么了,把本專業(yè)學(xué)好就可以了,實踐才是重要的,不過此類工作不是很好找。但是學(xué)習(xí)都是靠個人,如果你有這方面的天賦加上努力,相信是不會難的,只要技術(shù)跟實踐能力跟得上,還是很有發(fā)展前景的。至于多久學(xué)會就看個人能力及領(lǐng)悟?qū)W習(xí)能力了,希望您早點學(xué)會哦!
你們現(xiàn)在可以先用三菱的,上手快,入門后再入別和品牌也快,日系的產(chǎn)品比歐系的更容易上手,用plc和數(shù)據(jù)線的話再下個軟件就可以了.外圍可以很不用管,看輸出燈就可以,,脈沖的話不太好看,有條件可以找個步進電機試試(配套驅(qū)動器).