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

Android與ROS交互通信的可靠性設計

2018-04-18 11:33:44李夢男邵振洲施智平魏洪興
計算機應用與軟件 2018年3期

李夢男 邵振洲 渠 瀛 施智平 關 永 魏洪興

1(首都師范大學信息工程學院 北京 100048) 2(輕型工業機器人與安全驗證北京市重點實驗室 北京 100088) 3(成像技術北京市高精尖創新中心 北京 100048) 4(田納西大學工程學院 諾克斯維爾 37996) 5(北京航空航天大學機械工程及自動化學院 北京 100083)

0 引 言

當今,隨著服務機器人基礎工作的不斷完善,人機交互方向的研究日益成為機器人領域的熱門。傳統的搖桿、按鍵等交互方式具有操作繁瑣、不靈活、接口沒有統一的標準等缺點,已不能滿足于當今的智能服務機器人。機器人通信框架也可稱為機器人操作系統的ROS一定程度上解決了以上機器人軟件開發與人機交互中的痛點問題,因為其完美支持各種人機交互的傳感器設備和擁有豐富的算法支撐。但是目前流行的人機交互方式存在著一些問題,例如Kinect和RealSense等視覺體感設備容易受周圍環境的影響而使識別準確率下降;LeapMotion等手勢識別控制器的交互方式局限性很大;語音識別又會受到距離、周圍嘈雜環境的影響等[1-3]。因這些人機交互方式的魯棒性、實時性、自適應性等方面均存在一定的缺陷,所以目前并沒有得到很好的推廣應用。

相比以上各種人機交互的傳感設備,集語音識別、攝像頭、陀螺儀、手勢識別、定位導航等多種傳感器于一體的智能移動設備作為服務機器人的人機交互終端更具有一定優勢[4-5]。因其集成度高可省去一些交互設備,節約成本,還可為基于云概念的機器人提供多遠程終端的支持,提高云端的擴展性[6],例如導游機器人、點餐機器人等。因此,將移動終端系統與ROS互聯通信,對于出現在家庭、銀行、餐飲、娛樂、教育等場所的服務機器人有著很好的應用前景[7-9]。

目前,一些組織(包括Google,Willow Garage等)已經作出了很多貢獻,主要解決移動終端領域使用率最高的Android和iOS設備與目前流行的機器人系統ROS間的通信問題。其中,rosbridge協議的提出是為了讓非ROS環境可與ROS節點進行通信,其基本思路是通過一個中間橋梁WebSocket來聯系通信雙方各自的協議,但此種方式存在著通信過程冗余、效率低、通信安全漏洞、平臺兼容性等問題[10]。因此,在移動平臺本地系統實現ROS環境是一種很好的解決方式,不僅可以提高與ROS通信的效率,還會增加人機交互系統的擴展性。當前,iOS設備與ROS交互的ROSPod (2015)并沒有完全實現ROS通信的全部功能,而且穩定性不好[11]。另外一種實現方式是基于在Google I/O大會上發布的一個純java實現ROS基本通信組件的客戶端庫rosjava[12]。因基于該庫開發的android_core功能包具有很好的穩定性,使其成為了在Android移動終端構建與ROS機器人通信應用的重要組件。

然而,基于rosjava的Android應用功能包集合android_core雖然提供了ROS中基本的發布訂閱通信方式,但是在應對交互過程中需要機器人不斷反饋其任務執行狀態信息給移動終端以及移動終端需要執行任務搶占時,此通信方式便不滿足要求了。此外,該通信方式沒有網絡異常實時檢測功能,在遠程人機交互方面存在著通信安全隱患。例如機器人正執行Android移動終端發送的命令時,網絡突然中斷,與移動終端失去聯系的ROS機器人就會面臨失控的危險。因此,基于rosjava研究一種介于Android和ROS間的支持任務搶占與中間狀態信息反饋,并且可以實時監測兩者連接狀態的可靠通信方式顯得尤為重要。

