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

基于中間件的工業機器人軟件框架的研究和應用

2008-01-01 00:00:00宋洪軍李貽斌周風余
計算機應用研究 2008年4期

摘要:在國內首次使用中間件技術,面向機車維護工業機器人,設計開發可擴展、升級和移植的軟件應用框架。詳細介紹了軟件框架的設計和實現,包括采用兩層結構實現服務器、框架的技術指標、系統CORBA IDL的具體設計和定義。最后規劃了今后的研究工作。

關鍵詞:中間件; 公共對象請求代理體系結構; 工業機器人; 機車維護

中圖分類號:TP242文獻標志碼:A

文章編號:1001-3695(2008)04-1069-04

0引言

火車機車車輛的檢測與維護是鐵路機務段和機車維護廠的主要任務,檢修車間每天需要檢測與維護的火車有數十列,每列火車被分解檢查、更新部件,然后重新裝配后投入運行,工作量巨大。由于車底盤是磨損消耗最集中的部位,火車檢修主要是針對車廂底盤。機車底盤維護流程大體如下:

a)在機車承載兩側取出四組承載耳并檢查承載耳;

b)在機車承載兩側取出彈簧組并檢查彈簧;

c)翻轉機車承載,卸掉交叉桿,檢查交叉桿;

d)卸掉機車承載兩端的三角梁;

e)在四個八字面上去掉墊片,焊接新的墊片;

f)重新安裝機車承載兩端的三角梁;

g)重新安裝交叉桿,翻轉機車承載;

h)重新安裝彈簧組;

i)重新安裝承載耳。

以上每一步操作持續5~10 min。目前國內所有工作都是人工操作,輔以簡單的機械設備,自動化水平非常低。根據上述情況,啟動了采用工業機器人流水線實現機車車盤檢修自動化的研究。維修線整體設計布局如圖1所示。圖中流程按逆時針方向進行,右邊工作帶是步驟a)~d);左邊工作帶是步驟f)~i);中間是步驟e)。步驟e)配置了4臺焊接機器人,其他步驟都各配置1臺機器人,1臺移動機器人作為AGV,負責將彈簧和承載耳從右邊工作帶運送到左邊工作帶。整個流程包括13臺機器人,在研發階段,步驟c)和g)使用自行設計制造的特種機器人,使用Pioneer先鋒作為AGV,其他步驟使用2臺6自由度的Motoman UP6機械手。

在現場應用中,機器人類型以及工位作業不一樣,控制方式和通信協議也不一樣,作業流程是分布異構的。各機器人必須按一定的節拍工作,以確保整個流程在給定時間內完成。

符合現場應用的軟件框架要求能夠管理工業機器人,調度指定作業,并為作業的編輯、仿真和實時監控提供有效的視覺手段。根據現場的特性和要求,軟件框架采用中間件技術和虛擬現實技術實現。

目前可用的中間件技術包括CORBA、Microsoft .NET、IBM SOM、SOAP、RTC、Sun’s Java/RMI等。軟件框架的系統中間件采用C++ CORBA,在客戶端除了C++ CORBA,還使用Java/RMI。

CORBA是由OMG提出并維護的獨立于供應商的標準協議[1],它為可移植的分布式計算應用提供了平臺無關的編程接口和服務模型。由于獨立于編程語言、操作系統平臺和網絡協議,CORBA高度適合于分布式應用系統的集成以及在已有系統內開發新的應用軟件[2]。圖2展示了CORBA機制內的部件模型,這些部件一起實現了CORBA的互操作性、可移植性以及其他特性。其中,客戶端和駐留在服務器的各種CORBA對象通過ORB(object request broker)互連通信。ORB可由不同廠家實現,但都遵循一致的CORBA協議,對于客戶端來說都是透明無區別的。

