久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

機(jī)器人平臺(tái)Android開發(fā):架構(gòu)分層與性能優(yōu)化的關(guān)鍵路徑

機(jī)器人平臺(tái)Android開發(fā):架構(gòu)分層與性能優(yōu)化的關(guān)鍵路徑 早些年做機(jī)器人平臺(tái)Android開發(fā)那會(huì)兒我踩過(guò)最深的坑就是把機(jī)器人的主控程序當(dāng)成一個(gè)普通手機(jī)App來(lái)寫。同樣是Android開發(fā)同樣是Kotlin和Android Studio可一旦你的代碼需要驅(qū)動(dòng)電機(jī)、讀取IMU數(shù)據(jù)、協(xié)調(diào)激光雷達(dá)和雙目攝像頭普通App那套“生命周期優(yōu)先、UI流暢第一”的架構(gòu)和優(yōu)化思路就會(huì)全線崩塌。這篇文章我從架構(gòu)分層、性能優(yōu)化和實(shí)戰(zhàn)復(fù)盤三個(gè)角度把機(jī)器人平臺(tái)Android開發(fā)真正麻煩的地方掰開揉碎講清楚給正在做機(jī)器人主控、或者準(zhǔn)備入坑的開發(fā)者一些可以直接參考的經(jīng)驗(yàn)。1. 機(jī)器人場(chǎng)景對(duì)Android開發(fā)的特殊約束1.1 機(jī)器人主控和手機(jī)應(yīng)用的根本差異先說(shuō)說(shuō)為什么不能把機(jī)器人主控做成“大號(hào)手機(jī)App”。手機(jī)應(yīng)用的運(yùn)行模型是事件驅(qū)動(dòng)的用戶點(diǎn)擊、滑動(dòng)、系統(tǒng)回調(diào)絕大部分代碼都在響應(yīng)人的操作。而機(jī)器人不一樣它開機(jī)之后就必須連續(xù)運(yùn)行要主動(dòng)去輪詢傳感器、周期性地發(fā)送控制指令、處理異常狀態(tài)它的核心不是“響應(yīng)用戶”而是“持續(xù)完成控制閉環(huán)”。這個(gè)差異會(huì)直接影響你寫代碼的姿勢(shì)。手機(jī)App里Activity進(jìn)入onPause是正常的用戶可以切到后臺(tái)去刷別的應(yīng)用但在機(jī)器人主控里看不到界面并不代表任務(wù)可以停。我見過(guò)不少項(xiàng)目把控制邏輯寫在Activity的成員方法里一旦用戶不小心按了Home鍵整個(gè)控制循環(huán)就跟著停了機(jī)器人當(dāng)場(chǎng)失去響應(yīng)這是很危險(xiǎn)的。所以從第一版開始就要明確一條鐵律控制邏輯必須和UI生命周期徹底解耦。機(jī)器人的業(yè)務(wù)內(nèi)核應(yīng)該是一個(gè)長(zhǎng)壽命的Service或者獨(dú)立的Native進(jìn)程UI只是它的一個(gè)視圖。這個(gè)思路和“前后端分離”有點(diǎn)像UI掛了可以重啟內(nèi)核必須保持運(yùn)行。我后面在架構(gòu)設(shè)計(jì)部分會(huì)再具體說(shuō)這套怎么落地。1.2 硬件生態(tài)你面對(duì)的不只是屏幕和觸控手機(jī)開發(fā)者通常面對(duì)的硬件是觸摸屏、攝像頭、陀螺儀、Wi-Fi和藍(lán)牙。機(jī)器人平臺(tái)就復(fù)雜多了。以我做過(guò)的室內(nèi)巡檢機(jī)器人項(xiàng)目為例主控板是一塊工業(yè)級(jí)Android板卡外設(shè)包括四輪差速底盤的伺服電機(jī)編碼器和驅(qū)動(dòng)器通常是串口或者CAN總線連接還有IMU輸出角速度和加速度頻率在100Hz到400Hz單線激光雷達(dá)10Hz到30Hz以及一個(gè)前置雙目相機(jī)和一個(gè)頂置全景相機(jī)。除此之外還有舵機(jī)控制板、急停繼電器、電量監(jiān)測(cè)模塊這些雜七雜八的外設(shè)。這些外設(shè)的接入方式五花八門。串口可能是TTL電平也可能是RS-232需要轉(zhuǎn)接板CAN總線需要主控板支持CAN控制器相機(jī)有些是UVC協(xié)議有些是MIPI接口。你在Android里不能像手機(jī)一樣直接用Camera API去讀某個(gè)定制傳感器更多時(shí)候要直接用Native代碼打開設(shè)備節(jié)點(diǎn)、讀寫數(shù)據(jù)。這種硬件復(fù)雜度帶來(lái)的啟示是開發(fā)機(jī)器人的Android程序一半時(shí)間在寫Java/Kotlin業(yè)務(wù)另一半時(shí)間在寫C/C的Native代碼跟各種設(shè)備節(jié)點(diǎn)打交道。如果你的團(tuán)隊(duì)里沒(méi)有人能搞定JNI層和Linux設(shè)備驅(qū)動(dòng)建議趁早評(píng)估是不是適合走Android這條主控路線否則后面會(huì)非常痛苦。1.3 實(shí)時(shí)性和確定性普通App可以不關(guān)心機(jī)器人不行普通App對(duì)實(shí)時(shí)性幾乎沒(méi)有硬性要求掉一幀、慢幾十毫秒用戶最多覺(jué)得卡但機(jī)器人控制對(duì)實(shí)時(shí)性和確定性的要求近乎苛刻。拿底盤電機(jī)控制來(lái)說(shuō)控制周期一般要求5ms到20msPID控制器要在這個(gè)周期內(nèi)完成誤差計(jì)算和輸出更新。如果系統(tǒng)GC導(dǎo)致控制環(huán)路200ms沒(méi)有更新電機(jī)會(huì)繼續(xù)輸出舊指令小車可能在急停指令發(fā)出后多跑出幾十厘米這個(gè)距離在室內(nèi)巡檢場(chǎng)景里就可能撞上貨架。這里要區(qū)分一個(gè)概念機(jī)器人關(guān)心的是“延遲抖動(dòng)”不是平均性能。手機(jī)App追求的是平均幀率機(jī)器人要的是每個(gè)控制周期都要按時(shí)到達(dá)。所以在系統(tǒng)選型和架構(gòu)設(shè)計(jì)上必須提前考慮中斷響應(yīng)、線程調(diào)度優(yōu)先級(jí)、CPU綁核、內(nèi)存鎖定這些手機(jī)開發(fā)很少碰的東西。后面第三節(jié)我會(huì)展開具體的優(yōu)化手段。維度手機(jī)應(yīng)用機(jī)器人主控核心模式事件驅(qū)動(dòng)響應(yīng)人的操作周期循環(huán)維持控制閉環(huán)生命周期跟隨Activity狀態(tài)獨(dú)立于UI必須持續(xù)運(yùn)行性能目標(biāo)平均幀率高、操作流暢低延遲、低抖動(dòng)、確定性外設(shè)范圍屏幕/相機(jī)/IMU/網(wǎng)絡(luò)電機(jī)/編碼器/多類傳感器/繼電器崩潰容忍度可重啟影響有限必須安全兜底自動(dòng)恢復(fù)這張表基本概括了我認(rèn)知里的差異后面聊優(yōu)化和實(shí)戰(zhàn)很多思路都源于這張表。2. 分層架構(gòu)從內(nèi)核到應(yīng)用層的鏈路設(shè)計(jì)2.1 先定邊界驅(qū)動(dòng)、服務(wù)、邏輯、UI各自歸誰(shuí)機(jī)器人Android主控的架構(gòu)我建議一開始就按分層模型來(lái)搭底層是Linux內(nèi)核和HAL硬件抽象層中間是Native層再往上是JNI適配層最上面是Java/Kotlin的應(yīng)用層和服務(wù)層。為什么要搞這么多層原因很簡(jiǎn)單單一層搞不定。完全用Java讀設(shè)備節(jié)點(diǎn)不是不行但Java層的字節(jié)流讀寫、線程調(diào)度、GC行為都很難做實(shí)時(shí)性保證尤其當(dāng)數(shù)據(jù)量大時(shí)一次系統(tǒng)調(diào)用再跨一次JNI延遲和抖動(dòng)會(huì)疊加。反過(guò)來(lái)如果所有邏輯都用C/C寫業(yè)務(wù)迭代效率太低UI也做不出來(lái)。所以合理的分配是高頻和實(shí)時(shí)敏感的部分下沉到Native層狀態(tài)機(jī)、業(yè)務(wù)邏輯和UI放在Java/Kotlin層JNI只做薄薄的適配不承載業(yè)務(wù)。我實(shí)際采用的分配方案是IMU和激光雷達(dá)等高頻傳感數(shù)據(jù)由Native層常駐線程采集數(shù)據(jù)放到環(huán)形緩沖區(qū)或共享內(nèi)存里PID電機(jī)控制環(huán)路由Native層專用控制線程按固定周期執(zhí)行業(yè)務(wù)狀態(tài)機(jī)放在Java層Service里維護(hù)根據(jù)Native上報(bào)的事件切換狀態(tài)UI層只渲染狀態(tài)和交互配置不直接訪問(wèn)原生接口。核心思路就一句話數(shù)據(jù)下沉采集、事件上拋狀態(tài)。底層持續(xù)采集數(shù)據(jù)只把有意義的狀態(tài)變化拋給上層上層不要求實(shí)時(shí)數(shù)據(jù)只要狀態(tài)同步。這樣兩個(gè)層次之間的耦合最低上層的GC對(duì)底層沒(méi)有直接影響。2.2 下位機(jī)通信的選型串口、CAN還是網(wǎng)絡(luò)機(jī)器人幾乎都有上下位機(jī)的概念A(yù)ndroid主控是上位機(jī)底盤或者機(jī)械臂是下位機(jī)。兩者怎么通信會(huì)直接影響架構(gòu)的復(fù)雜度。我做過(guò)對(duì)比串口是最簡(jiǎn)單也最通用的方案工業(yè)串口在Linux里大多暴露為tty設(shè)備節(jié)點(diǎn)Android里可以用Native代碼直接打開波特率通常在115200到921600之間滿足大多數(shù)傳感和控制需求缺點(diǎn)是帶寬有限大數(shù)據(jù)量的激光雷達(dá)點(diǎn)云不走串口。CAN總線更適合電機(jī)數(shù)量多的場(chǎng)合抗干擾性強(qiáng)實(shí)時(shí)性也有保證但Android主控板上不一定帶CAN控制器通常得外接USB-CAN轉(zhuǎn)換器驅(qū)動(dòng)又是一層麻煩。網(wǎng)絡(luò)Ethernet/Wi-Fi則用于傳輸數(shù)據(jù)量大的感知結(jié)果比如激光雷達(dá)點(diǎn)云、視頻流、深度圖像或者和ROS節(jié)點(diǎn)通信。我的建議是不要指望一種協(xié)議覆蓋全部需求更常見的做法是按實(shí)時(shí)性需求分流底盤控制走CAN或串口雷達(dá)點(diǎn)云和視頻走網(wǎng)絡(luò)電池和溫濕度這類低頻數(shù)據(jù)可以順著串口一并帶上來(lái)。這樣各條鏈路的負(fù)載清晰出了問(wèn)題也容易定位。前期選型時(shí)可以問(wèn)問(wèn)板卡廠商哪些串口、GPIO是可用的、有沒(méi)有現(xiàn)成的CAN接口支持這些信息往往比Android SDK版本更影響項(xiàng)目進(jìn)度。2.3 與ROS生態(tài)的協(xié)作方式很多機(jī)器人團(tuán)隊(duì)會(huì)引入ROS。Android端跟ROS協(xié)作有兩條主流路線一是在Android上直接跑ROS節(jié)點(diǎn)通過(guò)rosjava或者roslib訂閱話題二是Android作為獨(dú)立的上位機(jī)通過(guò)橋接方式和ROS通信。直接跑節(jié)點(diǎn)聽起來(lái)很美但Android的進(jìn)程模型和ROS節(jié)點(diǎn)模型不是一回事依賴打包、話題QoS控制、節(jié)點(diǎn)生命周期管理都比較別扭在ARM工控板上跑完整roscore還占資源。我后來(lái)更推薦第二種方式帶Linux的主控板上跑ROS節(jié)點(diǎn)Android端通過(guò)本地socket或共享內(nèi)存拿到話題數(shù)據(jù)。簡(jiǎn)單說(shuō)就是把Android當(dāng)成“圖形化儀表盤業(yè)務(wù)大腦”把ROS當(dāng)成后端計(jì)算引擎。兩者之間用一個(gè)輕量的本地協(xié)議橋接比如把ROS話題數(shù)據(jù)序列化成protobuf通過(guò)Unix domain socket投遞給Android進(jìn)程。這樣既保留了ROS生態(tài)的算法能力又讓Android的UI和App層保持純粹。這么做還有一個(gè)附帶好處調(diào)試的時(shí)候可以把橋接層臨時(shí)換成TCP直接用電腦連主機(jī)Logcat和桌面端工具同時(shí)看問(wèn)題定位快很多。2.4 狀態(tài)機(jī)驅(qū)動(dòng)把機(jī)器人行為建模成狀態(tài)流轉(zhuǎn)機(jī)器人業(yè)務(wù)邏輯和普通App一個(gè)很大的不同是它有明確的“安全狀態(tài)”。比如巡檢機(jī)器人至少有這幾個(gè)狀態(tài)待機(jī)、巡檢、避障、手動(dòng)接管、充電、急停。如果把每個(gè)狀態(tài)寫成if-else狀態(tài)多了之后代碼會(huì)變成一團(tuán)亂麻。我強(qiáng)烈建議把狀態(tài)機(jī)做成架構(gòu)的一部分。我一般把狀態(tài)機(jī)放在Java層Service里由Native層的控制線程喂事件比如“左前輪編碼器異?!薄凹す饫走_(dá)斷連”“急停按鈕按下”Java層收到這些事件后決定遷移到哪個(gè)狀態(tài)。狀態(tài)遷移會(huì)附帶動(dòng)作比如進(jìn)入急停狀態(tài)要通知Native層立即剎車進(jìn)入充電狀態(tài)要斷開電機(jī)使能。這里有一個(gè)容易被忽略的細(xì)節(jié)狀態(tài)機(jī)的遷移條件要考慮異常兜底不能只做正常流程。激光雷達(dá)斷連不應(yīng)該直接進(jìn)巡檢而是先進(jìn)入安全停機(jī)狀態(tài)。很多現(xiàn)場(chǎng)事故就是在狀態(tài)機(jī)里沒(méi)寫異常遷移路徑導(dǎo)致的建議在測(cè)試階段專門模擬各種傳感器斷連、通信超時(shí)的情況。3. 性能優(yōu)化把延遲和抖動(dòng)壓下去的實(shí)操方法3.1 線程與調(diào)度控制線程要“特殊待遇”機(jī)器人主控的線程模型必須提前設(shè)計(jì)不能隨手用Thread。一般我會(huì)把線程分成三類UI線程只做界面刷新和用戶操作業(yè)務(wù)線程放狀態(tài)機(jī)、任務(wù)調(diào)度、網(wǎng)絡(luò)等中等優(yōu)先級(jí)工作實(shí)時(shí)控制線程是Native層的周期性控制任務(wù)必須單獨(dú)拎出來(lái)。實(shí)時(shí)控制線程要爭(zhēng)取“特殊待遇”。Android應(yīng)用層可以用的方法是Process.setThreadPriority(Process.THREAD_PRIORITY_URGENT_AUDIO)把線程優(yōu)先級(jí)提到較高檔位。更徹底的做法是在Native層用pthread_setschedparam把線程調(diào)度策略設(shè)為SCHED_FIFO或SCHED_RR讓Linux內(nèi)核按實(shí)時(shí)策略調(diào)度。不過(guò)這樣做通常需要root權(quán)限而機(jī)器人工控板一般都能拿到權(quán)限。還有一個(gè)實(shí)操細(xì)節(jié)是綁定CPU核心調(diào)用sched_setaffinity把實(shí)時(shí)控制線程固定到某個(gè)空閑核心上避免和其他線程搶核也避免CPU調(diào)頻策略導(dǎo)致頻率波動(dòng)。工業(yè)板一般有四個(gè)或八個(gè)核心挑一個(gè)專門的核做控制和傳感讀取效果非常明顯。如果內(nèi)核對(duì)實(shí)時(shí)搶占特性有要求條件允許的話可以評(píng)估Preempt-RT補(bǔ)丁把系統(tǒng)本身的調(diào)度延遲降一個(gè)量級(jí)這對(duì)底盤控制的穩(wěn)定性有決定性幫助。3.2 傳感器數(shù)據(jù)通路減少拷貝和跨進(jìn)程跳變傳感器數(shù)據(jù)從硬件到業(yè)務(wù)代碼的路徑往往是性能瓶頸所在。最常見的坑是“串口讀數(shù)據(jù) - JNI往上拷貝 - Java層字節(jié)數(shù)組 - Binder跨進(jìn)程 - 業(yè)務(wù)線程處理”每經(jīng)過(guò)一層就多一次拷貝、多一次線程切換延遲和抖動(dòng)都會(huì)疊加。我后來(lái)把數(shù)據(jù)通路改成了這樣Native層常駐線程直接打開設(shè)備節(jié)點(diǎn)讀取原始數(shù)據(jù)解析后寫入預(yù)分配的環(huán)形緩沖區(qū)上層應(yīng)用通過(guò)共享內(nèi)存Ashmem或API 27的SharedMemory直接訪問(wèn)這些數(shù)據(jù)不需要每次調(diào)用都跨進(jìn)程拷貝Native層只在上層需要時(shí)發(fā)出通知比如“新的一幀IMU就緒”。這里要提醒的是無(wú)鎖或者低鎖的環(huán)形緩沖區(qū)非常關(guān)鍵。如果用普通鎖保護(hù)緩沖區(qū)控制線程和讀取線程一競(jìng)爭(zhēng)還是會(huì)引入抖動(dòng)。工業(yè)上常用的方案是單生產(chǎn)者單消費(fèi)者的SPSC環(huán)形隊(duì)列配合內(nèi)存屏障生產(chǎn)者和消費(fèi)者各管各的指針不需要互斥鎖。Android NDK里沒(méi)有現(xiàn)成實(shí)現(xiàn)我就直接用C11的std::atomic自己封裝了一個(gè)成本不高但效果很明顯。3.3 內(nèi)存與GC卡頓的元兇其實(shí)是你自己Android的Java層GC會(huì)短暫暫停所有Java線程這一點(diǎn)在機(jī)器人控制里很致命。有人可能覺(jué)得“我用的是旗艦工控板GC時(shí)間不長(zhǎng)”但GC造成的抖動(dòng)不是平均耗時(shí)問(wèn)題而是偶發(fā)的幾十毫秒、甚至幾百毫秒停頓這在控制回路里完全不能接受。所以在機(jī)器人項(xiàng)目里內(nèi)存管理的原則比普通App更嚴(yán)格控制鏈路上的代碼盡可能不在Java層分配對(duì)象高頻路徑上禁止使用自動(dòng)裝箱、字符串拼接、日志刷屏。我的習(xí)慣是高頻路徑全部走NativeJava層只接收低頻狀態(tài)事件這樣Java層的GC再發(fā)生也不影響控制線程。如果業(yè)務(wù)邏輯不得不在Java層處理高頻數(shù)據(jù)比如點(diǎn)云做特征提取建議用對(duì)象池管理臨時(shí)對(duì)象并主動(dòng)在低負(fù)載時(shí)段調(diào)用System.gc()把GC的“隨機(jī)事故”變成“可控計(jì)劃”。我實(shí)測(cè)過(guò)這種做法控制環(huán)路的P99延遲從250ms降到了20ms以內(nèi)效果非常顯著。也可以用Debug.getPss()定期采樣Java層實(shí)際堆內(nèi)存壓力存到本地日志復(fù)盤卡頓問(wèn)題時(shí)能派上大用場(chǎng)。3.4 系統(tǒng)級(jí)穩(wěn)定看門狗、自啟、斷連恢復(fù)機(jī)器人現(xiàn)場(chǎng)運(yùn)行的穩(wěn)定性光靠架構(gòu)優(yōu)化遠(yuǎn)遠(yuǎn)不夠還必須有系統(tǒng)級(jí)的兜底。第一是看門狗機(jī)制。我項(xiàng)目里的做法是Native控制線程每個(gè)周期更新一個(gè)時(shí)間戳同時(shí)Java層起一個(gè)守護(hù)線程定期檢查如果超過(guò)1秒沒(méi)有更新就判定控制線程卡死立刻通過(guò)GPIO觸發(fā)硬件急停并上報(bào)異常后自動(dòng)重啟控制進(jìn)程。這個(gè)機(jī)制幫我們擋下過(guò)好幾次現(xiàn)場(chǎng)事故。第二是開機(jī)自啟和前臺(tái)服務(wù)。機(jī)器人工控板通常要上電即用所以Manifest里要聲明BOOT_COMPLETED接收器配合前臺(tái)服務(wù)和START_STICKY確保系統(tǒng)意外殺掉進(jìn)程后能重新拉起。有些板卡還有斷電重啟和RTC喚醒需求最好從產(chǎn)品需求階段就確認(rèn)。第三是斷連恢復(fù)。傳感器通信超時(shí)、USB設(shè)備脫落、串口假死都是現(xiàn)場(chǎng)常見的。我一般會(huì)在Native維護(hù)一張外設(shè)健康表周期探活任何一個(gè)外設(shè)連續(xù)N秒無(wú)響應(yīng)就上報(bào)一次“設(shè)備掉線”事件同時(shí)進(jìn)入安全狀態(tài)而不是繼續(xù)傻跑。這個(gè)思路對(duì)后面的調(diào)試和事故復(fù)盤特別有幫助因?yàn)槟憧词录罩揪湍苤罃噙B什么時(shí)候發(fā)生、前后做了什么操作。4. 實(shí)戰(zhàn)復(fù)盤某室內(nèi)巡檢機(jī)器人主控的調(diào)試經(jīng)歷4.1 項(xiàng)目背景和最初架構(gòu)這個(gè)項(xiàng)目是一個(gè)室內(nèi)倉(cāng)庫(kù)巡檢機(jī)器人需求是沿著預(yù)設(shè)路線巡檢貨架檢測(cè)溫度異常、識(shí)別貨架缺貨、避讓人和叉車。主控是一塊工業(yè)級(jí)Android板卡外設(shè)包括兩個(gè)USB相機(jī)、一個(gè)單線激光雷達(dá)、一個(gè)IMU、四輪差速底盤。第一版架構(gòu)當(dāng)時(shí)趕進(jìn)度走得比較“樸素”控制邏輯整個(gè)放在一個(gè)常駐Activity里Java層直接通過(guò)JNI讀串口和網(wǎng)絡(luò)數(shù)據(jù)UI線程和控制線程混在一起。剛開始跑樣機(jī)的時(shí)候問(wèn)題一堆但最棘手的是三個(gè)控制環(huán)路在GC抖動(dòng)下失控、串口IMU數(shù)據(jù)丟幀、系統(tǒng)休眠后機(jī)器人“睡死”。這三個(gè)問(wèn)題很有代表性下面分開講。4.2 問(wèn)題一控制環(huán)路GC抖動(dòng)靠實(shí)時(shí)調(diào)度策略解決現(xiàn)象是機(jī)器人跑直線時(shí)軌跡會(huì)周期性偏右然后被拉回來(lái)頻率大概每幾秒一次。一開始懷疑是電機(jī)本身的問(wèn)題后來(lái)把電機(jī)的速度曲線和GC日志對(duì)齊發(fā)現(xiàn)每次軌跡偏移都對(duì)應(yīng)一次GC發(fā)生并且PID指令更新時(shí)間在這段時(shí)間里超過(guò)180ms沒(méi)有更新。原因很清晰PID控制線程在Java層控制周期雖然是10ms但GC一旦觸發(fā)就卡住整個(gè)進(jìn)程底盤速度控制直接停擺電機(jī)按舊值運(yùn)行軌跡自然偏。解法分兩步。第一步把整個(gè)PID控制循環(huán)遷移到Native層控制線程設(shè)置成實(shí)時(shí)調(diào)度綁定到指定核心并調(diào)用mlockall鎖定內(nèi)存防止換頁(yè)。第二步Java層業(yè)務(wù)代碼只接收“控制指令完成”這類低頻事件高頻的傳感器融合和控制計(jì)算全部下沉。// 控制線程初始化片段設(shè)置實(shí)時(shí)調(diào)度和CPU綁核 struct sched_param param; param.sched_priority 80; pthread_setschedparam(pthread_self(), SCHED_FIFO, param); cpu_set_t cpuset; CPU_ZERO(cpuset); CPU_SET(2, cpuset); // 綁定到核心2避開系統(tǒng)常用核心 sched_setaffinity(0, sizeof(cpu_set_t), cpuset); mlockall(MCL_CURRENT | MCL_FUTURE);遷移之后控制環(huán)路的實(shí)際周期偏差從±200ms降到了±2ms以內(nèi)。這個(gè)項(xiàng)目之后我基本不再糾結(jié)“能不能在Java層做PID”這個(gè)問(wèn)題回答永遠(yuǎn)是不建議。4.3 問(wèn)題二串口IMU丟幀跨進(jìn)程拷貝引發(fā)的間歇性饑餓第二個(gè)問(wèn)題很隱蔽IMU的角速度數(shù)據(jù)明明是200Hz輸出但解析之后時(shí)間戳間隔忽大忽小有時(shí)候連續(xù)幾個(gè)包間隔2ms有時(shí)候突然30ms才來(lái)一個(gè)包。這種“時(shí)快時(shí)慢”的數(shù)據(jù)送到姿態(tài)融合算法里解算出的角度會(huì)輕微抖動(dòng)對(duì)導(dǎo)航影響很大。排查過(guò)程是這樣的先在Native串口讀取線程里打時(shí)間戳發(fā)現(xiàn)數(shù)據(jù)本身從內(nèi)核到應(yīng)用層的時(shí)間間隔是穩(wěn)定的然后在Native到Java的每次讀取都打點(diǎn)發(fā)現(xiàn)丟幀發(fā)生在JNI向上拋數(shù)據(jù)的時(shí)候再壓測(cè)發(fā)現(xiàn)應(yīng)用層的讀取線程和UI線程搶CPU每次JNI調(diào)用都涉及一次線程切換和內(nèi)存拷貝一旦讀取線程被調(diào)度走數(shù)據(jù)就在內(nèi)核緩沖區(qū)堆積等它回來(lái)再讀間隔自然拉長(zhǎng)。解法是把IMU數(shù)據(jù)改成共享內(nèi)存方式。Native寫入環(huán)形緩沖區(qū)Java層的融合線程通過(guò)共享內(nèi)存映射直接讀取讀取線程不再每次調(diào)用JNI而是等待一個(gè)輕量的Semaphore通知。這樣跨層的數(shù)據(jù)拷貝接近于零IMU數(shù)據(jù)間隔從抖動(dòng)±28ms收斂到了±1ms以內(nèi)。數(shù)據(jù)通路設(shè)計(jì)的價(jià)值在這個(gè)問(wèn)題里體現(xiàn)得淋漓盡致。4.4 問(wèn)題三系統(tǒng)休眠導(dǎo)致機(jī)器人“睡死”第三個(gè)問(wèn)題最詭異機(jī)器人運(yùn)行一段時(shí)間后屏幕自動(dòng)熄滅再過(guò)十幾分鐘控制線程就像“掉線”了一樣底盤停止響應(yīng)遠(yuǎn)程看板顯示心跳超時(shí)。重啟App也不行只能整機(jī)斷電。排查Android系統(tǒng)層的休眠行為發(fā)現(xiàn)根源有兩處。第一控制進(jìn)程沒(méi)有持有PARTIAL_WAKE_LOCK系統(tǒng)判定無(wú)活動(dòng)后屏幕熄滅、CPU進(jìn)入idle部分外設(shè)總線的時(shí)鐘被掛起串口讀取線程拿不到數(shù)據(jù)。第二工控板的CPU調(diào)頻策略在低負(fù)載時(shí)段把頻率壓到最低控制線程的實(shí)時(shí)調(diào)度優(yōu)先級(jí)也被某些系統(tǒng)服務(wù)臨時(shí)壓低導(dǎo)致控制周期嚴(yán)重超時(shí)。解法分兩層。系統(tǒng)層面在設(shè)備樹和內(nèi)核配置里禁用不必要的suspend狀態(tài)把CPU調(diào)頻策略改成performance模式保持核心高頻運(yùn)行應(yīng)用層面在長(zhǎng)壽命Service里持有PARTIAL_WAKE_LOCK并在電源管理策略里對(duì)控制線程所在CPU核心禁用熱插拔。改完之后再跑72小時(shí)連續(xù)壓力測(cè)試沒(méi)有再出現(xiàn)“睡死”。這次排查給我的教訓(xùn)是在機(jī)器人項(xiàng)目里Android的省電機(jī)制是敵人不是朋友該關(guān)的省電特性一定要關(guān)干凈。4.5 幾件工具和“早知道”清單復(fù)盤這個(gè)項(xiàng)目有幾個(gè)工具幫了大忙。Perfetto看系統(tǒng)整體調(diào)度和鎖競(jìng)爭(zhēng)最直觀Simpleperf抓Native層的CPU熱點(diǎn)dmesg看內(nèi)核日志定位串口和電源問(wèn)題systrace則適合定位UI線程和系統(tǒng)服務(wù)的交互。這些工具在普通App項(xiàng)目里可能只是輔助在機(jī)器人主控項(xiàng)目里就是必需品。如果讓我重做一次這些事我會(huì)從第一天就做控制鏈路全部Native化Java層不碰任何高頻控制所有傳感器數(shù)據(jù)統(tǒng)一走共享內(nèi)存絕對(duì)不用JNI高頻拷貝系統(tǒng)休眠和CPU調(diào)頻策略的修改提前找板卡廠商要方案不要等現(xiàn)場(chǎng)出問(wèn)題再調(diào)外設(shè)健康表和事件日志從第一版就建立不然現(xiàn)場(chǎng)排障只能靠猜每個(gè)傳感器和控制指令都帶單調(diào)遞增的序列號(hào)方便對(duì)齊時(shí)間軸。最后再分享一點(diǎn)個(gè)人體會(huì)。機(jī)器人平臺(tái)Android開發(fā)的復(fù)雜度并不在于某個(gè)單一技術(shù)點(diǎn)有多難而在于你得同時(shí)面對(duì)嵌入式系統(tǒng)、實(shí)時(shí)控制、移動(dòng)端開發(fā)和現(xiàn)場(chǎng)運(yùn)維的交叉問(wèn)題。每一次調(diào)試到最后往往發(fā)現(xiàn)不是單點(diǎn)問(wèn)題而是調(diào)度、內(nèi)存、通信、系統(tǒng)策略共同作用的結(jié)果。你不僅要會(huì)寫App還得理解Linux內(nèi)核的調(diào)度和驅(qū)動(dòng)模型理解控制原理的基本常識(shí)理解系統(tǒng)電源管理。但反過(guò)來(lái)一旦你把“Android只是一個(gè)人機(jī)交互殼子實(shí)時(shí)控制必須下沉”這個(gè)觀念真正立住后續(xù)的優(yōu)化和排障都會(huì)有章可循。建議想入行的開發(fā)者先從一個(gè)串口電機(jī)和一片IMU開始把數(shù)據(jù)通路和線程模型跑扎實(shí)再逐步往上疊加業(yè)務(wù)會(huì)比一上來(lái)就對(duì)著完整機(jī)器人系統(tǒng)猛沖順暢得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲九九九九| 91超级碰| 美女诱惑久久| 超碰视97中文| 亚洲AV免费在线观看| 日韩av影片在线观看| 久久久蜜桃臀无码视频| 综合色久欲| 狠狠图片青青草| 久久伊人大香蕉| 韩日性爱av| 屁股久久久久久| 中文子幕一二三| 怡红院怡春院| 99青草| 欧美日韩在线国产在线| 亚洲成a人在线观看久| 亚洲欧美国产中文视频| www.av家庭乱伦| 青青草这里只有精品| 美女主播色欲91抠b在线播放| 色婷婷丁香五月| www.91久久| 国产三级日产三级韩国三级| 日韩A优精品在线观看| 91视频精品| 超碰地址久久| 久久高潮妇女视频| 91丨九色丨国产丨人妻在线| 亚洲国产一级黄色视频| 激情五月天中文字幕色| 中文字幕在线观| 夜夜爽夜夜| 精品天堂| 18禁免费视频| 免费在线黄片视频| 国产亚洲中文不卡二区| 干日本人少妇午夜寂寞影院| 成人性爱电影网| 国产一区二区精品久久99| 免费久久一级毛片大黄| 欧美激情性久久久久久| 欧美日韩另类在线| 美女极品一区二区三区| 最近2019中文字幕国语免费版| 久久91视频| 国产在线视频二区| 男人高清无码一区二区| 99综合网| 久操99| 亚洲精品97在线| 日韩精品人妻系列无码天堂| 色大师网站www永久网站视频| 蜜臀精品1区2区| 色爱综合网欧美| 91美女在线视频| 龙兴卡官方查询| 丰满欧美放荡少妇在线| 91啪啪| 欧亚性爱在线视频| 99久久精品国产高潮| 色99视频| 欧美91在线+|+欧美| oumeizonghese,www| 校园春色美腿丝袜 | 日韩黄色一区二区三区| 九九精品热| 欧美精品91| 日本亚欧爱爱| 久久久久久99AV无码免费网站| 91久久免费视频互動交流| 影音先锋新男人| xxx0国产在线播放| 九色97| 国产熟女精品区| 亚洲开心网| 久久无码成人| 干b在线性社区| 职场同事知名国产国产精品久久欧美日韩 | 六月婷激情福利天堂69| 久久 久久国内精品亚洲| 青女偷拍网| 欧美性爱无码一区二区三区| 99综合网| 涩亚洲欧洲| 国产午夜精品理论片一二三区区| 黄色av一区二区在线| 青青操在线亚洲视频观看欧美在线| 超碰色美女| 日韩操p| 欧美日韩999| 欧美色图 人妻| 欧美熟妇精品黑人巨大91| 69XX一中文字幕人妻91| 97资源超碰| 中出20p| 国产JDAV无码视频在线观看| 日本大片日本一区二区免费高清| 亚洲高清男人天堂| 强奸乱伦亚洲第一页| 尹人大香蕉视频在线| 色爽——AV| 国产中文字幕在线点播| 97国产亚洲中文在线| 亚洲高清91| 国产1769在线| 9997se| 天天做日日做| 亚码人妻| 男女激情黄色网址| 亚av顶级裸体一区二区三区四区五区| 亚洲AV成人精品网站在AV| 精品久热| 青青操国产夫妻| 国产又爽又黄| 久久久555| 久久激情五月| 国产精品诱惑| 6080yy午夜理论三级一区二区三区无码| 青青草综合在线| 日本日皮视频逼| 欧美激情黑人| 亚洲精品久久久久久久蜜桃臀| 国产风韵犹存熟妇三区| 久久久久国产一区二| 综合少妇网| 亚洲欧美大香蕉| 又粗又长又大国产不卡| 婷婷色香| 免费观看性欧美一级| 97高清啪啪| 激情抓乳插进去啪啪啪日韩| a人片中文字幕一区二区| 在线观看高清AV| 亚洲爱爱视频一区二区| 日韩丝袜二区| 人人妻人人澡人人爽久久av| 精品人妻一区二区三区-国产| 高清国产精品福利网站| 亚洲色香| 久热91| 欧美综合另类| 五月天综合网| 天天天天天天天天天天干美女| 黑丝制服中文字幕| 丰满人妻一区二区三区在线| 99国产精品视频尤物| 成人久久久精品| 色色色综合| 午夜性生活av免费在线看| 白 大 人妻 区 在线| 91人妻中文| 97网站在线观看 | 天美传媒AV在线| 欧美日日夜夜| 亚洲精品aa久久伊人| 国产97色在线| 走光一区92下载| 91超级碰碰| 国产乱伦亚洲色图高清无码| 蜜屁av| 精品十三区| 91狼人| 欧美精品69性爱| 福利五区| 国产精品久久久视频| 人妻酒店出差被中出免费在线播放| 91欧美综合在线| 99精品久久| 一级@啪啪视频| 色99久草| 久久↗↗| 精品美女少妇一区二区三区| 国产精品91一样| 色婷婷九月天天综合| 夜夜嗨视频| 大香蕉琪琪日本女优不卡| 婷婷丁香五月综合| 婷婷综合激情| 日本操BAV| 久久专区| 国产精品九九九| 精品乱码在线观看| 日日夜夜国产综合| 人妻在线臀日韩| 久久久中文| 一区二区三区免费岛国片| 搡老女人老91妇女老熟女| 国产人妻精品一区二区三区秋霞| 91黑丝美女| 999久久久久久久精| www.99色| 天天综合精品| 丁香激情网| 国产激情在线| 日韩一级免费性爱| 日本污ww视频网站| 国产成人bd在线观看| 成 人 A V免费视频在线观看| 久草这里只有精品| 亚洲毛片基地专区| 国产女人视频三四五区| 欧美影院一区二区三区| 亚洲伊人成综合成人网| jizz啪啪| 97超碰磁| 岛国免费黄色网址| 亚洲精品亚洲人成在线麻豆| 熟女人妻一区二区三区| 久久精品国产亚洲AV成人直播| 日婷婷| 欧美视频一| 2024黄色视频| 强奸乱伦免费网站| 亚洲日韩精品一区视频在线| 国产成人无码网站在线视频| 久99久视频| 亚洲黄色影视| 亚洲精品蜜桃久久久一区二区三区| 国产少妇与亚洲av| 久久国产对白激情浪潮 | 亚洲欧美日韩有码| 久久动漫精品视频这里只有精品| 日韩 欧美 国产 麻豆| 加勒比五月天| 99999久久精| 久热一区二区| 国产麻豆福利av在线播放| 亚洲砖码砖专无区2023| 五月丁香综合| 91伊人大香蕉| 青青草一本道福利视频| 98人妻精品一区二区色欲| 淫荡少妇免费| 91美女在线精品视频| 亚洲精品一二三四区| 天天舔天天日天天射| 亚洲骚男同com| 快灬快灬 一下爽蜜桃在线观看| 日韩一级二级三级免费看完整版 | 红杏大香蕉| 精品久久久九九九孕妇| 91麻豆一二三区| 中文字幕人妻丝袜乱一区三区| 亚洲精品97| 一区操逼日比视频| 爆乳免费黄网站| 亚洲日韩欧美一区二区| 国产农村妇女精品| 91丨熟女丨丰满熟女| 久无码| 久久久久斤小| 八戒午夜福利理论片| 一级特级aaaa毛片免费观看| 97激情97激情| 欧亚日韩一区在线| av片在线观看免费播放| 丰满搜索结果 -第18页- 久久高清无码 | 制服诱惑亚洲一区二区三区在线观看| 国产suv一区二区三区6| 日韩精品1区2区中文字幕| 亚洲成人碰碰| 日本久久超碰| 久草福利在线资源站| 热天堂一区二区| 91视频女生| 岛国毛片在线观看免费| 亚洲 图片 综合91| 精品国产乱码久久久久久久| 午夜福利免费福利视频| 97久久精品亚洲中六字幕| 99在线精品视频| 艹比视频国产精品| 色97综合中文字幕| 丰满少妇乱子伦精品无| 欧美猛交黑寡妇中文字幕| 91操操操操| 9l视频自拍9l九色成人| 99热大香蕉伊在线| 免费黄色A片| 夜夜 中文视频rt| 综合伊人网12色| 嗯啊不要啊在线 | 又大又大又大又粗爽高潮观看| 日本视频一区二区三区| 亚洲国产丝袜在线观看| 99久久精品无码一区二区毛片免费| 国产精品一二三区福利| 久久精品无码专区| 久超碰在| 射综合网| 亚洲综合888| 丁香婷婷五月| 嗯~啊~快点 死我视频| 外站AV在线| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 96久久久久久久| 爽 好舒服 无码刺激久久| 亚洲综合夜色| 亚洲天堂 视频你懂的| 9ⅰ久久久天天| 日本三级R| 久久久免费高清中文视频| 熟妇操花| 91日韩国产欧美亚洲另类精盘州至城都| 婷婷色色网| 日日骚中文字幕| 久热色情精品| 大香蕉一区二区在线观看.| 大香蕉在线免| 人人摸人人叼| 四虎影视精品| 99re不伦| 亚洲高清无码在线桃色| 91M一社| 亚洲第一页色| 亚洲中文字幕久久人妻| 精品人妻一区二区三区四区| 神马久久久久眼| 26uuu欧美日韩| 大但人体久久久久| 中日无幕一二三四区| 被窝影院午夜看片无码| 97操97干| 熟妇最新先锋一二三区| 欧美亚洲色图另类国产| 99re9| 96久久久精品| 猛交交| 国产精品女生av| 国产日韩中文字幕欧美| 少妇蜜汁| 亚洲精品美女久久久久久久久| 性91| 成人精品一区二区三区| 97超碰美国| 黄片免费看的| 日韩字幕一区| 超碰97 线线 在现| 午夜精品久久999热蜜桃介男人用| 狠狠色婷婷7777久| 影音先锋视频在线| 免费无码婬片AAAA片直播色戒| 亚洲无限观看| 免费看美国人人爽,人人操 | 亚洲风情综合网| 高潮内射在线| 五月丁香啪啪啪| 曰韩操B| 91 欧美| 九九人妻| 美女AV一区二区| 一区二区三区 丝袜 高跟 美腿| 九月丁香综合网| 四虎国产精品永久在线囯在线| 国产精品另类一区大香蕉| 色哟哟-国产专区| 婷婷激情四射| 一区在线观看中文字幕| 美国aaaaa一级黄片| 91香蕉国产尤物视频| 中文字幕av片| 竹菊一区二区三区AV线| 亚洲少妇激情一区二区三区| 都市激情人妻一区二区青青操视频 | 欧美曰韩国产精品| 亚洲男人天堂网久久| 99色视频| 老色69| 婷婷五月天激情网| 婷婷九月色| 2020国产精品| av一区二区三区 中文| 欧美性爱日韩性爱| 久久一区二区高清免费| 欧美强奸乱能| 国模少妇一区二区三区| 久久久久九九九| 少妇xx精品| 国模不卡| 日韩AC| 丁香婷婷九月| 色婷婷六月| 99热在线播放| 超AV色女| 在线观看A啊啊啊| 天堂国产AV| 国产成人主播| 久湿久久| 97超碰公开| 成人国产二区三区在线,男女精品。| 91男人综合| 日天天九九天堂666| 综合网少妇| 9丨久久九九九| 久久久久99999| 亚洲情色综合| 日韩丰满熟妇| 欧美三级不卡| 91国产丝袜美女| 五十路熟女在线不卡观看一区二区| 日韩干B| 99999国产精品| www熟女乱伦com| 九月激情婷婷| 一块操欧美| 国产久久一区二区午夜| 99re这里| 啊啊啊啊啊啊在线观看| 成人免费看吃奶视频网站| 免费一级特黄特色大片在线观看看| 操逼视频亚洲| 熟女日韩| 91四海无码日韩欧美| 97久久网| 把腿张开老子CAO烂你| 欧美一级黄片免费播放| 国产伦精品免编号公布| 欧美天天综合站| 99热这里只有精品18| 操人人| 婷婷色影院| 大香蕉综合| 大香蕉伊然在亚洲91| 美女黄站| 日韩欧美亚洲一区二区三区影院| 久7色| 成人片视频| 亚洲日韩美女丝袜美腿人妻视频| 波多野结衣一级视频| 婷婷五月天av| 极品久久久久久久久久久久久久| 日日不卡av| 国产亚洲精品美女久久久久久2021| 无码少妇精品一区二区60岁老人| 亚洲精品天天影视综合网 | 久久久亚洲精品电影免费看| 久久中文字幕女同性恋一区| 国产一级内射无挡观看| 亚洲色图91欧美日韩| 欧美成人国产精品| 亚洲国产一区二区日韩专区| 欧美亚涩| 欧美亚洲手机在线| 亚洲精品aa久久伊人| 第四色色综合91| 综合亚洲欧美| 我爱大香蕉| 久久人妻无码毛片A片麻豆| 色悠久| 五月丁香啪啪网| 丝袜色综合| 大香蕉黄色一级片免费看| 另类图片五月| 欧美色图91| 国产欧美一区激情交| 精品美女人人干| av强奸乱轮| 亚洲三级网址久久最新| 国产一区二区二区按摩精品啪视频| JULIA一区二区三区在线播放| 99re6国产精品99re| 国产精品区在线12p| 91jk色拍| 色欲无码人妻日韩欧美精品| 国产传媒美日韩av| 手机午夜电影神马久久| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91人人臊| 久久熟女嫩草成人片免费| 黄色AAAAA欧美| 欧美91在线+|+欧美| 尤物视频一区| 天天日美女的B| 激情干在线| 一区超碰一区| 99色色| 欧美不在线| 射丝袜高跟鞋99| a片 xxxx受爽视频| 91亚洲不卡一区| a片自拍直播视频| 久久精品72| 三级特黄60分钟播放| 久久动漫精品视频这里只有精品| 国人欧美精品一区二区| 啊啊啊水好多| 亚洲丝袜天堂| 强奸乱伦动态污图免费 | 国产一区二区三区精品观看啪| 91色人| 欧美国产日韩清纯唯美| 激情五月综合开心五月| 夜夜做夜夜爽精品视频| av天堂影视中文在字幕在线中文| 国产无码久久高清| 中文字幕AV片| 丁香五月综合| 国产91会所女技师在线观看| WWW美腿丝袜香蕉中文| 大香网伊人久久综合| 校园春色综合网| 亚州综合图片| 女同亚洲欧美一二三区久久电影| 中文字幕,人妻,日韩| 久久亚洲日韩国产欧| 伊人久久88国产女| 亚洲国产一区二区入口| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 最新av在线| 日本女人操逼| 国产三级资源在线观看| 亚洲男人的天堂va亚洲男人社| 亚洲综合影视| 开心五月天激情网| 黄色一区二区秘书性感| 亚洲天堂精品日韩电影| 久久精品成人一区二区三区蜜臀 | 日韩一级欧美一级国产一级台湾| 老司机午夜精品福利视频一区二区| 五月天婷婷小说| 一级日本牲交大片好爽在线看| 四虎免费在线播放| 天美传媒av在线| 精品一区96| 91精品黄在线观看| 精品偷拍13p欧美dodk视频| 久久久久九九九九| 国产搭汕a级片| 久久一本大香蕉 | 大香蕉欧美| 91模特在线观看| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 麻豆天美国美国产| 久久婷婷五月天| 亚洲欧洲精品视频发布| 欧美日韩大黄片| 另类图片天天影视| 国产美女自拍视频| 美女上床网站| 国产精品午夜福利视频| 久久日本熟女精品一区| 一及黄久一点| 亚洲精品 超碰| 爱射综合| 91肏屄网| 97精品国产97久久久久久免费| 欧美一级黄片免费播放| 丝袜熟女一区二区三区| 亚洲国产精品无码AV在线| 1人人看人人摸人人操| 国产精品不卡av免费在线观看| 国产又粗又长视频| 丝袜AV一区二区三区| 91四海无码日韩欧美| 久久国产精品视频| 日本不卡中文| 久久9精品| 亚洲综合网91| 天天看天天日天天操| 欧美91在线| 一级毛片电影免费看| 天天综合97| 日韩免费a级毛片无码a∨| 亚洲另类天堂| 一区AV| 中文字幕一区二区三区四区在线视频| 狠狠色伊人亚洲综合网站色| 操逼片国产| 日韩av不卡在线观看| 国产成人无码久久精品| 日本免费中文一区二区三区四区 | 欧美日韩在线小说 | 欧美激情性爱视频网站| 欧美顶级黄色大片免费| 国产福利第一视频| 天天综合~91入口| 99自拍B亚洲 | 国内毛片婷婷六月色| 免费啪啪一级视频| 五月丁香啪| www.操| 国产精品久久久久久久免牛肉蒲团 | 91精品国久久久久久无码| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 91男人综合| 日韩一级二级三级| 欧美福利视频啊啊啊啊| 国产麻豆福利av在线播放| 婷婷伊人网| 大香蕉在线视频15| 亚洲中亚日激情视频| 久久久偷拍| 国内精品久久人妻性色av| 强歼乱伦资源网| 六六久久日韩不卡| 欧美激情久久久久| 久操视频在线观看| 黄色性爱网网| 啊嗯好大视频在线观看| 欧美线天码中字| 久久伊人最新网址视频| 蜜臀操逼黄色视频操的好爽| 精品久久久久9999| 在线 欧美 亚洲| 97在线观看免费视频| 亚州操逼图| 97二区四区| 青青草原av| 日韩操逼HD| 欧美不卡在线美女| 久久久月天| 国产精品视频麻豆入口| 东北黄色电影| 色色97爱| 果冻国产精品麻豆成人av| 青青草吊丝| 九九九九精品视频| 激情五月天丁香社区| 曰本熟女视频| 欧美裸体美女日麻屄| 高清在线偷拍自拍视频| 丝袜美女诱惑 91 视频| 无码人妻一区二区三区色欲aⅴ| 激情四射五月天| 日本天天干天天日一区| 日本成人A片免费看| 欧美日韩国产传媒在线精品| 一区二区三区一亚洲中文字幕、综合区灬| 又大又长又粗又爽又黄| 国产美女精品| 综合激情二| 亚洲 欧美 中文 日韩超碰 | 女人双腿搬开让男人桶| 亚洲性猛交| 五月婷婷丁香六月丁香| 欧美成人亚洲精品| 免费精品国偷自产在线在线 | 97中文热色| 久久激情五月| 欧美亚洲特P| 国产精品亚洲美女久久久久| 丝袜色综合| 亚洲中文日韩欧美大香蕉视频| 九九久久国产精品| 伊人五月天婷婷| 久操 高清| 精品九九国产无码| 久久99草| 思思热免费视频观看| 天天综合网合集91| 日本理论在线| 天天综合网~91| 狠狠干婷婷| 97爱亚洲| 综合久欧洲| 国产精品久久久久久久AV大片| 伊人久久大香线综合无码| 人妻啪| 久久精品国产久精国产| 8050午夜少妇无码| 91bbbbbb| 久久综合乱子伦国产免费| 国产日韩精品suv| 极品久久久久久久久久久久久久| 亚洲AV性爱电影| 精品人妻高清麻豆av| 人妻熟女一区在| 免费精品无码一级毛片牛牛影视| 久久av色| 天天色播亚洲综合网站| 91人妻人人澡人人爽人人精品| 在现视频女上位好爽| 99久久久无码精品国产人| 久久精品中文字幕女同| 大香蕉久操| 亚洲一区二区在线观看91| 午夜精品久久久久| 717影院理论午夜伦八戒| 人妻少妇精品| 亚av顶级裸体一区二区三区四区五区| 色综合久| 成人精品在线免费视频| 97就爱干| 色综合一区二区三巨| 翔田千里AⅤHD无码| 欧美天天影院| 禁十八久久| 五月丁香色色网| 亚洲最新Av| 精品人妻一区二区三区蜜桃视频| 99热色这里只有精品| 26uuu性| 999精品乱码| 97精品国产精品免费观看| 大香蕉520| 日韩精品一区二区日韩| 91精品网站| 99re6国产精品99re| 台湾佬激情综合| 国产女性无套 免费观看| 日本影视久久免费| 超碰九九| 老熟女中文字幕高清| 91 手机在线播放 绯色| 久久久久亚洲Aⅴ无码| 国产综合日韩伦理| 清纯唯美激情| 人妻熟女一区二区| 久久久国产精品人妻丝袜| 超碰av人人人| 91干熟女| 强奸乱伦大香蕉网| 熟女这里只有精品6| 九热中文字幕| 久久久久久久久9| 日本久久999| 99精品网站| 蜜桃精品一区二区三区ww| 久久99综合| 欧美一级做a爰片免费视频| 国产一进一出视频网站| 国产家庭乱伦表演| 欧美激情激情xxxx欧美专区| 亚洲AV色图| 妇女乱色二区| 久久久草草精品| 嗯嗯嗯啊啊啊干死我吧| 神马午夜久久久| 亚洲中文字幕乱码无码一区二区| 99这里只有精品| 五月丁香大香蕉| 日韩在线观看中文字幕视频| 欧美v亚洲v日韩v最新在线二区 | 日韩av色图综合| 人妻精品4K4K4K4K4| 毛片视频白嫩| 日韩一区二区熟女| 精爱久久| 绑缚麻绳人妻寝取完整版| 欧美 青青草| 国产极品久久久| 最新精品久久蜜桃| 国产青青美女玩逼视频| 欧美熟妇亚洲版| 精品久久9| 日夜尻逼网| 骚鸭AV| 色九久| 亚州综合网| 久久久久久99AV无码免费网站| 久久伊人最新网址视频| 在线观看一级α片刺激高潮视频| 免费看片黄| 伊人久久大香线蕉无码| 粉嫩在线一区二区懂色| 色色色五月婷婷| 六六久久日韩不卡| 国产有码一区| 成人一区二区三区四区| 精人妻无码一区二区三区伊人直播| 五月天亚洲网| 青草成人免费视频一COm| 十八禁啪啪视频| 国产一区二区三区视频在线看| 青青操综合网| 六月丁香久久| 欧美亚洲国产自久久| 久草草一二三四区久久| 欧美日综合| 精品无码久久久久久久久果冻糖心| 综合影院永久入口国产| 欧亚乱色熟女一区二区| 日产狠狠干| 精品人妻一区二区乱码一区二区| 少好三P| 天天综合91| 亚洲AV操| 欧美少妇大量自拍视频在线观看| 热久日综合| 草草草视频| 女同女同恋久久级三级| 欧亚在线视频| 色诱avtt| 国产视频第二页| 亚洲精品国产熟女| 天天色综合图片| 97爱碰| 天天日天天干天天操| 亚洲国产成人精品无码专区| 99久久这里只有精品| 91青青在线视频| JIZZJIZZ亚洲女人被躁| 三级片网站在线播放| 亚洲人在线| 久久久性爱| 久久精品中文字幕无码l| 91在线欧色| 少妇人妻在线| 国产精品久久99日日| 神马久久久久眼| 床戏久久久av一区二区麻豆| 午夜超爽| 日韩一区二区熟女| 日韩啪啪视频| 国产高潮AA片免费看| 国产精品天干天干综合网麻豆| 亚洲美女精品九九视频| 殴美在线AⅤ| 蜜臀99999| 人人操人人色网| 色综合九九| 加勒比少妇AV婷婷六月天超碰超碰| 日韩兔费看黄片| www.夜夜操| 骚熟女AV网| 五月天黄色激情视频| 国产白领连续中出在线播放| 欧美少妇色图| 97五月天| 欧美+日产+中文| 91精品丝袜在线观看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日本高清电影欧美色图| 竹菊一区二区三区AV线| 日韩免费性爱视频在线观看| 久久久91福利姬| 岛国黄色短视频| 精品无码久久久久| 老熟妇一区二区三区…| 夜精品久无码| 国产精品一级毛片不卡视| 日韩78m视频| 草草影院最新网址| 另类视频在线| 日韩免费看黄片| 久久久久96| 曰韩av中文字幕专区| 999热日韩精品| www久久久| 91宗合网| 精品国产嫩穴视频| 9国产超碰| 91天美传媒在线观看| 波多野结衣一级视频| 国产精品视频在线播放 | 亚洲日韩欧美一区二区| 欧美日韩国内不卡| 操熟女91| 久九干| 最新岛国大片| 天天狂操夜夜狂日| 蜜臀AV一区二区三区激情综合| 亚洲日韩精品久久久久一区壹牛 | 婷婷国产精品一区二区| 色婷婷激情| 一级黄色性爱裸体视频| 黄呦呦在线| 亚洲黄网在哪免费看| 大逼色网站| 性色乱AV一区二区| 欧美一区二区三区另类精品| 日韩成人人妻网站| 人人爽天天爽| 中国zzijzzijzzwww精品| 蜜桃臀久久| 殴美牲| 色天使亚洲综合在线观看| 久久久三区二区一区| 超碰超碰欧美| 看黄片视频免费| 亚洲欧美另类小说| 国产av热热色| 欧美躁死她一区二区| 色哟哟综合| 风间由美日韩欧美久久| 国产传媒日本欧美专区| 操我无码| 欧美欧美啪啪视频| 国内成人圈中文字幕无码视频| 男人天堂久久精品| 91快色色色色色| 丰满熟女一区二区三区在线播放| 色偷偷色偷偷欧美日韩| 91丨九色丨大屁股| 国产女人和拘做爰视频 | 国产精品乱码久久久久| 九九国产热| 国产青一二三| 综合色色网| 成人av影院在线观看| 欧美宗合网| 学生妹天天看| 91+欧美| 人人爱操| 国产欧美日韩精品中文| 亚洲成人精品在线一区| 深喉吞精| 天天草AV| 1二区9| 射丝袜高跟鞋99| 黄网在线播放| 九月丁香综合网| 综合av社区| 少妇综合网| 日韩图色| 91天堂丝袜美腿| 啊啊啊啊好疼视频| 传媒免费一区二区三区| 99爱久久视频频| 夜夜操二区| 五月丁香狠狠爱| 能直接看AV的网站| 成人a大片在线观看| av一区二区三区不卡| 熟女人妻一区二区三区免费看| 久久风骚城市| 人人妻天天做天天爽| 9999亚洲精品| 日本黄色裸日本黄色裸体| 国产精品 亚洲情色| 色97| 97天天摸天天碰| 婷婷五月天成人| 可以看的av| 天天综合精品| 五月天伊人| 天天操夜夜操| 五月激情综合网| 极品色社| baisiav| 91精品成人www| 九九热精品免费视频| 日韩三四五区| 91女神在线视频| 中文字幕制服欧美久久一区| 精品国产污一区二区三区| 人妻久热在线| 色91综合网| 一本一首道人妻少妇免费久久| 磁力99AV| 青青草色插素人| 国产热av| 超碰导航97| 91丝袜美女视频| 日本东京热久久久电影| 日本性交操一区二区不卡系列| 一本色道久久天天射天天干| 日韩黄片视频试看| 国产精品自在线发布| 超碰人人超在线观看| 国内三级自拍小视频在线观看| 婷婷五月激情综合| oumeisetu综合| 亚洲成人精品久久久| www.91欧美| 熟女熟妇一区二区三区视频| 蜜臀久久99精品久久久久电影| 久久精品国产亚洲粉嫩| 欧美性第一页| 国产大陆天天艹| 日本三级R| 国产亚洲 中文欧美久久| 亚州再线| 一区超碰一区| 91色拍| 丰满岳乱妇一区二区三区| av天堂5| 日本久操视频| 欧洲精品久久| 中文字幕视频在线观看| AV乱伦专区| av天堂手机版追回| 江都AV在线| 午夜精品久久久久久久99| 啊啊啊啊操死我| 在线a v| www.婷婷五月天| 色色99| 亚洲中文字幕av | 国产精品一区人妻精品阁在线| 97色色国产视频| henhen91| 亚洲无吗在线视频| 久久久精品国产亚洲伊人| 精品九九九九九九九九九| 国语精品av| 久久黄色视频一区二区三区 | julia国产在线 | 亚洲国产中文字幕| 男女无套 免费网站| 操逼操网| 亚洲综合影视| 国产精品播放| 1769精品一区二区三区| 97爱爱影院| 人妻精品一区二区| 色综合久久88色综合久久天天| www.四虎在线| 欧美精品激情| 夜夜影视四色| 综合网欧| 亚洲欧美综合| 婷婷五月天综合网| 97天天在线| 一级性爱啪啪视频| 九九久久首页| 久久久久99999| 插欧洲美女欧美精品| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 久久精品国产AV一区二区三区| Julia在线播放亚洲久久| 土豪酒店各种姿势玩弄极品幼稚| 欧美v亚洲v综合v国产v妖精| 亚洲日韩一区电影| 极品少妇久久久久| 日韩AV无码中文一区二区| 国产精品欧美激在线| 色综合av综合久久| 亚洲 综合 欧美| 麻豆尤物视频网| 天天看,天天做| 看看日B真人视频| 色色香蕉| 超碰97久久国| 国产一区二区a毛片| 亚洲熟女乱熟乱熟妇综合网二区| 精品少妇999| 国产一区二区三区中文字幕| 夜夜嗨一区二区三区直播内容| 激情久久久| 亚洲影视第一页| 国产精品香蕉热久久新品| 欧美91久久久久| 97人人操人人摸人人爱| 四虎在线播放| 国产精品探花视频| 九七人妻在线| 综合久久欧美| 欧美亚洲中文字幕| 九九色逼| 猛猛干| 熟女丰满人妻一区| 亚洲中文字幕在现观看| 国产免费大片| 岛国激情视频在线观看| 欧美日本天堂| 国产不卡免费在线视频| 九草九九九| 色色色999| 午夜精品久久久久久久久久久久久 | 亚洲少妇色| V A在线| 97视频620| 顶级丝袜熟女一区二区三区| 超碰久草| 亚洲日本成人动漫| a亚洲欧美色欲| 热久日综合| 99热这里只有精品地址| 九七超碰人人乐| 精品久久99| 国产精品久久99日日| 精品人妻一区二区蜜桃视频| 精品人妻伦一二三区久久| 操国产高清| 九区国产| 九九人人操| 欧美日韩国产一区二区小黄片大全| 青青操在线亚洲视频观看欧美在线| 国产成年免费大片黄在线观看| 欧美瑟综合| 精品无码一区二区| 日韩一性一交一A片俄罗斯| 超碰色大香蕉| 97爱欧美| 亚洲成人久久美女| 亚洲婷婷丁香在线| 亚洲色图综合网| AV天天在线观看| 999亚洲国产视频| 国产日韩久久| 97频视在线| 亚洲91极品| 亚洲少妇综合在线播放| 91亚洲电影| 色在线69堂| 91在线欧色| 黄色欧美性爱视频| 欧美激情久操网| 亚洲 无码 有码 中文字幕| 99999无码| 黄色一级视| 久久久久久国产成人| 美女91网| 亚洲色91C| 九九天堂| AAA久久| 欧美日韩国产三级黄色| 中出欧美| 亚洲欧美变态| 日日夜夜草草草| 欧美午夜精品久久久久久3D| 亚洲古典另类欧美在线| 精品免费视频国产一区| 色原狠狠天天天| 亚洲九九爱| 日韩99神马视频片| 久久男人的天堂国产| 国产九九九九九九九九| 一区操逼| 亚洲欧美日韩偷拍色图| 91操熟女视频| 欧美熟女逼久久久久久| 日产中文字幕2020| 狠狠欧美| 久久综合五月天| 99热这里只有精品地址| a一区二区三区乱码在线| 超碰97人妻| 97亚洲在线| 99热这里都是精品| 久久久久幕乱码| 亚洲综合夜色| 免费成人在线熟妇网| 日日干夜夜操视频h| 亚洲天堂另类美腿| 91视频国品一二三区| 亚洲欧洲综合视频在线| 日本人人操人人操| 八人操人人摸人人看| 久综合国内精品自在自线| 绯色一区二区三区不卡少妇| 超碰91在线| 99热在线播放| 麻豆成人影音在线| 天天射日日干| 亚洲精品少妇| 97欧美精品| 大色综合| 国产91福利小视频在线观看| 欧美黄页| 很很操在线| 国产精品久久妻无码网站| 欧美福利视频啊啊啊啊| 狠狠久久手机视频精品| 欧美高清18A片| 澳门黄片一香蕉视频| 欧美亚洲国产91在线| 欧美一区二区三区互相| 日韩激情毛片一级久久久| WWW啪啪的com| 国产精品无码在线| 国模少妇一区二区三区| 妺妺跟我一起洗澡没忍住| 狠狠综合| 久久手机好看网站| 天堂精品小草| 强奸熟女一区二区三区| 97国产精品久久久久|