本文一方面設計了一種實時監測Android與ROS間連接狀態的功能模塊“CheckNodeConnection”,在建立TCP/IP協議連接的應用層加入心跳包反饋機制,使得ROS機器人端時刻知道Android移動終端的連接狀態,在任務執行過程突然通信中斷時可進入預設的安全模式,增加了人機交互的安全性與友好性。另一方面,基于rosjava為Android移動終端開發了匹配ROS Actionlib中“ROS Action Protocol”的通信機制“RosActionOnAndroid”,滿足了交互過程中移動終端需要不斷獲取機器人的狀態反饋信息,以及可按優先級進行任務搶占的需求。

1 ROS的通信框架以及與Android互聯的實現要點

1.1 ROS通信框架

ROS運行于主操作系統之上,提供了一種分布式通信框架,由各自獨立的功能節點(Node)組成。節點作為處理任務計算的進程,在不同的系統任務中可依據工作需求調整其承載的功能粒度,極大地增加了系統的模塊化和代碼的封裝程度[13]。各節點間通過發布/訂閱消息模型進行異步通信,通信的雙方節點并不清楚對等端的存在,連接工作均交給中間管理者ROS Master。每個節點的信息都要在ROS Master上進行注冊,可以將其看作一個查詢表,為各個節點提供類似DNS的服務,即各個節點的主機名、IP地址、端口號等信息。其具體存儲是在ROS Master內部的Parameter Server上,用戶可通過封裝有XMLRPC的接口進行存儲和檢索其中的信息。其中所有的資源(包括node、topic、service、parameter等)都是在某個命名空間中使用特定的Name進行了定義。計算圖層中的Name在ROS的封裝體系中非常重要,是各資源間的連接橋梁,還保障了不同資源間的Name不會沖突[14]。

ROS的分布式通信框架是一種點對點P2P(Peer-to-Peer)的松耦合的網絡連接的處理架構,其主要的數據傳輸方式包括基于話題(Topic)的異步數據流通信、基于服務(Service)的請求回應模型以及基于遠程過程調用(RPC)的節點管理器Master等[15]。根據通信協議進行分類主要分為兩種:

(1) XML-RPC協議:包括ROS Master和ROS Parameters(搭載在Master上的參數服務器)。XML-RPC的全稱是XML Remote Procedure Call,中文名叫作XML遠程過程調用,是Apache軟件基金會為解決分布式計算問題而創作的一種通信協議。在該協議的Server端綁定各種供用戶使用的方法,Client端可以依據該協議來遠程調用Server端的方法。具有跨平臺、分布式、XML作為傳輸信息格式、多種數據結構等特點。其工作流程如圖1所示。

圖1 XML-RPC工作流程圖

(2) TCPROS協議:基于TCP協議的ROS應用層數據協議,用于解析Topic和Service的數據流。TCPROS為了保證通信雙方的傳輸類型一致,會在協議頭中給出Topic名的md5 hash算法處理之后的值,每次改動消息類型時,md5的值都會隨之改變,這樣就避免了新舊消息類型不一致的問題。TCPROS的協議頭所占字節數一般是固定的,其中seq可以檢測是否丟包,stamp可以檢測消息實時性。該協議還為用戶提供了一些底層傳輸設置接口,例如Subscriber中的選項tcp_nodelay如果為1,便給socket設置TCP_NODELAY選項,降低延遲,但可能會降低傳輸效率。另外Service Client選項的persistent設置為1,則該service的鏈接會開放多個請求通道。

1.2 ROS與Android互聯實現要點

目前,ROS和Android實現通信的方式主要有兩類: rosbridge和rosjava。

1.2.1rosbridge