實時CORBA(real-time CORBA,RTCORBA)協議[3]擴展了CORBA核心模型以支持實時架構需要。當前可用的實時CORBA是基于C++和Java的實現。實時CORBA設計了編程接口,可以在應用程序中配置并控制計算機處理器以及通信和內存等資源。由于這些特性,軟件框架采用了實時CORBA提供的若干特性和服務。

1試驗環境

如圖3所示,軟件框架的試驗環境是基于局域網的,實際包括三個機器人單元,一臺網絡計算服務器和若干工控PC。

機器人單元中有兩個是Motoman UP6機械手及配套的控制器和本地工控機。該機械手有六個自由度,由控制器直接控制,控制器可以通過RS-232或以太網卡與一臺工控PC連接,如圖4所示。

系統服務器的配置如下:操作系統為RedHat AS3;

CPU為Intel(R) Xeon(TM) CPU 3.00 GHz;RAM為2 GB;

CORBA為ACE/TAO 1.4;數據庫為Oracle 9i for Linux。

在客戶端研發使用三臺工控PC:一臺運行Linux操作系統用于Pioneer的編程和調試;兩臺運行Windows。其中一臺運行Visual C++和ACE/TAO,用來開發基于CORBA的C/S方式的客戶端應用;另外一臺安裝JDK用來開發基于RMI的B/S方式的客戶端應用。圖5說明了客戶端應用結構。

按圖3~5設計,整個軟件框架的通信都是基于CORBA IIOP(Internet inter-ORB protocol)的。CORBA協議定義了GIOP(general inter-ORB protocol)作為其互協作的基本框架, 但GIOP只是抽象概念定義,不能直接應用于ORB間的通信。IIOP是基于TCP/IP的GIOP具體實現,軟件框架中,客戶端應用與系統服務器的通信,以及機器人工作單元與系統服務器的通信都是基于IIOP的。

2系統中間件的設計

圖3、4中的服務器的設計是兩層結構,而在文獻[1,4~7,9]中的服務器的設計都是單層結構。這樣設計是因為應用對實時性要求高,如文獻[6]中所論述,在中間件系統中有很多因素導致惡劣的實時性能,包括用戶響應、網絡傳輸、CORBA協議處理、CORBA服務處理、顯示處理等。如果所有13部機器人的工作負載以及多個用戶的請求處理全部集中于系統主服務器,則系統主服務器就會成為整個系統性能的瓶頸。

為解決此問題,如圖4所示,由于具體機器人的行為和控制方式都相對固定,針對每部機器人都配置了一臺本地工控PC,設立了CORBA環境,并開發了本地服務程序,專門處理機器人的具體操作。這樣系統主服務器可以專注于高級的綜合任務和事務,如作業調度、遠程實時監控、作業仿真、系統日志、客戶請求處理等。

系統主服務器通過RM(robot manager)與機器人單元交互,每個機器人在系統主服務器的實時POA(real-time portable object adapter,RTPOA)內都駐留著相應的RM,如圖6所示。RM是主服務器和本地機器人的雙重代理,主服務器只與代表機器人的RM交互,不去考慮機器人的具體實現;本地機器人也只與自己的RM交互,不必考慮其駐留的主服務器的設計和實現。

服務器的兩層結構設計分離了應用中的低級具體操作和概念級的高層次服務模型,因此提升了系統的升級擴展能力和可移植性。當在系統中增加或移除機器人時,只需要配置對應的RM模塊而不影響系統整體的概念設計和實現架構,不必考慮機器人具體的操作和相關編碼實現。當主服務器移植到新的硬件服務器或運行新的操作系統時,底層的與機器人相關的應用程序都不必在新環境下重新編譯或者改動。

在軟件框架中采用了CORBA標準服務包括:

a)命名服務(naming service)。它是基本的CORBA標準服務,用于提供透明的中間件服務定位。服務器端駐留并維護著服務對象,并以字符串名字進行廣播;客戶端可以通過解析這些字符串名字獲取所需要的服務對象引用,進而取得所需要的服務,而不必考慮服務對象和服務器的位置和具體實現。

