999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于以太網(wǎng)通信和OpenGL的庫卡機(jī)器人在線控制及仿真

2018-02-20 06:26:54杜必強(qiáng)陳佳楠
關(guān)鍵詞:界面

杜必強(qiáng) 陳佳楠

(華北電力大學(xué) 能源動力與機(jī)械工程學(xué)院,保定 071000)

目前工業(yè)機(jī)器人應(yīng)用范圍的越來越廣,示教編程作為大部分機(jī)器人設(shè)計的編程方式,存在過程繁瑣、精度較低的,且示教過程存在安全隱患并占用較多機(jī)器人工作時間,導(dǎo)致傳統(tǒng)機(jī)器人示教編程方式已經(jīng)無法滿足現(xiàn)代化生產(chǎn)制造的要求。隨著計算機(jī)圖形技術(shù)和可視化技術(shù)的發(fā)展,離線編程逐漸成為一種主流編程方式,大部分國外離線編程軟件通用性差,且價格昂貴,國內(nèi)在機(jī)器人離線編程仿真領(lǐng)域也進(jìn)行了相關(guān)的研究,但和國外相比仍有一定的差距[1]。

本文利用C#編程語言,基于socket的C/S(客戶端/服務(wù)器)結(jié)構(gòu)以及庫卡編程語言開發(fā)了一種通信模塊和在線運(yùn)動控制界面,以此在NET框架下對OpenGL圖形庫進(jìn)行調(diào)用,建立機(jī)器人三維模型,實現(xiàn)機(jī)器人末端軌跡在線運(yùn)動控制以及運(yùn)動仿真功能。

1 機(jī)器人通信及在線控制界面搭建

1.1 基于以太網(wǎng)的數(shù)據(jù)通信

庫卡的Ethernet KRL可以實現(xiàn)庫卡控制系統(tǒng)和外部系統(tǒng)之間的以太網(wǎng)通信,并支持TCP協(xié)議以及UDP協(xié)議。UDP/IP是無連接的網(wǎng)絡(luò)協(xié)議,在通信過程中可能丟失數(shù)據(jù),因此本文采用面向連接的TCP/IP通訊協(xié)議,并通過C/S模式將PC端作為通信服務(wù)器端,而庫卡機(jī)器人控制器作為通信客戶端,通過EthernetKRL以太網(wǎng)通信連接庫卡機(jī)器人控制系統(tǒng)上的KLI接口以及PC機(jī)的以太網(wǎng)接口,并通過XML文件格式進(jìn)行數(shù)據(jù)的傳輸,從而實現(xiàn)庫卡機(jī)器人的在線運(yùn)動控制[2]。

1.2 服務(wù)器程序

socket是一組接口,主要由IP地址和端口號組成,建立網(wǎng)絡(luò)通信連接需要一對socket,其中一個運(yùn)行于服務(wù)器端,另一個運(yùn)行于客戶端。其中服務(wù)器端的socket用于網(wǎng)絡(luò)監(jiān)聽,處于等待連接狀態(tài),實時監(jiān)控網(wǎng)絡(luò)狀態(tài),一旦有客戶端發(fā)出連接請求,立即響應(yīng)[3-4]。

C#中的socket為網(wǎng)絡(luò)通信提供了可行的方法,針對TCP/IP通信協(xié)議,使用Listen方法監(jiān)聽網(wǎng)絡(luò)狀態(tài),并通過Bind方法指定IP地址以及端口號,收到客戶端連接請求時,使用Accept方法進(jìn)行處理,并且返回一個可與客戶端進(jìn)行數(shù)據(jù)通信的socket,部分代碼如下:

//創(chuàng)建一個新的線程

secondThread = new Thread();

//啟動該線程

secondThread.Start();

//創(chuàng)建socket

Socket handler;

Socket listener;

EndPoint = new IPEndPoint(ipAddress, Port);

//綁定IP地址及端口號

listener.Bind(EndPoint);

//開始對網(wǎng)絡(luò)狀態(tài)進(jìn)行監(jiān)聽

listener.Listen(1);

//綁定收到的連接請求

handler = listener.Accept()