rosbridge協議的提出是為了讓非ROS環境可與ROS節點進行通信,基本思想是通過一個中間橋梁WebSocket來聯系通信雙方各自的協議。對于Android與ROS通信來講,可在Android平臺實現WebSocket,其以JSON格式的API為非ROS環境提供ROS通信支持,包括基于話題的發布訂閱和服務的各種操作,依據rosbridge協議解析JSON,這部分工作已經在一個開源項目RosBridgeClient中進行了實現,該庫依賴java_websocket和json_simple兩個庫。ROS機器人中需要運行rosbridge_server作為監聽rosbridge協議的服務器,通過RosBridgeClient和rosbridge_server便可使得Android應用與ROS機器人功能節點通過rosbridge協議進行通信,總體框圖如圖2所示。

圖2 Android終端與ROS機器人使用rosbridge通信示意圖

以rosbridge協議進行通信的方式是輕量級、跨平臺的,依據第三方庫可以快速構建自己ROS機器人的交互Android APP,不需要在 Android平臺上過多依賴java實現的ROS組件。但是增加中間rosbridge協議無疑會帶來傳輸效率降低、擴展困難、通信安全問題等缺點。此外,第三方庫沒有經過單元測試,并不能保證其魯棒性。

1.2.2rosjava

rosjava使用java實現了ROS中的基本通信機制,以及一些必要的核心工具(例如tf,geometry)和一些驅動。android_core是Google基于rosjava開發的用來在Android平臺實現ROS應用的組件集合,包括Android視圖與ROS節點相結合的數據顯示功能組件,并且實現了Android中所需的基本組件Activity(RosActivity)和Service(NodeMainExecutorService)。RosActivity是ROS應用程序在Android上進行部署所必不可少的程序組件,用來與用戶進行交互,NodeMainExecutorService主要用來獲取ROS Master,進而執行和管理Android中ROS節點(NodeMain)的生命周期。開發者可通過android_core來構建自己機器人的移動終端交互APP。此外,通過Google提供的原生開發工具NDK(Native Development Kit)來實現java與C/C++間的相互調用,開發者可在Android開發應用中調用自己的ROSCPP相關庫函數,保護一些敏感算法。

本文主要研究使用rosjava構建的Android應用與ROS機器人交互通信中的可靠性問題,包括兩點:一是通過TCPROS建立通信連接時的網絡異常檢測;二是增加Android以ROS交互時的任務搶占與反饋機制。

2 Android與ROS通信中的網絡異常檢測機制

ROS作為一種分布式系統框架,需要一個中間服務ROS Master管理各個節點間的聯系。它為各節點提供了名字注冊服務,即各節點通過XMLRPC協議在Master上進行注冊自己的信息。例如名字、話題、服務等。使得各節點間可以通過話題、服務等建立TCP連接,雙方通過TCPROS/UDPROS協議便可進行數據傳輸。此時的ROS Master只是維護各節點的基本信息,在對節點間通信異常情況未做任何處理。對于一些人機交互方面,例如發送機器人手臂控制消息讓其做復雜任務,機器人需長時間執行用戶命令,但若在此期間移動終端連接中斷,便不能給機器人發送停止信號,這時便可能發生機器人失控帶來的危險。所以,對于一些交互節點的連接狀態采取必要的監控是非常重要的。

Android移動交互終端與ROS機器人間是通過基于TCPROS協議進行數據傳輸的。該協議基于標準TCP協議,在三次握手建立連接與四次揮手關閉連接的過程中出現網絡異常時,則通信雙方能夠互相感知。但是在建立好連接的狀態下,如若出現連接中斷,則雙方便不會及時知道對方的狀態如何。 這里提到的連接中斷包括網絡故障、通信雙方的應用程序崩潰以及通信雙方的主機崩潰等。解決此類問題可采用以下兩種策略。

2.1 Keep-Alive

