扒一扒工業機器人編程語言和種類

??????? 機器人編程語言(一)
伴隨著機器人的發展,機器人語言也得到發展和完善。機器人語言已成為機器人技術的一個重要部分。機器人的功能除了依靠機器人硬件的支持外,相當一部分依賴機器人語言來完成。早期的機器人由于功能單一,動作簡單,可采用固定程序或示教方式來控制機器人的運動。隨著機器人作業動作的多樣化和作業環境的復雜化,依靠固定的程序或示教方式已滿足不了要求,必須依靠能適應作業和環境隨時變化的機器人語言編程來完成機器人的工作。

???????自機器人出現以來,美國、日本等機器人的原創國也同時開始進行機器人語言的研究。美國斯坦福大學于1973年研制出世界上第一種機器人語言——WAVE語言。WAVE是一種機器人動作語言,即語言功能以描述機器人的動作為主,兼以力和接觸的控制,還能配合視覺傳感器進行機器人的手、眼協調控制。

???????在WAVE語言的基礎上,1974年斯坦福大學人工智能實驗室又開發出一種新的語言,稱為AL語言。這種語言與高級計算機語言ALGOL結構相似,是一種編譯形式的語言,帶有一個指令編譯器,能在實時機上控制,用戶編寫好的機器人語言源程序經編譯器編譯后對機器人進行任務分配和作業命令控制。AL語言不僅能描述手爪的動作,而且可以記憶作業環境和該環境內物體和物體之間的相對位置,實現多臺機器人的協調控制。

???????美國IBM公司也一直致力于機器人語言的研究,取得了不少成果。1975年,IBM公司研制出ML語言,主要用于機器人的裝配作業。隨后該公司又研制出另一種語言——AUTOPASS語言,這是一種用于裝配的更高級語言,它可以對幾何模型類任務進行半自動編程。

???????美國的Unimation公司于1979年推出了VAL語言。它是在BASIC語言基礎上擴展的一種機器人語言,因此具有BASIC的內核與結構,編程簡單,語句簡練。VAL語言成功地用于PUMA和UNIMATE型機器人。1984年,Unimation公司又推出了在VAL基礎上改進的機器人語言——VAL Ⅱ語言。VALⅡ語言除了含有VAL語言的全部功能外,還增加了對傳感器信息的讀取,使得可以利用傳感器信息進行運動控制。

???????20世紀80年代初,美國Automatix公司開發了RAIL語言,該語言可以利用傳感器的信息進行零件作業的檢測。同時,麥道公司研制了MCL語言,這是一種在數控自動編程語言——APT語言的基礎上發展起來的一種機器人語言。MCL特別適用于由數控機床、機器人等組成的柔性加工單元的編程。

???????機器人語言品種繁多,而且新的語言層出不窮。這是因為機器人的功能不斷拓展,需要新的語言來配合其工作。另一方面,機器人語言多是針對某種類型的具體機器人而開發的,所以機器人語言的通用性很差,幾乎一種新的機器人問世,就有一種新的機器人語言與之配套。

機器人語言可以按照其作業描述水平的程度分為動作級編程語言、對象級編程語言和任務級編程語言三類。

????? 動作級編程語言

動作級編程語言是最低一級的機器人語言。它以機器人的運動描述為主,通常一條指令對應機器人的一個動作,表示從機器人的一個位姿運動到另一個位姿。動作級編程語言的優點是比較簡單,編程容易。其缺點是功能有限,無法進行繁復的數學運算,不接受浮點數和字符串,子程序不含有自變量;不能接受復雜的傳感器信息,只能接受傳感器開關信息;與計算機的通信能力很差。典型的動作級編程語言為VAL語言,如AVL語言語句“MOVE TO (destination)”的含義為機器人從當前位姿運動到目的位姿。

動作級編程語言編程時分為關節級編程和末端執行器級編程兩種。

????? 關節級編程

關節級編程是以機器人的關節為對象,編程時給出機器人一系列各關節位置的時間序列,在關節坐標系中進行的一種編程方法。對于直角坐標型機器人和圓柱坐標型機器人,由于直角關節和圓柱關節的表示比較簡單,這種方法編程較為適用;而對具有回轉關節的關節型機器人,由于關節位置的時間序列表示困難,即使一個簡單的動作也要經過許多復雜的運算,故這一方法并不適用。

關節級編程可以通過簡單的編程指令來實現,也可以通過示教盒示教和鍵入示教實現。

