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

基于中間件的工業(yè)機(jī)器人軟件框架的研究和應(yīng)用

2008-01-01 00:00:00宋洪軍李貽斌周風(fēng)余
計算機(jī)應(yīng)用研究 2008年4期

摘要:在國內(nèi)首次使用中間件技術(shù),面向機(jī)車維護(hù)工業(yè)機(jī)器人,設(shè)計開發(fā)可擴(kuò)展、升級和移植的軟件應(yīng)用框架。詳細(xì)介紹了軟件框架的設(shè)計和實現(xiàn),包括采用兩層結(jié)構(gòu)實現(xiàn)服務(wù)器、框架的技術(shù)指標(biāo)、系統(tǒng)CORBA IDL的具體設(shè)計和定義。最后規(guī)劃了今后的研究工作。

關(guān)鍵詞:中間件; 公共對象請求代理體系結(jié)構(gòu); 工業(yè)機(jī)器人; 機(jī)車維護(hù)

中圖分類號:TP242文獻(xiàn)標(biāo)志碼:A

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

0引言

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

a)在機(jī)車承載兩側(cè)取出四組承載耳并檢查承載耳;

b)在機(jī)車承載兩側(cè)取出彈簧組并檢查彈簧;

c)翻轉(zhuǎn)機(jī)車承載,卸掉交叉桿,檢查交叉桿;

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

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

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

g)重新安裝交叉桿,翻轉(zhuǎn)機(jī)車承載;

h)重新安裝彈簧組;

i)重新安裝承載耳。

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

在現(xiàn)場應(yīng)用中,機(jī)器人類型以及工位作業(yè)不一樣,控制方式和通信協(xié)議也不一樣,作業(yè)流程是分布異構(gòu)的。各機(jī)器人必須按一定的節(jié)拍工作,以確保整個流程在給定時間內(nèi)完成。

符合現(xiàn)場應(yīng)用的軟件框架要求能夠管理工業(yè)機(jī)器人,調(diào)度指定作業(yè),并為作業(yè)的編輯、仿真和實時監(jiān)控提供有效的視覺手段。根據(jù)現(xiàn)場的特性和要求,軟件框架采用中間件技術(shù)和虛擬現(xiàn)實技術(shù)實現(xiàn)。

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

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

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

1試驗環(huán)境

如圖3所示,軟件框架的試驗環(huán)境是基于局域網(wǎng)的,實際包括三個機(jī)器人單元,一臺網(wǎng)絡(luò)計算服務(wù)器和若干工控PC。

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

系統(tǒng)服務(wù)器的配置如下:操作系統(tǒng)為RedHat AS3;

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

CORBA為ACE/TAO 1.4;數(shù)據(jù)庫為Oracle 9i for Linux。

在客戶端研發(fā)使用三臺工控PC:一臺運行Linux操作系統(tǒng)用于Pioneer的編程和調(diào)試;兩臺運行Windows。其中一臺運行Visual C++和ACE/TAO,用來開發(fā)基于CORBA的C/S方式的客戶端應(yīng)用;另外一臺安裝JDK用來開發(fā)基于RMI的B/S方式的客戶端應(yīng)用。圖5說明了客戶端應(yīng)用結(jié)構(gòu)。

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

2系統(tǒng)中間件的設(shè)計

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

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

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

服務(wù)器的兩層結(jié)構(gòu)設(shè)計分離了應(yīng)用中的低級具體操作和概念級的高層次服務(wù)模型,因此提升了系統(tǒng)的升級擴(kuò)展能力和可移植性。當(dāng)在系統(tǒng)中增加或移除機(jī)器人時,只需要配置對應(yīng)的RM模塊而不影響系統(tǒng)整體的概念設(shè)計和實現(xiàn)架構(gòu),不必考慮機(jī)器人具體的操作和相關(guān)編碼實現(xiàn)。當(dāng)主服務(wù)器移植到新的硬件服務(wù)器或運行新的操作系統(tǒng)時,底層的與機(jī)器人相關(guān)的應(yīng)用程序都不必在新環(huán)境下重新編譯或者改動。

在軟件框架中采用了CORBA標(biāo)準(zhǔn)服務(wù)包括:

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

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

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

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

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

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

3機(jī)器人IDL文檔的設(shè)計和定義

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

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

就現(xiàn)場應(yīng)用而言,機(jī)器人應(yīng)用相關(guān)的接口和數(shù)據(jù)結(jié)構(gòu)可歸納到如下范疇:

a)異常。異常處理機(jī)制是任何軟件框架不可或缺的,CORBA自身定義了30個標(biāo)準(zhǔn)系統(tǒng)異常,根據(jù)現(xiàn)場應(yīng)用需要,框架又自定義了若干異常,確保可以詳盡獲取并管理系統(tǒng)狀態(tài)。

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

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

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

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

系統(tǒng)開發(fā)采用不止一種機(jī)器人,所以按繼承關(guān)系來定義機(jī)器人對象,如圖8所示。除了機(jī)器人相關(guān)對象和接口的定義,還定義了RM、作業(yè)調(diào)度、系統(tǒng)日志等服務(wù)對象。

根據(jù)上述設(shè)計,下面給出軟件框架部分IDL定義:

事件結(jié)構(gòu)

struct sysEvent{

long eventID;

string eventMsg;

};

異常:機(jī)器人內(nèi)部自我碰撞

exception innerCollesion{};

異常:機(jī)器人與外部發(fā)生碰撞,包括機(jī)器人之間、機(jī)器人與工件、機(jī)器人與環(huán)境

exception outerCollesion{};