許多TCP的具體實現提供了一個稱作Keep-Alive的機制用來檢測死連接,其工作方式是在TCP通信鏈接通道空閑一段時間間隔后發送一個Keep-Alive包。如果對方主機的對等應用程序正常運行,就會響應一個ACK應答。如果對方主機可到達但是對等應用程序沒有運行,則會響應RST消息,發送Keep-Alive消息的TCP程序就會撤銷連接并返回ECONNRESET錯誤給應用程序。如果對方既沒有響應ACK又沒有返回RST消息,就會按照設定的嘗試次數繼續發送Keep-Alive探詢消息,在規定次數內未收到對方響應,則表明對方不可到達或已經崩潰,這時就會返回ETIMEDOUT錯誤。

此種方式有三個重要參數tcp_keepalive_probes、tcp_keepalive_time、tcp_keepalive_intvl,其中tcp_keepalive_time為探測時間間隔,默認為7 200秒,對于實時檢測幾乎沒有意義,如果改變參數,又會失去清除長時間死連接這一最初的意義。此外,keep-alive不僅會檢測死連接,還會撤銷它們,在某些使用場合是不希望發生的,并且對于TCP以短連接為主的方式不起作用。

2.2 應用層心跳包

在應用層實現對連接中斷的檢測是本文的研究關鍵點,基本思想和Keep-Alive類似,定時向對等方發送自定義探針,對等方需返回對應協議的應答,但由于是在應用層實現的,可以根據應用程序靈活掌握檢測時間。為減少Android移動終端的計算壓力,本文將檢測通信網絡狀態的TCP Server設計在ROS機器人的任務執行服務端,開發一個監聽ROS節點連接狀態的功能模塊(CheckNodeConnection),如圖3所示。該模塊提供了一系列編程接口,ROS機器人可主動監測、被動監測Android中ROS節點的網絡連接狀態,其中主動監測是在ROS機器人端輸入需要監控節點的Caller ID,而被動監測是Android端節點主動發起被監聽請求,請求中包含需要被監控節點的Caller ID?!癈heckNodeConnection”模塊得到需要被監控節點的Caller ID之后,就會實例化一個與ROS Master中的XMLRPC Server對應的XMLRPC Client。通過XMLRPC協議調用“lookupNode”方法,然后通過“Resolver”模塊解析返回的結果XmlRpcValue,得到需要被監控節點的URL之后就可與被監控節點建立TCP連接,并保持自定義心跳協議的長連接。一旦通信出現異常或者Android端應用程序崩潰等情況發生,“CheckNodeConnection”模塊就會檢測到連接異常,并通知相關任務執行模塊進入預設的安全模式,防止機器人失控帶來危險。此外,還可在Android移動交互端進行提示用戶故障所在,增加交互的友好性。

圖3 “CheckNodeConnection”模塊總體框圖

3 RosActionOnAndroid通信機制的實現

Android移動終端與ROS機器人間的交互需要一種可時刻反饋任務執行狀態信息以及可搶占任務執行的通信機制來提高人機交互的可靠性[16]。ROS中的Actionlib功能包提供了這種通信機制,但是,在android_core中并未提供與ROS Actionlib進行通信的功能。因此,作者開發了一套用于Android移動終端與Actionlib中ActionServer通信的“RosActionOnAndroid” java開發包。其總體結構框圖如圖4所示。

圖4 “RosActionOnAndroid”開發包總體框圖

該開發包主要由Action Client/Server功能模塊和其對應的狀態機組成,client和server分別為用戶提供相應的編程接口。例如Action Client會提供目標Publisher的設置接口,提供發送goal到Action Server的接口,Action Server有對應該goal話題的Subscriber,提供給用戶MessageListener接口,用戶可根據消息進行相應任務的執行,依據執行情況可進行Action Server狀態機的設置,Action Client中的狀態機狀態會跟隨Action Server的狀態變化而改變。

“RosActionOnAndroid”采用client-server的工作模式,兩者之間通過“ROS Action Protocol”進行通信,該協議是對基礎ROS消息進行的封裝,包括目標(goal)、結果(result)、反饋(feedback)、狀態(state)、取消(cancel)。消息的傳遞方式還是采用基于TCPROS協議的發布訂閱通信模式,client和server分別維護各自的任務執行狀態機,為用戶提供可搶占任務、中間狀態信息反饋等各種接口。用戶可通過該開發包在Android端構建Action Client與ROS機器人中對應執行任務計算的Action Server進行通信,包括發送任務目標、取消目標、獲取Action Server端任務執行的反饋信息與最終結果等。