????? 末端執行器級編程

末端執行器級編程在機器人作業空間的直角坐標系中進行。在此直角坐標系中給出機器人末端執行器一系列位姿組成位姿的時間序列,連同其他一些輔助功能如力覺、觸覺、視覺等的時間序列,同時確定作業量、作業工具等,協調地進行機器人動作的控制。

???????這種編程方法允許有簡單的條件分支,有感知功能,可以選擇和設定工具,有時還有并行功能,數據實時處理能力強。

?????? 機器人編程語言(二)
?對象級編程語言

???????所謂對象即作業及作業物體本身。對象級編程語言是比動作級編程語言高一級的編程語言,它不需要描述機器人手爪的運動,只要由編程人員用程序的形式給出作業本身順序過程的描述和環境模型的描述,即描述操作物與操作物之間的關系。通過編譯程序機器人即能知道如何動作。

這類語言典型的例子有AML及AUTOPASS等語言,其特點為:

(1) 具有動作級編程語言的全部動作功能。

(2) 有較強的感知能力,能處理復雜的傳感器信息,可以利用傳感器信息來修改、更新環境的描述和模型,也可以利用傳感器信息進行控制、測試和監督。

(3) 具有良好的開放性,語言系統提供了開發平臺,用戶可以根據需要增加指令,擴展語言功能。

(4) 數字計算和數據處理能力強,可以處理浮點數,能與計算機進行即時通信。

對象級編程語言用接近自然語言的方法描述對象的變化。對象級編程語言的運算功能、作業對象的位姿時序、作業量、作業對象承受的力和力矩等都可以以表達式的形式出現。系統中機器人尺寸參數、作業對象及工具等參數一般以知識庫和數據庫的形式存在,系統編譯程序時獲取這些信息后對機器人動作過程進行仿真,再進行實現作業對象合適的位姿,獲取傳感器信息并處理,回避障礙以及與其他設備通信等工作。

?????? 任務級編程語言

任務級編程語言是比前兩類更高級的一種語言,也是最理想的機器人高級語言。這類語言不需要用機器人的動作來描述作業任務,也不需要描述機器人對象物的中間狀態過程,只需要按照某種規則描述機器人對象物的初始狀態和最終目標狀態,機器人語言系統即可利用已有的環境信息和知識庫、數據庫自動進行推理、計算,從而自動生成機器人詳細的動作、順序和數據。例如,一裝配機器人欲完成某一螺釘的裝配,螺釘的初始位置和裝配后的目標位置已知,當發出抓取螺釘的命令時,語言系統從初始位置到目標位置之間尋找路徑,在復雜的作業環境中找出一條不會與周圍障礙物產生碰撞的合適路徑,在初始位置處選擇恰當的姿態抓取螺釘,沿此路徑運動到目標位置。在此過程中,作業中間狀態作業方案的設計、工序的選擇、動作的前后安排等一系列問題都由計算機自動完成。

任務級編程語言的結構十分復雜,需要人工智能的理論基礎和大型知識庫、數據庫的支持,目前還不是十分完善,是一種理想狀態下的語言,有待于進一步的研究。但可以相信,隨著人工智能技術及數據庫技術的不斷發展,任務級編程語言必將取代其他語言而成為機器人語言的主流,使得機器人的編程應用變得十分簡單。



???????? 一般用戶接觸到的語言都是機器人公司自己開發的針對用戶的語言平臺,通俗易懂,在這一層次,每一個機器人公司都有自己語法規則和語言形式,這些都不重要,因為這層是給用戶示教編程使用的。在這個語言平臺之后是一種基于硬件相關的高級語言平臺,如C語言、C++語言、基于IEC61131標準語言等,這些語言是機器人公司做機器人系統開發時所使用的語言平臺,這一層次的語言平臺可以編寫翻譯解釋程序,針對用戶示教的語言平臺編寫的程序進行翻譯解釋成該層語言所能理解的指令,該層語言平臺主要進行運動學和控制方面的編程,再底層就是硬件語言,如基于Intel硬件的匯編指令等。

