亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(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ì)兒我踩過最深的坑就是把機(jī)器人的主控程序當(dāng)成一個(gè)普通手機(jī)App來寫。同樣是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ī)器人場景對(duì)Android開發(fā)的特殊約束1.1 機(jī)器人主控和手機(jī)應(yīng)用的根本差異先說說為什么不能把機(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ì)直接影響你寫代碼的姿勢。手機(jī)App里Activity進(jìn)入onPause是正常的用戶可以切到后臺(tái)去刷別的應(yīng)用但在機(jī)器人主控里看不到界面并不代表任務(wù)可以停。我見過不少項(xiàng)目把控制邏輯寫在Activity的成員方法里一旦用戶不小心按了Home鍵整個(gè)控制循環(huán)就跟著停了機(jī)器人當(dāng)場失去響應(yīng)這是很危險(xiǎn)的。所以從第一版開始就要明確一條鐵律控制邏輯必須和UI生命周期徹底解耦。機(jī)器人的業(yè)務(wù)內(nèi)核應(yīng)該是一個(gè)長壽命的Service或者獨(dú)立的Native進(jìn)程UI只是它的一個(gè)視圖。這個(gè)思路和“前后端分離”有點(diǎn)像UI掛了可以重啟內(nèi)核必須保持運(yùn)行。我后面在架構(gòu)設(shè)計(jì)部分會(huì)再具體說這套怎么落地。1.2 硬件生態(tài)你面對(duì)的不只是屏幕和觸控手機(jī)開發(fā)者通常面對(duì)的硬件是觸摸屏、攝像頭、陀螺儀、Wi-Fi和藍(lán)牙。機(jī)器人平臺(tái)就復(fù)雜多了。以我做過的室內(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)測模塊這些雜七雜八的外設(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ù)雜度帶來的啟示是開發(fā)機(jī)器人的Android程序一半時(shí)間在寫Java/Kotlin業(yè)務(wù)另一半時(shí)間在寫C/C的Native代碼跟各種設(shè)備節(jié)點(diǎn)打交道。如果你的團(tuán)隊(duì)里沒有人能搞定JNI層和Linux設(shè)備驅(qū)動(dòng)建議趁早評(píng)估是不是適合走Android這條主控路線否則后面會(huì)非常痛苦。1.3 實(shí)時(shí)性和確定性普通App可以不關(guān)心機(jī)器人不行普通App對(duì)實(shí)時(shí)性幾乎沒有硬性要求掉一幀、慢幾十毫秒用戶最多覺得卡但機(jī)器人控制對(duì)實(shí)時(shí)性和確定性的要求近乎苛刻。拿底盤電機(jī)控制來說控制周期一般要求5ms到20msPID控制器要在這個(gè)周期內(nèi)完成誤差計(jì)算和輸出更新。如果系統(tǒng)GC導(dǎo)致控制環(huán)路200ms沒有更新電機(jī)會(huì)繼續(xù)輸出舊指令小車可能在急停指令發(fā)出后多跑出幾十厘米這個(gè)距離在室內(nèi)巡檢場景里就可能撞上貨架。這里要區(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各自歸誰機(jī)器人Android主控的架構(gòu)我建議一開始就按分層模型來搭底層是Linux內(nèi)核和HAL硬件抽象層中間是Native層再往上是JNI適配層最上面是Java/Kotlin的應(yīng)用層和服務(wù)層。為什么要搞這么多層原因很簡單單一層搞不定。完全用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ì)疊加。反過來如果所有邏輯都用C/C寫業(yè)務(wù)迭代效率太低UI也做不出來。所以合理的分配是高頻和實(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)和交互配置不直接訪問原生接口。核心思路就一句話數(shù)據(jù)下沉采集、事件上拋狀態(tài)。底層持續(xù)采集數(shù)據(jù)只把有意義的狀態(tài)變化拋給上層上層不要求實(shí)時(shí)數(shù)據(jù)只要狀態(tài)同步。這樣兩個(gè)層次之間的耦合最低上層的GC對(duì)底層沒有直接影響。2.2 下位機(jī)通信的選型串口、CAN還是網(wǎng)絡(luò)機(jī)器人幾乎都有上下位機(jī)的概念A(yù)ndroid主控是上位機(jī)底盤或者機(jī)械臂是下位機(jī)。兩者怎么通信會(huì)直接影響架構(gòu)的復(fù)雜度。我做過對(duì)比串口是最簡單也最通用的方案工業(yè)串口在Linux里大多暴露為tty設(shè)備節(jié)點(diǎn)Android里可以用Native代碼直接打開波特率通常在115200到921600之間滿足大多數(shù)傳感和控制需求缺點(diǎn)是帶寬有限大數(shù)據(jù)量的激光雷達(dá)點(diǎn)云不走串口。CAN總線更適合電機(jī)數(shù)量多的場合抗干擾性強(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ù)可以順著串口一并帶上來。這樣各條鏈路的負(fù)載清晰出了問題也容易定位。前期選型時(shí)可以問問板卡廠商哪些串口、GPIO是可用的、有沒有現(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)通過rosjava或者roslib訂閱話題二是Android作為獨(dú)立的上位機(jī)通過橋接方式和ROS通信。直接跑節(jié)點(diǎn)聽起來很美但Android的進(jìn)程模型和ROS節(jié)點(diǎn)模型不是一回事依賴打包、話題QoS控制、節(jié)點(diǎn)生命周期管理都比較別扭在ARM工控板上跑完整roscore還占資源。我后來更推薦第二種方式帶Linux的主控板上跑ROS節(jié)點(diǎn)Android端通過本地socket或共享內(nèi)存拿到話題數(shù)據(jù)。簡單說就是把Android當(dāng)成“圖形化儀表盤業(yè)務(wù)大腦”把ROS當(dāng)成后端計(jì)算引擎。兩者之間用一個(gè)輕量的本地協(xié)議橋接比如把ROS話題數(shù)據(jù)序列化成protobuf通過Unix domain socket投遞給Android進(jìn)程。這樣既保留了ROS生態(tài)的算法能力又讓Android的UI和App層保持純粹。這么做還有一個(gè)附帶好處調(diào)試的時(shí)候可以把橋接層臨時(shí)換成TCP直接用電腦連主機(jī)Logcat和桌面端工具同時(shí)看問題定位快很多。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)場事故就是在狀態(tài)機(jī)里沒寫異常遷移路徑導(dǎo)致的建議在測試階段專門模擬各種傳感器斷連、通信超時(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ú)拎出來。實(shí)時(shí)控制線程要爭取“特殊待遇”。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)度。不過這樣做通常需要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)過一層就多一次拷貝、多一次線程切換延遲和抖動(dòng)都會(huì)疊加。我后來把數(shù)據(jù)通路改成了這樣Native層常駐線程直接打開設(shè)備節(jié)點(diǎn)讀取原始數(shù)據(jù)解析后寫入預(yù)分配的環(huán)形緩沖區(qū)上層應(yīng)用通過共享內(nèi)存Ashmem或API 27的SharedMemory直接訪問這些數(shù)據(jù)不需要每次調(diào)用都跨進(jìn)程拷貝Native層只在上層需要時(shí)發(fā)出通知比如“新的一幀IMU就緒”。這里要提醒的是無鎖或者低鎖的環(huán)形緩沖區(qū)非常關(guān)鍵。如果用普通鎖保護(hù)緩沖區(qū)控制線程和讀取線程一競爭還是會(huì)引入抖動(dòng)。工業(yè)上常用的方案是單生產(chǎn)者單消費(fèi)者的SPSC環(huán)形隊(duì)列配合內(nèi)存屏障生產(chǎn)者和消費(fèi)者各管各的指針不需要互斥鎖。Android NDK里沒有現(xiàn)成實(shí)現(xiàn)我就直接用C11的std::atomic自己封裝了一個(gè)成本不高但效果很明顯。3.3 內(nèi)存與GC卡頓的元兇其實(shí)是你自己Android的Java層GC會(huì)短暫暫停所有Java線程這一點(diǎn)在機(jī)器人控制里很致命。有人可能覺得“我用的是旗艦工控板GC時(shí)間不長”但GC造成的抖動(dòng)不是平均耗時(shí)問題而是偶發(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í)測過這種做法控制環(huán)路的P99延遲從250ms降到了20ms以內(nèi)效果非常顯著。也可以用Debug.getPss()定期采樣Java層實(shí)際堆內(nèi)存壓力存到本地日志復(fù)盤卡頓問題時(shí)能派上大用場。3.4 系統(tǒng)級(jí)穩(wěn)定看門狗、自啟、斷連恢復(fù)機(jī)器人現(xiàn)場運(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ù)線程定期檢查如果超過1秒沒有更新就判定控制線程卡死立刻通過GPIO觸發(fā)硬件急停并上報(bào)異常后自動(dòng)重啟控制進(jìn)程。這個(gè)機(jī)制幫我們擋下過好幾次現(xiàn)場事故。第二是開機(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)場常見的。我一般會(huì)在Native維護(hù)一張外設(shè)健康表周期探活任何一個(gè)外設(shè)連續(xù)N秒無響應(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)倉庫巡檢機(jī)器人需求是沿著預(yù)設(shè)路線巡檢貨架檢測溫度異常、識(shí)別貨架缺貨、避讓人和叉車。主控是一塊工業(yè)級(jí)Android板卡外設(shè)包括兩個(gè)USB相機(jī)、一個(gè)單線激光雷達(dá)、一個(gè)IMU、四輪差速底盤。第一版架構(gòu)當(dāng)時(shí)趕進(jìn)度走得比較“樸素”控制邏輯整個(gè)放在一個(gè)常駐Activity里Java層直接通過JNI讀串口和網(wǎng)絡(luò)數(shù)據(jù)UI線程和控制線程混在一起。剛開始跑樣機(jī)的時(shí)候問題一堆但最棘手的是三個(gè)控制環(huán)路在GC抖動(dòng)下失控、串口IMU數(shù)據(jù)丟幀、系統(tǒng)休眠后機(jī)器人“睡死”。這三個(gè)問題很有代表性下面分開講。4.2 問題一控制環(huán)路GC抖動(dòng)靠實(shí)時(shí)調(diào)度策略解決現(xiàn)象是機(jī)器人跑直線時(shí)軌跡會(huì)周期性偏右然后被拉回來頻率大概每幾秒一次。一開始懷疑是電機(jī)本身的問題后來把電機(jī)的速度曲線和GC日志對(duì)齊發(fā)現(xiàn)每次軌跡偏移都對(duì)應(yīng)一次GC發(fā)生并且PID指令更新時(shí)間在這段時(shí)間里超過180ms沒有更新。原因很清晰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)存防止換頁。第二步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è)問題回答永遠(yuǎn)是不建議。4.3 問題二串口IMU丟幀跨進(jìn)程拷貝引發(fā)的間歇性饑餓第二個(gè)問題很隱蔽IMU的角速度數(shù)據(jù)明明是200Hz輸出但解析之后時(shí)間戳間隔忽大忽小有時(shí)候連續(xù)幾個(gè)包間隔2ms有時(shí)候突然30ms才來一個(gè)包。這種“時(shí)快時(shí)慢”的數(shù)據(jù)送到姿態(tài)融合算法里解算出的角度會(huì)輕微抖動(dòng)對(duì)導(dǎo)航影響很大。排查過程是這樣的先在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í)候再壓測發(fā)現(xiàn)應(yīng)用層的讀取線程和UI線程搶CPU每次JNI調(diào)用都涉及一次線程切換和內(nèi)存拷貝一旦讀取線程被調(diào)度走數(shù)據(jù)就在內(nèi)核緩沖區(qū)堆積等它回來再讀間隔自然拉長。解法是把IMU數(shù)據(jù)改成共享內(nèi)存方式。Native寫入環(huán)形緩沖區(qū)Java層的融合線程通過共享內(nèi)存映射直接讀取讀取線程不再每次調(diào)用JNI而是等待一個(gè)輕量的Semaphore通知。這樣跨層的數(shù)據(jù)拷貝接近于零IMU數(shù)據(jù)間隔從抖動(dòng)±28ms收斂到了±1ms以內(nèi)。數(shù)據(jù)通路設(shè)計(jì)的價(jià)值在這個(gè)問題里體現(xiàn)得淋漓盡致。4.4 問題三系統(tǒng)休眠導(dǎo)致機(jī)器人“睡死”第三個(gè)問題最詭異機(jī)器人運(yùn)行一段時(shí)間后屏幕自動(dòng)熄滅再過十幾分鐘控制線程就像“掉線”了一樣底盤停止響應(yīng)遠(yuǎn)程看板顯示心跳超時(shí)。重啟App也不行只能整機(jī)斷電。排查Android系統(tǒng)層的休眠行為發(fā)現(xiàn)根源有兩處。第一控制進(jìn)程沒有持有PARTIAL_WAKE_LOCK系統(tǒng)判定無活動(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)用層面在長壽命Service里持有PARTIAL_WAKE_LOCK并在電源管理策略里對(duì)控制線程所在CPU核心禁用熱插拔。改完之后再跑72小時(shí)連續(xù)壓力測試沒有再出現(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)度和鎖競爭最直觀Simpleperf抓Native層的CPU熱點(diǎn)dmesg看內(nèi)核日志定位串口和電源問題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)場出問題再調(diào)外設(shè)健康表和事件日志從第一版就建立不然現(xiàn)場排障只能靠猜每個(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)場運(yùn)維的交叉問題。每一次調(diào)試到最后往往發(fā)現(xiàn)不是單點(diǎn)問題而是調(diào)度、內(nèi)存、通信、系統(tǒng)策略共同作用的結(jié)果。你不僅要會(huì)寫App還得理解Linux內(nèi)核的調(diào)度和驅(qū)動(dòng)模型理解控制原理的基本常識(shí)理解系統(tǒng)電源管理。但反過來一旦你把“Android只是一個(gè)人機(jī)交互殼子實(shí)時(shí)控制必須下沉”這個(gè)觀念真正立住后續(xù)的優(yōu)化和排障都會(huì)有章可循。建議想入行的開發(fā)者先從一個(gè)串口電機(jī)和一片IMU開始把數(shù)據(jù)通路和線程模型跑扎實(shí)再逐步往上疊加業(yè)務(wù)會(huì)比一上來就對(duì)著完整機(jī)器人系統(tǒng)猛沖順暢得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产午夜精品一区二区三区牛牛| 欧美日韩国产三级黄色| 久久精品色欧美aⅴ一区二区| 天天做天天爱天天爽AV| 综合欧美亚洲| 玖玖婷婷五月天| 欧美最大综合网| 日本人妻最新在线中| 久久AV无码网址| 97久久精品亚洲中六字幕| 视频二区美腿制服人妻欧美| 99操视频| 夜夜躁狠狠躁日日躁av| 天综合中文| 丝袜高跟澳门91视频| 无码 黑人一区二区三区| 99精品网| 日本成a人v网站在线观看| 97电影院超碰| 伊人天天久久动态图| 天天干天天拍| 91五十路| yy少妇精品久久| 久久av一级av少妇av高潮| 亚洲国产一级中文综合久久天堂在线免费观看| 国产91影院| 春色校园综合网| 1769一区| 欧美国产成人在线| 亚洲少妇综合在线播放| 精品久久久久成人码免| 日韩婷婷| 久久精品中文字幕无码l| 欧美亚洲厕所精品偷拍91| 热久久国产| 欧美激情片一区二区| 性爱网站一区二区| 久操视频免费观看| 淮穴色AV| av天堂精品久久| 天天天天天超碰| 蜜桃视频成a人v在线| 在线一区| 欧美在线播放aaaa| 亚洲天天更新| 黄色不卡视频| 欧美性爱另类综合| 亚洲天堂男人天堂| 91亚洲丝袜| 四虎影院成年人片| 日韩日本欧美在线观看| 国产精品3| 韩国一级做A片免费的| 亚洲日韩97| 黄页大片在线观看| 93人人操人人| 久久69| 久久999久| 8050午夜少妇无码| 色色色色日本| 色香综合| 亚洲有薄码区久久在线一区| 欧美 青青草| 国产自产一区视频在线| 久久久四区| 日影院久久婷婷夜夜网| 五月久久HDAV| 亚洲国产高清福利视频| 国产精品com| 亚洲综合九| 色蜜AV| 天天躁日日躁XXXXYY| 亚洲色图亚洲| 日韩操啪| 嗯嗯啊啊好爽| 中文字幕免费在线观看| 91美乳| 欧美在线视频99| 成人AV超碰免费在线| 熟妇人妻丰满久久久久久久无码| 操死我了嗯嗯嗯| 久久久亚洲精品电影免费看| 中文字幕在线高清男人的天堂| 操婢日韩| 日韩成年人性爱视频| 超碰9 7女人| 欧美综合在线91| 裸体美女免费看网站青草| 色噜噜精品一区二区三| 激情久久av一区av二区av| 欧美性爱第一页久久| 老熟女阿 国产91| 久久综合久色欧美综合狠狠 | 99国产在线 精品 视频| 精品国模无码| 99无码| 伊人97| 九九九久| 日本操逼视频免费| 97久久国产| 日韩天天综合| 久久一区二区蜜桃| 熟人人妻少妇精品久久| 91精品91久久久久77777| 欧美伦乱| 青青草大香蕉视频| 嗯嗯啊啊啊好爽| 97精品一区二区视频在线观看| 九九九精品一区二区无码| 97高清啪啪| 欧美图片色综合| oumeisetu综合| 精品国产自在在线99| 日本三级人妻a人妻一在线| 五月天色色色| 日韩乱码Av| 欧美性天天影视| 精品久久99| 欧美最婬乱婬爆婬性视频| 中文字幕一区 二区三四五 区日 日骚| 成人av动漫在线观看| 国产一区二区啪啪视频| 午夜色婷婷| 又黄又爽在线观看视频| 国产性感骚丝袜在线| 厕所偷拍在线| 97爱b| 日本最新免费韩国1区2区视频播放| 五十路熟女工口| 亚洲和欧美裸体美女双飞视频| 60秒免费小视频| 97精品久久久久中文字幕| 天天综合网1| 亚洲欧美综合网站| 99人妻| 内射小黄片| 久久草在线综合视频| 丁香六月啪| 在线人妻熟女一区二区三区四区五区| 亚洲高清男人天堂| 亚洲色图亚洲| 牛黄色久午久| 久久嫩草国产成人一区| 亚洲AV不卡在线观看| www国产精品| 中文字幕日韩专区精品系列| 久久久 国产精品| 五月天综合| 绑缚麻绳人妻寝取完整版| 无码九九九九| 老司机福利青青草| 日本性爱少妇| 日本裸体久久色噜噜| 大香蕉琪琪日本女优不卡| 91在线观看,天天综合| 东京热天堂网| 亚洲欧美日韩综合在线尤物 | www.狠狠| 亚洲自拍青操视频| 免费观看网黄| 91丝袜美女国产| 日韩图区| 岛国1区2区3区在线观看| 无码 有码 国产18p| 人妻在线中出视频| 日韩十八禁| 中国少妇XXXX做受| 麻豆黄色五月天| 抽插一区二区视频| 婷婷久久久| 欧美亚洲AN| 天天综合91| 国产成人精品日本亚洲语言| 亚洲啪啪啪啪视香蕉| 亚洲色人| 久久色激情一区二区三区| 91青青在线视频| 国产91会所女技师在线观看| 精品国产72| 射久久| 久操视频资源站公开| 厕所偷拍在线| 三久久久四久久久久| 国产午夜无码片在线观看影视| 超碰97资源大奶| 精品久| 99久久久99久久91熟女| 91大香蕉伊人| 在线日韩视频| 一二三区精品视频| 天天插天天射| 在线综合网| 中文字幕黄色片| 亚洲色图 图片| 国产真乱mangent| 中文字日本乱码| 91亚洲欧美激情| 狠狠色综合网| 国产精品一区在线播放| 99在线观看| 97在线视频免费看| 99自拍B亚洲| 操一操摸一摸| 久插综合| 日韩精品国产一区二区| 大香蕉琪琪日本女优不卡| 亚洲成人性爱网站在线播放| 人妻人人澡人人爽人人| 无码av永久免费专区网站| 成人一区二区三区四区| 日本国产高清色www视频在线| 超碰中文字幕人妻草一区| 九九精品99| 小明看看网址| 一级特级aaaa毛片免费观看| 久久精品一区二区三区蜜桃臀| 91强热人妻| 国产免费小视频| 午夜人妻精品综合在线| 青娱乐国产剧情av一区| 91丝袜熟女| 国产一级作爱毛片| 国产精品一区二区密臀| 天天透伊人| 久草尤物| 人人操人人射人人干| 国产精品蜜乳AV| 97精品全部| 人妻啊啊人妻啊啊| 中国东北熟女老太婆内谢| 国产精品大屁股999| 伊人五月天| 另类天堂| 色在线69堂| 国产成人+综合亚洲+天堂| 亚洲91色| 日韩成人小视频| 色综合中文字幕不卡| 操迟操逼在巾线Fre看| 国产高清在线自在拍69| 欧美淫穴| 2020国产精品| 国产超碰AV在线精品| ...日韩成人一区二区三区字幕| 免费看欧美美女黄色大片| 亚洲激情视频| 欲色啪| 中文伊人大香蕉视频| 国产一区自拍欧美日韩| 91综合网在线| 人妻美腿丝袜日韩| 色哟哟-国产专区| www久| 国产精品人妻熟女aⅴ| 久久久青青草| 九七毛片九九毛片| 亚洲黄日韩无码专区| 国产免费永久精品无码| 日韩欧美成人午夜福利| 亚洲欧美不卡线| 四虎免费视频| 色盈盈影院| 亚洲天堂99| 久久久久久一日韩字幕无码| 香蕉视频精品亚洲一区二区三区在线播| 黑人中出21连凳花野真衣| 麻豆这里只有精品| 日本一区二区三区四区免费观看| 日韩啊V| 日日骚一区二区三区| 亚洲日韩欧美一区二区| 天美传媒在线一区| 中文字幕在线观看网页| 校园春色 男人天堂 | 2024年最新色情网站在线观看| 97超级色碰碰| 欧美熟妇亚洲版| 欧美无圣光在线| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 丁香激情五月天| 国产精品自在线发布| 影音先锋每日最新资源在线观看| 人人妻人人爽一区二区三区| 日本高清视频在线观看黄已三辽| 亚洲素人网| 99re95| 天天干2019| 在线黄页看毛片| 色999;丁香五月| 亚洲成熟国产精品美女| 日韩一性一交一A片俄罗斯| 激情抓乳插进去啪啪啪日韩| 成人a级高清视频在线观看| 日韩性爱长视频免费| 熟人人妻少妇精品久久| 天天综合青苹果| 国产馆| 91操熟女视频| 麻豆亚洲AV成人无码久久精品| 久久欧美激情| 美女91AV| se吧提供91精品国产91久久久久久| 黄色无码高清黄色无码网站| 午夜男女爽爽爽影院视频| 天天看夜夜看日日干| 国产亚洲99久久精品熟| 四虎午夜影院| 青娱乐国产精品| 一本一道vs波多野结衣| 国产精品久久久久av| 凹凸视频特色日本特黄| 五月天综合在线| 日本91白丝| 欧美日韩国产中文精品字幕自在自线, | 欧美人黑A片无码免视费| 欧差乱伦二三| 亚洲国产婷婷在线播放| www.人人cao| 九九热精品| 亚洲国产综合久久天堂| 和协影院中文字幕三区| 久久久免费视频18| 精品九九| 亚洲国产高清福利视频| 国语人妻精彩刺激| 亚洲限制级| 日韩高清一二三| 九九九九九精品| 放黄片放3级黄片没穿衣服| 91AV入口| 91人人臊| 国产性刺激| 韩国毛片一区二区三区| 欧美色就是色| 五月丁香六月婷综合成人综合| 蜜桃精品一区二区三区ww| 玖玖爱一区在线| 热久久无毒不卡| 天天插网| 99欧美| 欧亚不卡| 麻豆一区二区AV天美| 精品无码欧美三级| 亚洲精品中文字幕一区在线视频| 东北夫妻性偷拍| 破处bbq| 91粉嫩萝控精品福利网站_精品影音先锋国| 综合自拍| 无码日韩人妻av一| 国产强奸乱伦无码视频| 亚洲图片91| 欧美亚洲天天| 91热热色| 草B在线| 亚州色图欧美色图| 熟女熟妇一区二区三区视频| 亚洲情色综合网| 丰满丝袜少妇AV| 欧洲小说色图视频另类| 中文字幕AV片| 四虎在线免费视频| 久久↗↗| 伊人九九九| 国产路线专区| 白丝被操91| 色哟哟AⅤ| 亚洲精品人妻在线| 在线无码操| 99综合视频一体| 99热欧美| 91天美传媒精品| caopeng97人妻| 日韩不卡网操逼中文字幕日韩| 99精品网站| 91九色丰满高潮| 99精品无码| 97在线视频免费观看| 大香蕉宅男伊人| 天天综合亚在线| 久草成人影片| 99re9| 免费1级a做爰片观看| 国产免费操逼| 91 亚洲 欧洲| 日本高清一本二本免费不卡| 久久69| 国产精品久久久久久久毛片1| 国产福利一区二| 午夜久久无码1000合集| 欧美天天插| 欧洲精品欧洲精品| 久久专区| 99热精品在线观看| 亚洲色图 图片| 操逼操2| 91free福利| 色综合20p| 欧美组图日韩亚洲中文字幕| 天天躁日日躁XXXXYY| 亚洲视频一二区| 啊啊啊免费| av中文在线| 十八禁电影伊人网| 911av网站免费观看| 97亚洲综合电影| 无套后入双马尾| 国产福利精品最新在线| 加勒比综合a∨| 93人人操人人| 4虎在线视频| 家庭乱伦性爱av| 中文字幕神马久久| 男女激情黄色网址| 久久9精品网站| 日韩av不卡在线观看| 男人网站婷婷| 亚欧高清v| 超碰97极品9| 天天爽夜夜操| 97综合在线| 亚洲中文字幕乱码无码一区二区| 亚洲精品国产熟女| 超碰99在线观看| 人妻熟女字幕一区二区| 熟女人妻一区二区三区免费看| 婷婷色导航| 好涩综合| 亚洲资源网| 日韩黄色电影网站| a亚洲欧美色欲| 天美传媒Av在线| 噜噜噜无码AV一级一级久久影院| 男人的天堂VA| 亚洲区限制级| 久久婷婷五月天| 欧美gv在线观看| 97网址97| 国产精品 亚洲情色| 人人贴人人摸| 99re黄| 1204av韩国| 在线国产探花| 三级精品三级在线观看| 日本精品五区| 人妻啊啊人妻啊| 欧美十八禁视频| 東南亚性呦成人伦理资源在线视频| 亚洲精品男人的天堂| 岛国色情视频在线观看| 亚洲美女高潮喷水视频| 青青欧洲黑| 亚洲熟妇乱女区二区三区| www.黄色在线| 91丨豆花丨熟女| 久久久999| 78m成人视线| 亚洲影视高清第一页| 国产精品。| 国产欧美日韩女同性恋ww喷水精品| 黄片免费久久久久久久| 欧美日韩*字幕一区| 麻豆精品.欧美精品.日韩精品.| 风骚少妇视频中文字幕| 久久AV无码1区2区3区| 亚洲天堂性爱| 观看免费区二区三区二| 91国产丝袜足交精品视频| 2018天天干在线视频| 麻豆2区1区天美| 大香蕉淫人| 亚洲激情在线观看一区| 啊啊啊免费| 97在线观看免费视频| 国产农村妇女精品| 3PAV乱伦视频| 91成人高清在线观看| 伊人五月天婷婷| 日韩簧片免费看| 亚洲精品国产熟女久久久久久| 成人97人人超碰人人| 人人摸.人人色| 久久人人爽爽人人爽人人片αV| 国产无码精品久久久久久| 99人妻| 欧美黄色片在线播放| 亚洲国产成人福利在线观看| 丰满人妻av一区二区三区| 日本天天操| 久久久久久久久久久久久久久乱码| 嗯嗯啊啊操死我| 美女黑人91神马| 色吊丝 日日骚 清纯唯美| 加勒比海色香蕉婷婷| 女同女同恋久久级三级| 国产AV久久久蜜爱影集| 日韩精品人妻系列无码天堂| 色在线69堂| 高潮精品| 亚卅熟女乱色| 日韩精品大香蕉伊人在线| 校园春色 亚洲| 豆花视频操逼网址| 九九综合色| 欧美熟女丝袜| 欧美在线永久天堂| 一本道综合色图| 91欧美另类| 国产无码久久高清| 中文字幕高清20页视频 | 日本精品加勒比海一区| 欧美精品一区二区少妇免费A片| 99热最新网址| 亚欧操逼片在线观看 | 伦理日韩国产久久| 亚洲九九视频在线观看| 国产精品久久发布| 久久九七| 日本中文字幕不卡视频| 亚洲 日韩 欧美 国产综合体| 动漫av中文| 中文字幕,人妻,日韩| 玖玖综合.com| 久久超碰日韩精品| 95人妻爽爽人人做人人澡| 粉嫩av一区二区三区四季| 欧美的性爱网站免费| 东北女人av| 国产400孕妇孕交群| 你操综合| 成人精品无码| 美女AV一区二区| 校园春色 欧美| 亚洲综合春色| 中文色综合| 在线视频五十市| 国产美女口爆吞精视频| 亚洲欧美另类少妇精品| 国产av又色又爽又黄| 九九热精彩视频| 五月丁香激情综合| 好色综合| 国产精品一区二区后入| 激情99| 青娱乐国产剧情av一区| 亚洲成人精品久久久| 亚洲最大成人a毛毛片| 欧美亚洲韩国视频十五区 | 久久a久久| 久久国产性爱| 亚洲图片欧美色| 国产一区二区三区,在线观看观看 五月开心久久AV官网 | 亚91亚洲网| www欧美性爱| 99re超碰| 人妻无码一区二区三区久久99| 狠狠操狠狠爱| 日韩色欲久久一二三四区| 日骚逼视频| 亚洲免费97免费| 精品一区二区啪啪啪| 精品成人无码| 无码久久国产| 中文字幕,人妻,日韩| 成人八戒网站| 青青11操操操操操操操操| 在线观看 99热| 国产精品无码成人精品| 91热热色| 国内毛片四区| 亚洲国产精品久久久久婷婷老年| 丝袜喷水在线| 伊人大香蕉在线| 婷婷成人五月天| 超碰免费人人| 激情五月天丁香社区| 思思热久久成人| 欧美性爱无码一区二区三区| 熟女探花啪啪| 国产亚洲深夜激情| 韩国三级一线观看久| 青草成人免费视频一com| 91 综合网| 人人操人人摸人人骑| dy888午夜老子影视达达兔| 91成人亚洲色图| 亚洲,欧美,综合网| 中文有码9| 亚洲精品人体| 日本乱人伦片中文三区| 亚洲āv网址在线观看| 亚洲春色欧美激情自拍| 凹凸视频在线观看伊人| 日本成人电影资源网| 日本精品高清一二区一本到| 亚洲中文字幕网| 激情综合网激情五月天| 中文字幕乱碼在线| 黑人与人妻| 91激情国产| 亚洲av噜噜噜噜噜噜| 国产成人超碰在线| 一区二区三区欧美激情| 亚洲欧美一区二区三区在钱蜜桃| 欧美性,亚州色| 久久久久久少妇| 水多多映视AV| 亚洲九月丁香| 啊啊啊啊二区好大| 欧美日本不卡在线| 福利社区午夜一区二区| 蜜臀少妇一区二区| 丝袜美女诱惑 91 视频| 国产女人视频三四五区| 青青伊人这里只有精品| 最新加勒比丝袜在线| 97色色,97综合| 人人透人人操| 久久香蕉国产传媒一区剧情天美| 后入式五六区| 国产无码精品成人| 99操视频| 国产尤物在线三区| 成人aⅴ一区二区三区| 国产13区| 蜜臀久久99精品久久久电影| 一级久久性爱视频| 欧美亚州色的图| 成人麻豆av电影网站| 欧美大码在线视频| 夜夜欢天天干| 亚洲久热| 亚洲日韩电影| 精品超碰中文在线| 亚洲精品九九九| 五月丁香| 黑人综合网| 国产亚洲 中文欧美久久| 青娱乐黄色录像| 人妻天堂综合网| 国产一二三在线视频五十路| 91欧美| 亚洲91网| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 精品国产久热在线观看| 久久久禁| 色情乱伦AV| 亚欧操逼片在线观看 | 99热这里都是精品| 国产女性无套 免费观看| 伊人一区二区在线播放| 欧美综合天天| 久久男人天堂| av网站在线看| 色欲三区| 亚欧无码在线| 成人精品在线| 国产久久一区二区午夜| 日韩亚洲Av人人夜夜澡人人爽| 奇米四色网| 天天操人人操狠狠插| 日韩操逼HD| 超碰免费人妻人人| 婷婷激情五月天小说网| WWW.操逼.COM| 大香蕉草草| 色播五月婷婷| 欧美色棕合| 熟妇人妻一区二区| 亚洲大色鬼| 亚洲天堂男人网| 国产传媒午夜理伦精品| 亚洲欧美自拍偷拍| 国产亚洲一黄| 香一区二区三区| 青久久| 91黄射| 91色人妻| 三级三级三级日本99| 国产精品网站免费| 综合久久9| 四虎影视永久在线免费| 亚洲少妇喷视频看| www. 男人天堂成人在线| 91麻豆天美传媒在线| 在线观看AV片| 欧美在线伊人色| 夜夜欢天天干| 秋霞曰韩R级| 亚洲大胆人体av| jizz啪啪| 日本一区二区三区欧美日韩中文字幕| 精品二区三四区五电影 | 中文字幕55555| 婷婷综合伊人一区| 97久久超碰| 亚州五月| 免费毛片在线播放| 国产后入式在线观看| 双插性欧美一二三区| 久久中日麻豆| 大香蕉www.超碰| 久久久久ab| 成人精品一区二区91毛片不卡| 国产夜夜操| 天天做天天爱夜夜爽毛片试看| 大稥蕉免费视频这里只有精品| 色网亚洲人| 一二三四免费视频| 欧美精品宗合| 东京热av男人的天堂| 高清无码在线播放网站| 欧美第一页| 99久久精品国产高潮| 亚洲九九视频| 婷婷三区| 在线中文字幕极品av| 日韩干B| 久悠悠av| 裸体美女国产免费久久久网站| 国产欧美日韩在线观看麻豆传媒公司| 欲香欲色天天天综合和网| 国语精品av| 欧洲Au麻豆| 国产精品亚洲一区二区三区四区| 亚洲天堂少妇| 偷拍超碰| 久久丁香五月天| 国产精品毛片?v一区二区三区 | 欧洲乱码视频| 久久99亚洲精品久久99果| 91综合网站| 伊人午夜福利视频| 啊啊啊啊啊啊好湿好爽视频| 日韩乱伦视频| 一区二区三区亚洲| 香蕉综合网| 亚洲激情在线| 天堂精品| 久久视频,这里只有精品| 有码人妻系列| 欧美日日网| 亚洲欧美中文日韩视频中国语| 国产精品爽爽v| 国产高清视频无码在线| 亚洲Av诱惑| 天天爱天天操| 2017天天插| 久久久精精精| 久久精品导航| 日本久久超碰| 激情欧美97| 97 色综合| 天天影视亚洲| jazzjazz国产精品麻豆| 国产精品ww久久| 久久超碰97| 亚洲无992tv| 国产毛片毛片4p懂色| 国产女同在线观看视频| 欧美激情激情xxxx欧美专区| 久久专区| 午夜福利激情在线视频| 高清无码 国产精品| 国产操逼逼网| 口爆综合网| 麻豆天美传媒在线视频天堂| 青青操少妇| 日韩精品资源| 高潮精品| 麻豆啪啪啪视频| 黄页18禁| 夜夜免费视频| 老熟女91| 凸凹视频在线观看| 狠狠狠狠狠狠| 日日干夜夜骑| 久久精品人妻一区| 91成人久久| 欧美18禁91| 啊啊啊骚| 人妻 丝袜美腿 中文字幕| 色色婷| 国产丸一视频| 国产A v无码专区| 综合影院永久入口国产| 欧美性夜| 91人妻尻屄视频| 日日橹狠狠爱欧美超碰| 99999国产精品| 国产三级在线现体验区| 日韩三级视频一区二区三区| 婷婷15月天青娱乐| 超碰精品国产无码| 嗯啊啊啊轻点视频 | 欧美区亚洲区偷拍区 | 屁股久久久久久| 色999;丁香五月| 久久熟女嫩草成人片免费 | 亚洲无码精品AV久久久| 五月丁香在线| 亚洲美女高潮喷水视频| 欧美丰满熟妇XXXX性ppX人交| 欧美 日韩 另类 亚洲| 国产乱伦亚洲色图高清无码| 国产超碰国产97| 大茄子熟女AV导航| 人妻一二三区| 美女黑人91神马| 国产精品成人福利在线| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 国产对白刺激视频| 青女在线| 国产精品三级视频网站| 偷偷人人精品女女久久| 免费视频无码| A片大香蕉在线| 中文字幕天天操| 乳欲人妻办公室奶水| 美国三级日本三级久久99| 综合五月婷婷| 中文字幕久久婷婷丁香五月天| 艾草av| 欧美国产伊人久久久久| 丁香九月婷婷| 久久噜| 99热超碰| 操逼操网| 日本精品中文字幕视频| 九九九热精品| 女同性恋一区二区三区精品视频| 懂色av色欲av蜜臀av| 国产91丝袜 在线播放| 啊啊啊啊啊操我视频| 久久精品国产亚洲AV无码电影| 天堂综合网| 日韩中文字幕精品一二三事国产精品| 久久人妻视频网| 懂色天天爱天天日天天射天天澡| 91色香| 精品一区二区2| 九九九九九九视频| 久久久久无码| 99r九九| 啊啊啊草死我| 1区2区3区视频| 亚洲精品aa久久伊人| 日本大香蕉综合网| 欧美啪啪啪91| 四虎av在线| 亚州精品人妻一二三区| 在线亚洲丝袜视频网站| 欧美18禁91| 午夜欧美J进J出白浆流出久久久| 狠狠色综合网| 亚洲 欧美 中文 日韩超碰| 久久99视频| 久操大香蕉手机视频在线看 | 91伊人久| 国产真乱mangent| 韩日色费| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 老熟女熟妇| 欧美大香蕉97| 啊啊啊好大好湿| 久久久精| av天堂电影网| 日韩激情毛片一级久久久| 日韩av不卡在线看| 四虎影视永久在线免费| 日本理论在线| 成人在线视频二区| surenchaopeng| 物业黑人 AV一区| 91A欧美电影网站| 一区二区三区美女超清| 人妻 丝袜美腿 中文字幕| 天天做日日做天天欢。| 五月天大香蕉| 妇女视频网站| 一本色道久久综合亚洲二区三区| 久久高潮妇女视频| 园内精品自拍视频在线播放| 欧美极度丰满熟妇hd| 天美一二三在线观看Av| 九99久久| 色网在线视频观看免费| 五月丁香啪啪啪| 校园春色宗合网| 成人精品在线免费视频| 亚洲欧美日韩精品久久久一区二区 | 久偷拍| 97色碰| 超碰在线看| daxiangjiao你懂的| 伊人一级免费黄片| 伊人成人中文字幕久久网| 精品综合久久久久久97| 欧美一级AAAAAAA| 91N五十路| 青青草国产欧美非洲黑人| 97香蕉碰碰人妻国产欧美| 狠狠躁天天躁日日躁| 国内偷自视频区视频综合| 日本天天吊| 久久78| 91久久精品国产| 9118禁| 精品国产一区二区三区久久久蜜臀 | 麻豆久久精品亚洲精品88| 天天爱综合网| 情色五月天久久久| 99在线精品视频| 国产精品人人爽人人做可爱福利| 99人妻| 青草一区二区| 久久久精品,3| 国产AV线| 亚洲综合色在线| 91色色综合| 国产美女激情| 夜夜久久| 色诱avtt| 麻豆天美制片厂网站视频| 少妇无码太爽| 亚洲春色激情小说| 欧美色图天堂在线| 可以看的av| 麻豆国产免费影片| 婷婷丁香五月激情啪啪| 成人三级片无码| 亚洲最大AV网| 日本国产欧美高清在线| 亚洲最新中文字幕免费| 国产精品亚洲天堂网址| 国产乱色国产精品免费视| 国产狂喷潮在线精品| 亚洲国产成人精品久久久国产成人一区二区 | 日韩亚洲欧美中文字幕| 欧美加勒比| 久久二| www国产精品| 天天综合~91| TS人妖另类精品视频系列| 亚洲无992tv| 国产精品不卡高清在线观看| 美女裸体无遮挡永久免费观看网站| 亚洲色婷婷久久久综合日本| 少妇久久久久久久| 亚洲无码 国产无码| av爱爱爱| 色黄色美女大长腿午夜视频| 欧美人妻久久精品二区三区 | 久久熟女嫩草成人片免费| 激情文学亚洲| 男人天堂东京热| 国产黄色剧情影片麻豆免费播放| 久久久一区二区三区三州| 日本免费一级AAA大片器 | 竹菊一区二区三区AV线| 91美女在线| 夜夜草我| 国产尤物AV尤物在线观看不卡 | 一本色道综合久久欧美日韩精品| 91精品国产91久久青草| 人妻中文字幕精品无码| 国产精品久久久久久久久AV大片| 91狠狠色丁香婷婷综合久久| 欧美美女啪啪视频| 国产第二页| 中国熟妇| 国产美女销魂在线观看不卡| 人人操人人操草草| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 久久久久人妻| 少妇天堂网络| 91在线一起| 欧美欧美啪啪视频| 1024人妻熟女一区二区三区| 久99热| 99re只有精品| 欧美在线亚洲| 五月丁香六月综合缴清无码| 欧美黄片欧美黄片xxx| 欧美夜夜狠| 国产精品久久久久久久久久久久久久久久| 竹菊一区二区三区AV线| 国产偷人伦激情在线观看| 日本视频一区二区三区| 97超级久久强资源| 亚州国产成人精品女人久久| 男人亚洲天堂| 亚洲精品中文字幕一区在线视频| 中文字幕91综合| 蜜臀在线看片| 一级二级三级黑人无码| 亚洲超碰在线| 我中文字幕6区| 99热| 国产三级电影免费观看| 日本一片一区| 欧美写真视频一区| 狠狠色噜噜狠狠狠狠狠色综合久久| 男人兔费天堂| 91人妻久久久久久久久久久久久| 天美传媒精品一区二区| 牛黄色久午久| 国产乱青青草久久| 在线观看中文字幕| 五月婷婷激情综合| 人妻人妻天天碰| 在线人成亚洲视频免费观看| 99久re热视频精品98| 在线亚洲丝袜视频网站| 日本一区二区中文字幕久久| 啊视频在线| 嗯嗯啊啊的视频| 亚洲伊人a线观看视频| 九九热九九热| 日韩精品人妻一区二区| 欧美黄色大香蕉一区二区| 一区二区不卡| 国产美女自拍AV| 婷婷五月天久久精品视频一区二区三区| 欧美碰碰综合色| 欧美性爱另类综合| 欧美女同在线| 国语对白在线播放视频| 色综合超碰超| 国产精品呦一区二区三区| 97色视频在线| 一个人免费视频观看在线WWW| 国产怡红院| 欧美成人免费在线观看| 一色网男人的天堂| 91殴美| 天天综合网国产| 老女人综合网| 天天干一区二区| 97在线观看| xxx亚洲午夜天堂| 日韩免费在线观看不卡| 欧美在线伊人色| 自拍偷拍 日韩欧美| 久久综合精品一区二区三区| 中文字幕第9页萱萱影音先锋| 91在线视频免费中出| 牛牛AV人人夜夜澡人人爽| 一道本东京热加勒比一区二区三区| 操逼操逼操| 啊啊啊啊啊啊啊好爽不要| 秋霞网—男女啪啪亚洲免费体验区| 亚州再线| 新久久AV| 熟妇高潮精品一区二区三区下载| 亚洲精品啪视频| 青青草国产一区二区三区| 久操精品网| 超碰在线91| 高清不卡视频| 国产一级137片内射麻豆| 天美传媒av在线| 欧美亚洲中文字幕| 91精品人妻一区二区三区蜜桃| 四虎影视在线| 伊人精品久久网站| 97伦乱| 一区二区激情国产熟女| 一级性爱视频免费观看 | 91久久久亚洲| 裸体1区| 色九区| 欧美日韩在线视频网站| 人妻内射一区二区在线视频| 欧美黄片视频在线观看免费| 欧美极品| 日本一久是| caorenqi shipin| 国模私拍一区二区三区神乳| 国产熟女自拍| 偷拍网站久久男女男| 手机在线播放国产福利| 亚洲中文sv| 亚洲精品天天影视综合网| 深夜激情无码| 国产在线能看的你懂的| 午夜福利一区二区三区四区五区色婷婷| 九九在线视频| 岛国黄| 九九九网站| 午夜精品久久999热蜜桃介男人用| 亚洲激情AV| 亚洲图片日本AⅤ欧美在线| 老熟乱一区二区三区四区| 亚洲国成人情色好看电影| 人人色人人操在线| AV一区观看| 亚洲色电影在线| 97国产伦理| 超碰性爱97| 五月丁香六月婷| 91人妻素女| 日本人妻伦在线中文字幕| 亚洲av资源| 亚洲熟女乱色一区二区三区久久久 | 一二三卡欧美日韩人妻免费精品| 蜜色网色哟哟| 中文激情网| 东京热男人的天堂精品| 午夜小电影在线插入淫高潮| 日本久久久精品电影| 性色国产东北露脸精品视频| 国产女人高潮视频| 手机看av网站在线看| 操日韩第| V A在线| 蜜臀久久99精品久久久久久| 中精品一区二区三区| 怡红院成人av| 欧美日韩免费专区在线| 欧美躁死她一区二区| 91|九色|国产熟女| 淫荡少妇免费| 国内偷自视频区视频综合| 久久亚洲AV无码白度| 欧美激情区| 欧美九九九| 亚洲伊人青青草| 大干人妻| 大屁股熟女一区二区三区| 国产精品第二页| 久久九七| 久久做97| 久久免费看高潮毛片韩国| 九九九综合精品| 2020中文字幕| 大香蕉97久久| 搡老熟女免费视频| 国产天天骚| 韩国一级做A片免费的| 国产97免费视频| 亚洲无码电影久久久| 97超色| 嗯嗯嗯啊啊啊操的我好爽| 久久成人国产| 蜜臀久久99精品久久久电影| 97久久免费| 天堂蜜桃无码视频一区二区| 国产h片在线观看视频| 久久九色| 91亚洲黄色网| 欧美传媒一区| 丁香五月电影| 91色综合| 热久久99999| 久久社区一区二区三区| 97操综合| oumeisetu综合| 岛国激情视频软件| 97超色| 美女91av|