對于Android端的ActionClient功能包類圖如圖5所示,ActionClient實現了rosjava中的NodeMain接口,并實現了其中的虛方法,所以在android_core的RosActivity中實例化一個ActionClient節點,便可與ROS機器人中的Action Server通過“ROS Action Protocol”進行通信。

圖5 ActionClient功能包類圖

4 應用與實驗驗證

本文提供了一個應用案例,為某一服務機器人平臺開發一個Android移動終端交互APP,如圖6所示。該應用程序可與機器人進行遠程交互,例如語音識別、視覺傳輸、導航、手臂運動規劃控制等,并將本文設計的網絡通信異常檢測機制與“RosActionOnAndroid”通信機制加入其中來提高該交互過程的可靠性與精確性。

圖6 ROS服務機器人與其Android移動終端交互APP

4.1 網絡通信異常檢驗測試

本文針對網絡通信異常檢驗設計了一個簡單普遍的應用案例,Android移動終端與ROS機器人如圖7所示進行組網設計,分別對Android智能手機、路由器兩部分進行斷網、強制關機來模擬網絡故障、主機死機等情況,分別驗證ROS機器人是否即刻感知其移動交互終端的連接斷開。

圖7 移動終端與ROS機器人的組網示意圖

這兩部分的實驗過程大體一致,這里針對Android智能手機斷網進行實驗,測試ROS機器人是否感知移動終端通信異常。正常情況下,Android移動終端會與ROS機器人保持連接,每30 ms發送一次自定義協議心跳包,在該實驗過程時間范圍內Android移動終端向ROS機器人發送的字節數如圖8所示。當在A點時人為關閉Android移動終端網絡,再經過5次探測后確定移動終端網絡異常,在B點ROS機器人會得到感知,從而進入預設的安全模式。

圖8 ROS機器人向Android移動終端發送心跳包的時序圖

4.2 RosActionOnAndroid測試

本文通過“RosActionOnAndroid”在Android移動終端構建與ROS機器人手臂交互控制的應用,來測試其可通過執行任務狀態信息的時刻反饋來提高控制精度和通過監控手臂運動時的速度來防止危險發生。

機器人手臂多由電機模塊組成,采用關節位置驅動的方式,在物理機器臂運動時會受到內部電機的速度、加速度等參數的制約,如果不加處理的話,就會使得算法規劃的手臂運動軌跡與物理機器臂運動的路徑不一致。此時,Android移動終端與ROS機器人交互時,RosActionOnAndroid就能很好地解決這一問題。

本文通過“RosActionOnAndroid”在Android移動終端實時獲取ROS機器人手臂的運動位置,動態逼近目標值來提高控制運動路徑精度。例如,控制機器臂末端畫一個完整圓圈,以某一起點開始再回到該點,如圖9中的A所示,通過算法得到末端畫圓所經過的路點如圖10所示。如果將規劃后的手臂運動路徑直接發送到ROS機器人,驅動手臂運動,由于物理機器人手臂運動經過每個路點的時間不會正好與運動學算法規劃的時間相吻合,便導致真實路徑偏離理論的圓弧,如圖9中的B所示。然而,通過“RosActionOnAndroid”與ROS機器人通過Actionlib機制通信,通過ROS機器人時刻返回當前運動狀態決定下一路點的控制時間,便會使軌跡接近理論圓弧,如圖9中的C所示。

圖9 機器人手臂畫圓測試

圖10 手臂末端執行器畫圓所經過的路點