?????? ? 商用機器人公司提供給用戶的編程接口一般都是自己開發的簡單的示教編程語言系統,如KUKA、ABB等,機器人控制系統提供商提供給用戶的一般是第二層語言平臺,在這一平臺層次,控制系統供應商可能提供了機器人運動學算法和核心的多軸聯動插補算法,用戶可以針對自己設計的產品應用自由的進行二次開發,該層語言平臺具有較好的開放性,但是用戶的工作量也相應增加,這一層次的平臺主要是針對機器人開發廠商的平臺,如歐系一些機器人控制系統供應商就是基于IEC61131標準的編程語言平臺。最底層的匯編語言級別的編程環境我們一般不用太關注,這些是控制系統芯片硬件廠商的事。

???????? 各家工業機器人公司的機器人編程語言都不相同,各家有各家自己的編程語言。但是,不論變化多大,其關鍵特性都很相似。比如Staubli 機器人的編程語言叫VAL3,風格和Basic相似;ABB的叫做RAPID,風格和C相似;還有Adept Robotics 的V+,Fanuc,KUKA,MOTOMAN都有專用的編程語言,但是大都是相似.而由于機器人的發明公司Unimation公司最開始的語言就是VAL,所以這些語言結構都有所相似。 VAL語言是美國Unimation公司于1979年推出的一種機器人編程語言,主要配置在PUMA和UNIMATION等型機器人上,是一種專用的動作類描述語言。

??????? VAL語言是在BASIC語言的基礎上發展起來的,所以與BASIC語言的結構很相似。在VAL的基礎上Unimation公司推出了VALⅡ語言;而后來staubli 收購了Unimation公司后,又發展起來了VAL3的機器人編程語言。

????? ? 學習的話,一般來說各家機器人的官方網站都會有這些介紹資料,但是詳細的資料就會比較欠缺。對于ABB的信息,可以下載一個Robot studio30天試用版 http://short.ie/zcfnmu;其他也都可以得到,但是有一些小型市場的公司就比較麻煩了。
?? ? ?? ABB機器人 編程語言 RAPID 是幾個詞的首字母組合,Robotics Application Programming Interactive Dialogue 。wikipedia上有一些介紹 http://en.wikipedia.org/wiki/RAPID ,詳情參看 http://www.robotstudio.com/forum/default.asp
??????? Comau 柯馬機器人 的編程語言叫做 PDL2,即 Programming Description Language 2,詳情參看 http://www.pdl2.info
??????? Fanuc 是使用karel語言,類似pascal語言,下戴可試用30天

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255467.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255467.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java繼承概述以及Java繼承案例和繼承的好處

Java繼承概述 1.多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那么多個類無需再定義這些相同屬性和行為,只要繼承那個類即可。 2.在Java中通過extends關鍵字可以實現類與類的繼承。 例如:class 子類名 extends 父類…

描述用戶場景

每一個組員根據自己所承擔的項目,描繪用戶場景并將典型用戶和用戶場景描述! 典型用戶 ①當代大學生們,我們的收入多數是來自家庭父母給的生活費,或者還包括一些自己打工掙的零塊。收入也就這么幾個來源,但是支出卻多種…

【pyqt5學習】——控件綁定槽函數的同時利用lambda實現傳參

兩種方法: 1、利用pyqtsignal的emit進行傳參 2、connect函數進行傳參 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根據按鈕上的文字來進行閱讀def readZodiacByButtonText(self,text):if self.language &…

如何用MaskBlt實現兩個位圖的合并,從而實現背景透明