b)實時日志服務(RT event based log service)。因為要應用于工業現場,采用CORBA的實時日志服務為系統提供日志能力。在本框架中,用戶的所有操作、請求、響應以及系統內所有的事件、異常、運行狀態均可以配置到日志記錄中。這些被記錄的信息可用來在研發階段調試系統框架,在現場應用中幫助評估系統性能,協助機器人的示教訓練和編碼,跟蹤用戶操作等。

c)實時事件服務(real-time event service)。它使CORBA系統可以交換命名的事件,沒有傳統的客戶與服務器的界定,而只是發出事件的供應者和訂制并接收事件的消費者,事件在供應者和消費者之間的專有事件頻道內傳輸。實時事件服務給應用實現以及數據交換帶來了極大的靈活性,如當機器人的空間位姿或作業狀態發生變化,就會產生相應的事件,該事件通過事件頻道傳送到訂制事件的消費者,消費者可以是任意的CORBA對象。

從遠端分布的多個用戶來實時地監控多個機器人要求系統能較好地利用多線程處理并發。RTCORBA提供了線程池(thread pool)機制來支持服務器的多線程編程,實現服務器資源預分配。當服務器啟動時,一組線程可以被靜態地創建,這些線程隨時準備被綁定到客戶的請求,可以防止系統運行時線程創建/釋放引起的過載,并通過配置服務器的線程數量來確保系統的性能[1]。

為避免低優先級的請求消耗掉所有線程,線程池可以進一步按優先級劃分成若干“泳道”。這樣可以分組管理線程,同時保證了高優先級的請求不被錯過或延誤。劃分不是絕對的,當高優先級請求所屬“泳道”無線程可分配時,可以從低優先級“泳道”借線程使用。在軟件框架(圖6)中,當系統啟動時,對應于每一個服務對象(RM、系統日志等)的RTPOA就被創建,同時相應的線程池也被創建,劃分成若干“泳道”并處于工作待命狀態。

針對RM,線程池按高、中、低三個優先級劃分“泳道”。一般的作業操作屬于低級別請求;狀態改變相關的事件屬于中級別請求;碰撞和緊急停機屬于最高優先級。這樣在正常情況下,機器人可執行規定的作業并及時將自身狀態事件發布出去,并保證在緊急情況下停止工作和動作。

3機器人IDL文檔的設計和定義

軟件框架定義了一組機器人對象和接口作為全部工作的基礎,所有對象和接口都以CORBA IDL定義,確保語言和平臺的無關性[8]。這些接口在服務器端具體實現,以伺服程序(servant)方式體現[4]。

根據CORBA IDL定義的對象和接口,圖7展示了C++ CORBA服務器端和不同客戶端的實現。在客戶端,開發者和用戶不必了解對象和接口是如何實現的,只要能獲得對象引用,針對可用的接口編程實現客戶端的事務和應用就行了。開發者可以選擇VC++/ACE/TAO、BC++/VisiBroker、Java/RMI等開發套件;在服務器端,軟件框架采用Linux/C++/ACE/TAO開發。

就現場應用而言,機器人應用相關的接口和數據結構可歸納到如下范疇:

a)異常。異常處理機制是任何軟件框架不可或缺的,CORBA自身定義了30個標準系統異常,根據現場應用需要,框架又自定義了若干異常,確保可以詳盡獲取并管理系統狀態。

b)事件。軟件框架采用CORBA的實時事件服務作為消息交換的主要方式。在事件定義中主要包含兩項,惟一標志事件類型的ID及用來承載數據和消息的CORBA Any類數據。

c)作業操作。機車底盤維護流程包括十幾項作業,每個作業由CORBA sequence序列來定義。

d)機器人運動學。每個機器人運行特定的作業,每個作業實際上是運動學動作或運動學矩陣的序列。序列內的每個執行點都是可編輯的,作業序列的本質就是路徑規劃的過程。因此在本軟件框架中定義了相應的對象和接口,如UP6的DH表述和正解、逆解。