socket命名空間下定義的NetworkStream作為一個網(wǎng)絡(luò)數(shù)據(jù)流通道,可以對數(shù)據(jù)進(jìn)行發(fā)送和讀取,特別是在處理不是很復(fù)雜的字符型數(shù)據(jù)時,傳輸效率很高,部分代碼如下:

//創(chuàng)建一個用于存儲數(shù)據(jù)的字符串

StringBuilder message;

//創(chuàng)建一個網(wǎng)絡(luò)數(shù)據(jù)流對象

NetworkStream stream = new NetworkStream(handler);

//將收到的數(shù)據(jù)添加到字符串

Num = stream.Read();

message.AppendFormat();

//將發(fā)送的數(shù)據(jù)寫入數(shù)據(jù)通道

stream.Write()

1.3 客戶端程序

機(jī)器人控制系統(tǒng)作為客戶端,內(nèi)布設(shè)置為KRL語言(庫卡機(jī)器語言),并通過EthernetKRL指令進(jìn)行數(shù)據(jù)接收和發(fā)送。另外,庫卡機(jī)器人控制器讀取和發(fā)送的數(shù)據(jù)主要為XML文件,所以預(yù)先設(shè)置好一個XML文件結(jié)構(gòu),然后每次發(fā)送數(shù)據(jù)之前,在XML文件的各個節(jié)點(diǎn)中將待發(fā)數(shù)據(jù)添加進(jìn)去,部分指令如下:

//打開連接通道

EKX_Open()

//發(fā)送字符串

EKX_Write()

EKX_WriteLine()

//發(fā)送XML結(jié)構(gòu)數(shù)據(jù)

EKX_Send()

EKX_WriteReal()

//等待要讀取的XML結(jié)構(gòu)數(shù)據(jù)

EKX_WaitForSensorData()

//讀取數(shù)據(jù)

EKX_GetIntegerElement()

//關(guān)閉通道

EKX_Close()

1.4 在線控制界面

機(jī)器人控制器與外部系統(tǒng)進(jìn)行通信是實現(xiàn)在線控制的前提,兩者之間通訊系統(tǒng)建立之后,就可以由外部系統(tǒng)定義運(yùn)動相關(guān)信息,從而對機(jī)器人運(yùn)動進(jìn)行控制。運(yùn)動相關(guān)信息包括角度空間軸坐標(biāo)、笛卡爾空間坐標(biāo)以及運(yùn)動方式,如果是圓弧運(yùn)動還需要給出角度值。這些信息通過C#中的XmlDocument的根節(jié)點(diǎn)以及子節(jié)點(diǎn)來定義,將每一個運(yùn)動坐標(biāo)點(diǎn)的所有相關(guān)信息都保存在同一個根節(jié)點(diǎn)下,最后生成XML文件并通過連接通道發(fā)送。在機(jī)器人控制系統(tǒng)運(yùn)行客戶端中,若程序接收到由客戶端發(fā)來的數(shù)據(jù),即可搜索XML文件中各個節(jié)點(diǎn)元素獲得運(yùn)動坐標(biāo)點(diǎn)以及運(yùn)動方式,從而實現(xiàn)了外部系統(tǒng)對機(jī)器人的在線運(yùn)動控制,機(jī)器人運(yùn)動控制界面如圖1所示。

圖1 機(jī)器人運(yùn)動控制界面

2 工業(yè)機(jī)器人運(yùn)動仿真界面的設(shè)計

OpenGL為跨編程、跨平臺的三維圖形程序接口,其功能強(qiáng)大,且可以方便地調(diào)用底層圖形庫[5]。由于C#開發(fā)環(huán)境中不支持直接對OpenGL進(jìn)行調(diào)用,所以通常需要借助第三方OpenGL開源庫來實現(xiàn)[6]。這些開源庫包括有csgl、SharpGL、OpenTK以及Tao.OpenGL等。其中SharpGL庫支持的OpenGL版本比較高,且安裝配置方便,所以本文利用SharpGL庫對機(jī)器人進(jìn)行三維建模,并設(shè)計仿真界面。