我有兩個位圖,一個前景圖,一個背景圖(mask用途)。請問如何用MaskBlt實現兩個位圖的合并,從而實現背景透明! 核心代碼:dcImage.SetBkColor(crColour);dcMask.BitBlt(0, 0, nWidth, nHeight, &…

史陶比爾與機器人之父

早在1982年,史陶比爾已經成立了工業機器人部門,經銷美國UNIMATION公司的PUMA機器人,1988年,史陶比爾成功收購了 UNIMATION。而UNIMATION是世界上最著名的機器人專家恩格爾伯格所創立的企業,PUMA正是世界上第一臺工業機…

git進階

Git 進階用法 Git 高階用法 1. 基本概念 你的本地倉庫由Git維護的三棵樹組成。第一個是你的工作目錄,它持有實際文件; 第二個是緩存區(index),它像個緩存區域,臨時保存您的改動;最后是HEAD,指向你最近 一次提交后的結果。 git add…

lab3

lamp: 在阿里云linux(Ubuntu)上安裝Apache mysql php : apt-get install mysql_server mysql_client php5 php_mysql apache2 系統會提示正確的包的名稱 安裝ECShop 在本地命令行 scp ecshop.zip rootxxx.xxx.xx.xxx:/var/www/ 把壓縮文件拷貝…

【python學習】——pyttsx3庫實現文本朗讀、音量、音速等調節

import pyttsx3# 初始化朗讀引擎 engine pyttsx3.init() # 設置朗讀速度 self.engine.setProperty(rate, 120) # text為需要讀取的內容 self.engine.say(text) # 不添加下面這句,沒有聲音 self.engine.runAndWait()pyttsx3其他應用: python pyttsx3實現…

mysql中如何判斷某個字段是純數字

SELECT * FROM m_customer WHERE LENGTH(0nickname) LENGTH(nickname); 原理是nickname字段如果某一位不是數字,那么跟0相加后只會保留不是數字的那一位之前的值, 比如SELECT 011a1bc FROM DUAL;結果是11,SELECT 0a1bc FROM DUAL;結果是0轉載于:https://www.cnblogs.com/wangx…

Variable Assembly Language可變匯編語言

Variable Assembly Language可變匯編語言 可變匯編語言(Variable Assembly Language, VAL)是一個設計給Unimation Inc.工業機器人用的電腦控制系統及編程語言。VAL機器人語言是會被永久地儲存于系統內,這包括了個體應用軟件的導向。VAL能從容…

在ABAP里實現條件斷點的三種方式

背景 有不同的同事問我這個問題:例如下圖的LOOP要執行1000次,我只對其中的某一次比如第501次循環感興趣,我肯定不可能按500次F5然后進入第501次的調試。或者我只對LOOP里某個變量為某一個具體值的那一次循環感興趣。如何才能避免重復按F5,讓斷…

【pyqt5學習】——添加菜單欄動作action,給動作觸發triggered綁定事件

1、打開qt-designer工具——視圖——勾選上動作編輯器 2、勾選后右下方會出現動作編輯器欄 3、在改面板可以進行已有動作的屬性編輯,也可以添加新的動作 4、 鼠標左鍵選中動作不松開,可以將動作拖到菜單欄 5、給動作綁定事件 self.saveLog.triggered.co…

什么情況下會調用到session_destroy()

https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一個函數 ... 這個函數在任何情況下都不會被 php 引擎自動調用 ... 只能你手工去調用 ... php 內部存在著清理 session 的機制 ... 但與這個函數完全無關 ... 如果你想問的是什么時候該手工調用這個…

對永磁無刷電機的調速過程

考慮了一下對永磁無刷電機的調速過程。 一般把使用永磁轉子、無電刷的電機,根據驅動方式分為永磁同步與直流無刷。其實沒有本質區別。在此稱為永磁無刷。 用永磁無刷電機的分子泵驅動器一向調速做得不太好。這兩年好一些了,但是還是不能完全滿意。李老…

C# / VB.NET合并PDF指定頁

在前面的文章中,我們已經知道如何合并、拆分多個PDF文件,在這篇文章中的合并、拆分PDF文檔主要是以方便文檔管理的目的來操作文檔,在文檔查閱、管理及存儲上很方便實用。但是我們如果想要合并多個文檔中的部分文檔頁的內容,該如何…

高級異常

一、什么是異常 解析:異常就是在程序的運行過程中所發生的不正常事件 二、Java異常處理是通過5個關鍵字來解決的:try、catch、finally、(前三個是捕獲異常)throw(手動拋出異常)、throws(聲明異常…

【糾錯】——錯誤:PermissionError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。“+解決方案

目錄 問題出現場景 原因 解決方案 問題出現場景 先打開pdf文件,獲取pdf文件內容后,利用os.remove()來刪除文件,這時候出現錯誤 os.remove(source_path)PermissionError: [WinError 32] 另一個程序正在使用此文件,進程無法訪問。…

Eclipse中自動添加注釋

方法一:Eclipse中設置在創建新類時自動生成注釋 windows-->preference   Java-->Code Style-->Code Templates     code-->new Java files 編輯它 ${filecomment} ${package_declaration} /** * Author fufu* Time ${date} ${time} * Version 1.…

使用rancher創建負載均衡服務

2019獨角獸企業重金招聘Python工程師標準>>> 2臺主機,一個server包含2個容器進程(可以是多個),一個負載均衡容器(貌似是依賴haproxy的) 1,創建一個鏡像,編輯Dockerfile 創…

Six Basic Functional Areas of Spring

轉載于:https://www.cnblogs.com/Brake/p/5440738.html