e)輔助接口。每個機器人的控制器都有若干輔助函數或接口,如UP6的API可以協助機器人重置零位或與本地PC建立通信連接等。這些機器人本機API都被定義或映射到對應的IDL定義中,這樣確保在系統中有全局統一的機器人控制接口描述。

系統開發采用不止一種機器人,所以按繼承關系來定義機器人對象,如圖8所示。除了機器人相關對象和接口的定義,還定義了RM、作業調度、系統日志等服務對象。

根據上述設計,下面給出軟件框架部分IDL定義:

事件結構

struct sysEvent{

long eventID;

string eventMsg;

};

異常:機器人內部自我碰撞

exception innerCollesion{};

異常:機器人與外部發生碰撞,包括機器人之間、機器人與工件、機器人與環境

exception outerCollesion{};

機器人類型:機械手、移動機器人

enum robotType{manipulator,mobile};

機器人采用的外部通信協議:RS-232 802無線Ethernet

enum commProtocol{RS,wireless,Ethernet};

機器人基本概況:品牌、制造商、供貨服務商、機器人型號、機器人類型、機器人編號、通信協議

struct RobotBasic{

stringbrand;

stringproducer;

stringvender;

stringmodel;

robotType robot_type;

shortrobot_num;

commProtocol comm_protocol;

};

速度類型:線速度,角速度

enum speedType{linear,angular};

機器人(末端)位姿

struct positionNormal{

double px; double py;

double pz; double nx;

double ny; double nz;

double ox; double oy;

double oz; double ax;

double ay; double az;

};

機器人狀態

typedef sequence〈positionNormal〉 status;

機器人運動控制點

struct controlPoint{

speedType speed_type;

double speedrate;

double duration;

positionNormal endPN;

};

機器人動作

interface robotAction{};

機器人作業點

struct jobPoint{

equence〈controlPoint〉 ctl_p;

robotAction act;

};

機器人作業序列

typedef sequence〈jobPoint〉 jobSeq;

機器人作業

struct robotJob{

jobSeq js;

string jobname;

string job_description;

};

工業機器人

interface iRobot{

readonly attribute RobotBasic basic_description; 

readonly attribute short degree_freedom;

attribute robotJob job;

attribute Status status;

void setSpeedTypeOf(in short ctrl_idx,

in speedType st,

in short flag);

void setSpeedRateOf(in short ctrl_idx,

in double speedrate,

in short flag);

};

4系統服務器的實現

在中間件應用中,服務器端的實現主要是指服務對象的伺服程序實現。一個伺服程序就是一組代碼集合,可被POA用來初始化服務對象,是服務對象標志的服務的具體實現,可由C/C++、Java等多種語言編碼。

在機器人單元中,其主要工作是具體實現Motoman UP6和Pioneer的伺服程序及相關的接口;在系統主服務器中,其主要工作是實現UP6和Pioneer對應的RM伺服程序、系統日志伺服程序、作業調度伺服程序和系統監控伺服程序等。

5結束語

在國內首次闡述了面向機車維護的基于中間件和虛擬現實的軟件框架的設計和實現。雖然軟件框架是為機車維護研發的,但也可以應用于其他復雜分布式異構環境。今后的工作將專注于多機器人復雜作業調度和移動機器人的傳感信息處理。

參考文獻:

[1]BOTTAZZI S, CASELLI S, REGGIANI M, et al. A software framework based on real-time CORBA for telerobotics system[C]//Proc of IEEE International Conference on Intelligent Robots and Systems. Piscataway: IEEE, 2002:3011-3017.

[2]MICHI H, STEVE V. Advanced CORBA programming with C++[M].[S.l.]: Addison Wesley, 1999.

[3]OMG.Real-time CORBA specification[EB/OL].(2002-08-02).http://www.omg.org/docs/formal.