在C#開發(fā)環(huán)境中,需要調(diào)用SharpGL.dll、SharpGL.SceneGraph.dll、SharpGL.WinForms.dll三 個 OpenGL動態(tài)鏈接庫。其中SharpGL.dll包含OpenGL的主要對象,并包括了OpenGL所有函數(shù)以及擴(kuò)展內(nèi)容,SharpGL.SceneGraph.dll主要包含了OpenGL中的場景元素,如燈光、材質(zhì)及紋理等,而SharpGL.WinForms.dll則提供了窗體控件,模型構(gòu)建及仿真模擬顯示功能。

對機(jī)器人進(jìn)行三維建模過程中,需要在OpenGLControl控件上對以上三個標(biāo)準(zhǔn)事件進(jìn)行編程。在OpenGLInitialized事件中,對光照及材料屬性等進(jìn)行編程;在Resized事件中,對視點(diǎn)變換、模型變換以及投影變換等進(jìn)行編程;在OpenGLDraw事件中對機(jī)器人進(jìn)行建模及仿真。其中機(jī)器人各關(guān)節(jié)坐標(biāo)系平移以及旋轉(zhuǎn)是通過gl.Translate()以及gl.Rotate()來完成,各坐標(biāo)系之間齊次變換定義如下:

gl.Translate(a,0,0)

gl.Rotate(α,1,0,0)

gl.Translate(0,0,d)

gl.Rotate(θ,0,0,1)

在OpenGL中生成的旋轉(zhuǎn)矩陣計算量很大,因此將各連桿間的齊次變換通過函數(shù)gl.NewList()、gl.EndList()以及gl.CallList()進(jìn)行存儲與顯示。機(jī)器人各個連桿進(jìn)行建模時,需要通過函數(shù)gl.PushMatrix()以及gl.PopMatrix()來操作矩陣堆棧,同時對各個桿件進(jìn)行建模以及坐標(biāo)系之間的變換。完成上述步驟后,機(jī)器人模型構(gòu)建完成,并以機(jī)器人各關(guān)節(jié)角作為控制變量實現(xiàn)機(jī)器人的運(yùn)動仿真,本文所設(shè)計的機(jī)器人運(yùn)動仿真界面如圖2所示。

圖2 運(yùn)動仿真界面

3 運(yùn)動仿真及軌跡規(guī)劃

建立機(jī)器人運(yùn)動仿真模型主要以關(guān)節(jié)角為控制變量,并根據(jù)機(jī)器人運(yùn)動學(xué),通過齊次變換得到機(jī)器人末端坐標(biāo)系相對于基坐標(biāo)下的位姿。當(dāng)機(jī)器人進(jìn)行軌跡規(guī)劃時,需要根據(jù)機(jī)器人逆運(yùn)動學(xué),給定初始點(diǎn)以及終點(diǎn)位置,然后對軌跡進(jìn)行插值,得到一系列中間點(diǎn)位置信息,然后再利用逆運(yùn)動學(xué)求解方法求出各個中間點(diǎn)對應(yīng)的關(guān)節(jié)角,即可實現(xiàn)離線軌跡運(yùn)動仿真。本文通過離線軌跡規(guī)劃,對機(jī)器人末端執(zhí)行機(jī)構(gòu)進(jìn)行矩形軌跡規(guī)劃,得到仿真結(jié)果如圖3所示。

通過給出運(yùn)動坐標(biāo)信息,利用上述建立機(jī)器人控制界面控制機(jī)器人運(yùn)動,庫卡機(jī)器人觸發(fā)器可以獲取每段運(yùn)動路徑中間點(diǎn)關(guān)節(jié)角,利用這些關(guān)節(jié)角信息可以對實際運(yùn)動軌跡進(jìn)行運(yùn)動仿真。按機(jī)器人控制器返回的參量進(jìn)行實際運(yùn)動軌跡的仿真,可以得到與規(guī)劃的軌跡相同的結(jié)果,對兩個軌跡的關(guān)節(jié)變量進(jìn)行對比,可以發(fā)現(xiàn)兩者之間的誤差很小,比較結(jié)果如表1所示。

圖3 機(jī)器人運(yùn)動仿真結(jié)果

對于復(fù)雜路徑,可以在matlab中采用機(jī)器人工具箱進(jìn)行路徑規(guī)劃,通過運(yùn)動控制界面將數(shù)據(jù)發(fā)送給機(jī)器人控制器控制其運(yùn)動,并采集其中節(jié)點(diǎn)關(guān)節(jié)角,通過C#中matlab函數(shù)對中間插值點(diǎn)進(jìn)行計算,將關(guān)節(jié)變量作為參數(shù)對軌跡進(jìn)行運(yùn)動仿真。