機(jī)器人類型:機(jī)械手、移動機(jī)器人

enum robotType{manipulator,mobile};

機(jī)器人采用的外部通信協(xié)議:RS-232 802無線Ethernet

enum commProtocol{RS,wireless,Ethernet};

機(jī)器人基本概況:品牌、制造商、供貨服務(wù)商、機(jī)器人型號、機(jī)器人類型、機(jī)器人編號、通信協(xié)議

struct RobotBasic{

stringbrand;

stringproducer;

stringvender;

stringmodel;

robotType robot_type;

shortrobot_num;

commProtocol comm_protocol;

};

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

enum speedType{linear,angular};

機(jī)器人(末端)位姿

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;

};

機(jī)器人狀態(tài)

typedef sequence〈positionNormal〉 status;

機(jī)器人運動控制點

struct controlPoint{

speedType speed_type;

double speedrate;

double duration;

positionNormal endPN;

};

機(jī)器人動作

interface robotAction{};

機(jī)器人作業(yè)點

struct jobPoint{

equence〈controlPoint〉 ctl_p;

robotAction act;

};

機(jī)器人作業(yè)序列

typedef sequence〈jobPoint〉 jobSeq;

機(jī)器人作業(yè)

struct robotJob{

jobSeq js;

string jobname;

string job_description;

};

工業(yè)機(jī)器人

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系統(tǒng)服務(wù)器的實現(xiàn)

在中間件應(yīng)用中,服務(wù)器端的實現(xiàn)主要是指服務(wù)對象的伺服程序?qū)崿F(xiàn)。一個伺服程序就是一組代碼集合,可被POA用來初始化服務(wù)對象,是服務(wù)對象標(biāo)志的服務(wù)的具體實現(xiàn),可由C/C++、Java等多種語言編碼。

在機(jī)器人單元中,其主要工作是具體實現(xiàn)Motoman UP6和Pioneer的伺服程序及相關(guān)的接口;在系統(tǒng)主服務(wù)器中,其主要工作是實現(xiàn)UP6和Pioneer對應(yīng)的RM伺服程序、系統(tǒng)日志伺服程序、作業(yè)調(diào)度伺服程序和系統(tǒng)監(jiān)控伺服程序等。

5結(jié)束語

在國內(nèi)首次闡述了面向機(jī)車維護(hù)的基于中間件和虛擬現(xiàn)實的軟件框架的設(shè)計和實現(xiàn)。雖然軟件框架是為機(jī)車維護(hù)研發(fā)的,但也可以應(yīng)用于其他復(fù)雜分布式異構(gòu)環(huán)境。今后的工作將專注于多機(jī)器人復(fù)雜作業(yè)調(diào)度和移動機(jī)器人的傳感信息處理。

參考文獻(xiàn):

[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-h(huán)an. 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.

主站蜘蛛池模板: 国产丰满大乳无码免费播放| 亚洲色欲色欲www在线观看| 91在线激情在线观看| 国产特一级毛片| 日韩精品毛片人妻AV不卡| 91免费在线看| 久久久久久久久18禁秘| 欧美一级在线| 人妻中文字幕无码久久一区| 国产精品理论片| 国产爽歪歪免费视频在线观看| 最新精品久久精品| 国产精品第页| 中文字幕亚洲电影| 国产精品永久久久久| 亚洲高清在线天堂精品| 伊人狠狠丁香婷婷综合色| 一本大道香蕉中文日本不卡高清二区| 婷婷午夜天| 好吊妞欧美视频免费| 免费激情网站| 国产成人做受免费视频| 国产69精品久久久久孕妇大杂乱| 日本免费一区视频| yjizz视频最新网站在线| 亚洲日韩AV无码精品| 91蜜芽尤物福利在线观看| 天天爽免费视频| 久久精品人人做人人综合试看| 亚洲国产精品日韩av专区| 国产成人无码AV在线播放动漫| 精品伊人久久久香线蕉| 国产内射一区亚洲| 精品亚洲麻豆1区2区3区| 久久这里只有精品8| 欧美日韩国产成人高清视频| 国产成人亚洲综合A∨在线播放| a在线亚洲男人的天堂试看| 日韩免费毛片| 手机精品视频在线观看免费| 亚洲人成网站在线播放2019| 日韩 欧美 小说 综合网 另类 | 亚洲国产成人久久精品软件 | igao国产精品| 国产一区二区三区精品久久呦| 久久免费视频播放| 国产99视频在线| 91黄视频在线观看| 亚洲熟女中文字幕男人总站 | 国产91视频观看| 国产91在线|中文| 国产激爽大片高清在线观看| 亚洲第一极品精品无码| 久久影院一区二区h| 亚洲AV成人一区国产精品| 国产亚洲欧美在线人成aaaa| 亚洲精品视频在线观看视频| 在线另类稀缺国产呦| 香蕉久人久人青草青草| 亚洲不卡影院| 国产欧美性爱网| 波多野结衣久久高清免费| 欧美日韩中文字幕在线| 扒开粉嫩的小缝隙喷白浆视频| 国产97视频在线观看| 99热国产在线精品99| 精品自窥自偷在线看| 国产免费人成视频网| 在线国产综合一区二区三区| 国产成人福利在线| 一本久道久久综合多人 | 粉嫩国产白浆在线观看| 日本午夜精品一本在线观看| 日韩精品一区二区三区中文无码| 欧美日韩激情在线| 欧美性久久久久| 特级做a爰片毛片免费69| 美女啪啪无遮挡| 亚洲一区黄色| 亚洲国产综合第一精品小说| 日韩欧美中文字幕一本| 精品乱码久久久久久久|