此外,通過“RosActionOnAndroid”可在Android移動交互終端實時獲得機器人的任務執行狀態信息,監控其是否符合安全運作模式,動態設置安全閾值。例如,移動終端發送指令給ROS機器人手臂去執行某種任務,并監控其手臂運動速度是否超出閾值,這時便需要目標指令、手臂各個關節的速度值以及可任務搶占和終止四個數據傳輸通道,則基本的ROS發布訂閱通信模式就不適用了。

本實驗將Android移動終端,通過“RosActionOnAndroid”與ROS機器人手臂運動規劃服務端的ActionServer綁定連接,并時刻獲取其手臂運動規劃中的速度值,當移動終端發現速度值超出預先設置的閾值時,則發送取消任務指令。在一次執行任務時的各個關節的位置、速度如圖11中A、B所示,其中當速度值超出1.0 radian/s時,則修正該規劃路徑,并限制其在該最大速度繼續執行任務,如圖11中的C所示。

圖11 機器人手臂運動的位置、 速度以及超出閾值后的速度曲線圖

5 結 語

本文主要研究設計了Android移動終端與ROS機器人交互中的可靠性通信機制,一方面設計了網絡異常檢測模塊“CheckNodeConnection”可避免在通信故障時機器人失控等危險發生;另一方面開發的“RosActionOnAndroid”功能包可提供任務搶占、執行狀態信息反饋等功能,使得交互方式更加安全,控制更加精準。未來ROS服務機器人與Android移動終端互聯交互是一個必然趨勢,兩者之間交互通信的可靠性應當得到重視。

由于目前的ROS通信機制尚不能保證很好的消息傳遞實時性,未來工作考慮結合ROS2.0中采用的數據分發服務(DDS)技術,提高分布式系統的實時性[17]。并且繼續研究提高網絡異常檢測的實時性,完善應用層自定義心跳反饋協議,并逐步形成標準。對于“RosActionOnAndroid”通信機制內部的狀態機應進一步提高其可擴展性,更易于開發者使用。

[1] Xiao Y,Zhang Z,Beck A,et al.Human-robot interaction by understanding upper body gestures[J].Presence,2014,23(2):133-154.

[2] Jin H,Chen Q,Chen Z,et al.Multi-LeapMotion sensor based demonstration for robotic refine tabletop object manipulation task[J].Caai Transactions on Intelligence Technology,2016,1(1):104-113.

[3] 左軒塵,韓亮亮,莊杰,等.基于ROS的空間機器人人機交互系統設計[J].計算機工程與設計,2015(12):3370-3374.

[4] Aroca R V,Péricles A,Oliveira B S D,et al.Towards smarter robots with smartphones[C]//5th Workshop in Applied Robotics and Automation,2012:1-6.

[5] Barbosa J P D A,Lima F D P D C,Coutinho L D S,et al.ROS,Android and cloud robotics:How to make a powerful low cost robot[C]//International Conference on Advanced Robotics.IEEE,2015.

[6] Kehoe B,Patil S,Abbeel P,et al.A Survey of Research on Cloud Robotics and Automation[J].IEEE Transactions on Automation Science & Engineering,2015,12(2):398-409.

[7] Mayachita I,Widyarini R,Sono H R,et al.Implementation of Entertaining Robot on ROS Framework[J].Procedia Technology,2013,11(1):380-387.

[8] Hendrich N,Bistry H,Zhang J.Architecture and Software Design for a Service Robot in an Elderly-Care Scenario[J].Engineering,2015,1(1):27-35.

[9] Oros N,Krichmar J L.Smartphone based robotics:Powerful,flexible and inexpensive robots for hobbyists,educators,students and researchers[J].IEEE Robotics & Automation Magazine,2013,11(1):19-29.

[10] Dieber B,Kacianka S,Rass S,et al.Application-level Security for ROS-based Applications[C]//International Conference on Intelligent Robots and Systems,2016.

[11] Codd-Downey R,Jenkin M.RCON:Dynamic mobile interfaces for command and control of ROS-enabled robots[C]//International Conference on Informatics in Control,Automation and Robotics.IEEE,2015:66-73.