4 結(jié)論

本文用C#語言在Visual Studio平臺上開發(fā)了機(jī)器人在線控制系統(tǒng),并通過以太網(wǎng)通信實現(xiàn)了機(jī)器人控制系統(tǒng)與外部PC的數(shù)據(jù)交換功能,通過服務(wù)器和客戶端程序?qū)崿F(xiàn)了在線控制,使得對機(jī)器人編程脫離了現(xiàn)場環(huán)境以及復(fù)雜KRL編程語言的限制。最后利用OpenGL圖形庫建立了機(jī)器人模型,開發(fā)了機(jī)器人運(yùn)動仿真界面,以及進(jìn)行軌跡規(guī)劃以及運(yùn)動仿真,對機(jī)器人離線規(guī)劃軌跡及實際運(yùn)動軌跡進(jìn)行比較,結(jié)果證明了在線運(yùn)動控制有效性和仿真結(jié)果的正確性。

表1 關(guān)節(jié)參量對比

猜你喜歡
界面
聲波在海底界面反射系數(shù)仿真計算分析
微重力下兩相控溫型儲液器內(nèi)氣液界面仿真分析
國企黨委前置研究的“四個界面”
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
空間界面
金秋(2017年4期)2017-06-07 08:22:16
鐵電隧道結(jié)界面效應(yīng)與界面調(diào)控
電子顯微打開材料界面世界之門
人機(jī)交互界面發(fā)展趨勢研究
手機(jī)界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 色成人综合| 老司机精品久久| 久久精品无码一区二区国产区| 国产午夜在线观看视频| 99久久性生片| 99在线观看免费视频| 亚洲日本精品一区二区| 亚洲综合18p| 人妻丰满熟妇AV无码区| 欧美激情视频二区| 欧美区国产区| 亚洲三级a| 国产精品视频导航| 欧美人人干| 极品尤物av美乳在线观看| 99re免费视频| 国产精品大尺度尺度视频| 精品福利国产| 国产69精品久久久久妇女| 欧美在线黄| 精品久久久久无码| 国产美女主播一级成人毛片| 在线国产资源| 重口调教一区二区视频| 毛片免费在线视频| 亚洲三级成人| 97亚洲色综久久精品| 激情无码字幕综合| 国产欧美日韩在线一区| 少妇高潮惨叫久久久久久| 99国产在线视频| 在线观看国产小视频| 九色国产在线| 九月婷婷亚洲综合在线| 成人精品午夜福利在线播放| 91欧美在线| 亚洲AV无码久久精品色欲| 免费国产黄线在线观看| 无码国产伊人| 国产经典免费播放视频| 国产欧美视频综合二区| 亚洲精品在线91| 无遮挡一级毛片呦女视频| 成人午夜免费观看| 91精品最新国内在线播放| 91探花国产综合在线精品| 欧美中文字幕一区| 亚洲欧美激情小说另类| 波多野吉衣一区二区三区av| 国产麻豆精品久久一二三| 日本www色视频| 免费人成在线观看成人片| 国产日本欧美亚洲精品视| 亚洲天堂网在线视频| 欧美人与性动交a欧美精品| 日韩欧美国产另类| 亚洲中字无码AV电影在线观看| 91精品国产情侣高潮露脸| 91成人在线免费视频| 国产清纯在线一区二区WWW| 在线另类稀缺国产呦| 国产成人夜色91| 欧美日韩在线成人| 九色最新网址| 爱色欧美亚洲综合图区| 国产爽妇精品| 国产精品久久久久无码网站| 国产福利观看| 无码中文AⅤ在线观看| 免费人成视网站在线不卡| 欧美日韩激情在线| 99久久精品久久久久久婷婷| 毛片三级在线观看| 国产综合精品一区二区| 黄色一及毛片| 久久久精品国产亚洲AV日韩| 久久先锋资源| 91欧美亚洲国产五月天| 精品欧美视频| 国产成人毛片| 亚洲天堂久久| 国产又粗又爽视频|