[4]KUO Y H, MACDONALD B A. A distributed real-time software framework for robotic applications[C]//Proc of IEEE International Conference on Robotics and Automation. Barcelona:[s.n.], 2005:150-155.

[5]PAN Lian-dong, HUANG Xin-han. Implementation of a PC-based robot controller with open architecture[C]//Proc of IEEE International Conference on Robotics and Biomimetics. 2004:790-794.

[6]FERNNDEZ-MADRIGAL J A,CRUZ-MARTN E, CRUZ-MARTN A, et al. Adaptable Web interfaces for networked robots[C]//Proc of IEEE International Conference on Intelligent Robots and Systems. Piscataway: IEEE,2005:3441-3446.

[7]CHEN Qi-jun, GENG Hai-xia, WOO P Y. Research on and pure Java realization of a Web-based mobile robot system[C]//Proc of American Control Conference. 2003:615-620.

[8]UTZ H, SABLATNG S, ENDERLE S, et al. Miro-middleware for mobile robot applications [J]. IEEE Trans on Robotics and Automation, 2002,18(4):159-165.

[9]MARIN R, SANZ P J, SANCHEZ J S. A very high level interface to teleoperate a robot via Web including augmented reality[C]//Proc of International Conference on Robotics and Automation. Washington DC: ACM Press, 2002:2725-2730.

主站蜘蛛池模板: 免费看a级毛片| 久久无码免费束人妻| 国产成人精品一区二区秒拍1o| 99热这里都是国产精品| 全色黄大色大片免费久久老太| 97精品久久久大香线焦| 69国产精品视频免费| 亚洲欧美综合另类图片小说区| 一区二区三区四区精品视频 | 青青草原国产一区二区| 最新国产午夜精品视频成人| 亚洲自拍另类| 日韩a级毛片| 国产一级一级毛片永久| 国产h视频在线观看视频| 亚洲色图综合在线| 久久久国产精品无码专区| 欧美精品黑人粗大| 国产精品微拍| 日韩欧美网址| 91精品视频网站| 国产www网站| 欧美劲爆第一页| 不卡无码h在线观看| 操操操综合网| 久久久久久久97| 久久夜夜视频| 国产美女免费| 麻豆精选在线| 欧美午夜一区| 狠狠亚洲五月天| 国产裸舞福利在线视频合集| 久久鸭综合久久国产| 欧美国产综合视频| 日韩福利在线视频| 992tv国产人成在线观看| 午夜欧美理论2019理论| 亚洲成人黄色在线| 国产乱人免费视频| 一本大道视频精品人妻| 国产精品国产三级国产专业不| 欧美一道本| 福利在线免费视频| 国产95在线 | 毛片久久久| 日本精品αv中文字幕| 成人毛片免费在线观看| 人妻精品久久久无码区色视| 毛片在线播放a| 婷婷色狠狠干| 找国产毛片看| 亚洲天堂在线视频| 国产第一福利影院| 在线va视频| 国产第一页第二页| 国产喷水视频| 国产欧美日韩免费| 天天做天天爱天天爽综合区| 午夜人性色福利无码视频在线观看 | 无码国产偷倩在线播放老年人| 成年女人a毛片免费视频| 国产欧美日韩视频一区二区三区| 亚洲三级网站| 91国语视频| 久久国产乱子| 国产精品自拍合集| 亚洲综合亚洲国产尤物| 国产91色在线| 在线观看热码亚洲av每日更新| 亚洲91在线精品| 四虎影视永久在线精品| 精品人妻无码区在线视频| 97视频在线精品国自产拍| 久久这里只有精品66| 激情综合婷婷丁香五月尤物| 福利姬国产精品一区在线| 国产91视频免费观看| 久久中文无码精品| 国产成+人+综合+亚洲欧美| 久久99蜜桃精品久久久久小说| a色毛片免费视频| 国产97色在线|