[12] Kohler D,Conley K.Rosjava:an implementation of ROS in pure Java with Android suport[EB/OL].[2013-05-15].http://code.gogle.com/p/rosjava.

[13] Zoppi A.A lightweight open-source communication framework for native integration of resource constrained robotics devices with ROS[D].Italy:Politecnico di Milano.

[14] Quigley M,Conley K,Gerkey B P,et al.ROS:an open-source Robot Operating System[C]//ICRA Workshop on Open Source Software.2009.

[15] 賈娟娟,施智平,關永,等.ROS中XML-RPC協議實現的形式化驗證[J].小型微型計算機系統,2015,36(12):2629-2633.

[16] Yepes J C,Yepes J J,Martínez J R,et al.Implementation of an Android based teleoperation application for controlling a KUKA-KR6 robot by using sensor fusion[C]//Health Care Exchanges.IEEE,2013:1-5.

[17] 樊澤棟,丁博,史殿習,等.機器人中間件消息實時性保證機制的研究與實現[J].軟件,2015,36(10):21-25.

主站蜘蛛池模板: 一区二区无码在线视频| 无码aⅴ精品一区二区三区| 日韩欧美国产三级| 成年人国产网站| 国产91精品调教在线播放| 中文纯内无码H| 欧美日韩中文国产| 国产午夜精品一区二区三区软件| 国产手机在线ΑⅤ片无码观看| 亚洲天堂在线视频| 亚洲永久精品ww47国产| 在线另类稀缺国产呦| 女人18毛片久久| 永久免费av网站可以直接看的| 日本亚洲国产一区二区三区| 无码精品国产dvd在线观看9久 | 色综合狠狠操| 精品国产香蕉在线播出| 日韩精品毛片人妻AV不卡| 中文一区二区视频| 无码内射中文字幕岛国片| 亚洲色图欧美在线| 成人福利在线看| 国产区精品高清在线观看| 免费 国产 无码久久久| 亚瑟天堂久久一区二区影院| 亚洲不卡av中文在线| 一级毛片免费观看不卡视频| 国产精品手机在线播放| 欧美黄网在线| 手机在线免费不卡一区二| 伊人久热这里只有精品视频99| 国产麻豆精品久久一二三| 国产成人精品2021欧美日韩| 欧美一区精品| 亚洲国产天堂久久综合| 国产无码在线调教| 国产成人无码综合亚洲日韩不卡| a级毛片毛片免费观看久潮| 日韩免费毛片视频| 精品黑人一区二区三区| 久久国产精品夜色| 国产69精品久久久久孕妇大杂乱| 欧美日韩精品一区二区在线线 | 中文字幕色在线| 成人免费午间影院在线观看| 欧美高清三区| 国产无码制服丝袜| 欧美专区在线观看| 91久久偷偷做嫩草影院精品| 欧美午夜一区| 亚洲欧美综合另类图片小说区| 免费jjzz在在线播放国产| 久久无码高潮喷水| 亚洲欧美综合在线观看| 久久香蕉国产线看精品| 五月婷婷丁香综合| 欧美一区二区三区欧美日韩亚洲 | 国产电话自拍伊人| 亚欧美国产综合| 成人无码区免费视频网站蜜臀| 国产SUV精品一区二区6| 色婷婷在线影院| 亚洲αv毛片| 国产一区二区三区夜色| 亚洲精品无码高潮喷水A| 91久久国产成人免费观看| 美女视频黄又黄又免费高清| 欧美精品成人| 欧美在线观看不卡| 日韩乱码免费一区二区三区| 嫩草影院在线观看精品视频| 欧洲高清无码在线| 国产成人久视频免费| 免费一级毛片完整版在线看| 欧美h在线观看| 一本综合久久| 久久久波多野结衣av一区二区| 亚洲人网站| 国产精品永久免费嫩草研究院| 久久动漫精品| 久久精品免费看一|