99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

ROS2第三天:從“看得懂”到“跑得起來”的完整實(shí)踐

ROS2第三天:從“看得懂”到“跑得起來”的完整實(shí)踐 學(xué)ROS2的第三天說實(shí)話我已經(jīng)有了一種被知識(shí)淹沒的感覺。前兩天還算歲月靜好小烏龜在模擬器里老老實(shí)實(shí)轉(zhuǎn)圈ros2 topic list能刷出一長串名字讓我覺得自己好像已經(jīng)入門了rviz2也能勉強(qiáng)拖出一個(gè)機(jī)器人模型。但到了第三天我開始認(rèn)真想把學(xué)到的這些零碎東西組合成一個(gè)能解決實(shí)際問題的節(jié)點(diǎn)然后發(fā)現(xiàn)自己徹底卡住了——每個(gè)命令都認(rèn)識(shí)連起來就不知道從哪下手。這個(gè)狀態(tài)我相信不是少數(shù)人。如果你正好也處在“學(xué)ROS2的第三天”這個(gè)尷尬點(diǎn)這篇筆記就是為你寫的我把我踩過的坑、試錯(cuò)過程、還有最后一個(gè)能正常跑起來的示例代碼全部攤開講清楚。1. 第三天到底卡在哪從“看得懂”到“跑得起來”的坎1.1 前兩天其實(shí)只學(xué)會(huì)了“看戲”先復(fù)盤一下前兩天到底學(xué)了什么。按多數(shù)人走完的典型路線基本上就是裝好ROS2跑通小烏龜然后用命令行工具去看話題、看節(jié)點(diǎn)。ros2 node list、ros2 topic list、ros2 topic echo這些命令用得很溜你甚至能盯著/turtle1/pose的坐標(biāo)變化看一晚上感嘆這系統(tǒng)真奇妙。但說白了這只是“看戲”。你看到了話題上在傳什么數(shù)據(jù)但完全沒親手生產(chǎn)過任何數(shù)據(jù)。真正的開發(fā)是要自己寫一個(gè)節(jié)點(diǎn)往話題里發(fā)消息或者接收消息做出反應(yīng)。這個(gè)從“消費(fèi)數(shù)據(jù)”到“生產(chǎn)數(shù)據(jù)”的切換就是第三天最讓我難受的一道坎。我試著從網(wǎng)上找一個(gè)最簡單的Python示例來抄結(jié)果發(fā)現(xiàn)很多所謂“菜鳥教程”上來就是一堆我不認(rèn)識(shí)的概念rclpy、Node、Publisher、Timer。我能理解每個(gè)單詞但把它們組合起來加上一個(gè)while rclpy.ok()循環(huán)腦子就開始轉(zhuǎn)不動(dòng)了。更要命的是一旦跑起來還報(bào)錯(cuò)報(bào)錯(cuò)信息又是大段大段的引用棧嚇得我一度懷疑自己是不是干不了這個(gè)。1.2 第三天暴露的三個(gè)典型“癥狀”我想了想第三天的迷茫其實(shí)可以歸納成三個(gè)癥狀大家對號(hào)入座一下。第一個(gè)癥狀是“命令都會(huì)架構(gòu)不會(huì)”。你知道ros2 run可以啟動(dòng)節(jié)點(diǎn)但你不知道一個(gè)完整的機(jī)器人系統(tǒng)里要寫幾個(gè)節(jié)點(diǎn)、每個(gè)節(jié)點(diǎn)該干什么。第二個(gè)癥狀是“跟著教程走能通離開教程就瞎”。一篇博客讓你寫個(gè)talker你寫了也能跑但讓你自己設(shè)計(jì)一個(gè)“每隔兩秒發(fā)布一次里程計(jì)數(shù)據(jù)”的功能你就不知道怎么把定時(shí)器、消息類型、qos這些參數(shù)拼起來。第三個(gè)癥狀是“一碰硬件就崩”。很多第三天的新手和我一樣心里想的都是“我得讓真實(shí)小車動(dòng)起來才對”結(jié)果一接上串口、一裝驅(qū)動(dòng)各種權(quán)限錯(cuò)誤、依賴沖突一下午就沒了。如果你中了兩條以上說明你還沒到上硬件的時(shí)候。我的建議是第三天老老實(shí)實(shí)留在仿真環(huán)境里先把“自己寫節(jié)點(diǎn)、自己定義消息、自己完成發(fā)布訂閱”這條鏈路跑通。真實(shí)硬件是加分項(xiàng)但前提是你已經(jīng)能熟練編寫和執(zhí)行一個(gè)功能包否則只會(huì)把ROS2學(xué)習(xí)的挫敗感提前放大十倍。1.3 我為什么勸你先別急著上硬件我知道這很難忍住。我自己也提前買了一塊ESP32計(jì)劃照著網(wǎng)上“ROS2 humble串口橋接esp32小車”的思路讓小車通過串口把速度反饋發(fā)給主機(jī)。結(jié)果我連第一步micro-ROS agent都沒跑起來。后來我才明白這條鏈路其實(shí)涉及好幾層?xùn)|西要在ESP32上生成帶micro-ROS客戶端的固件要跑一個(gè)micro-ROS agent把串口數(shù)據(jù)接到ROS2網(wǎng)絡(luò)里還要解決串口設(shè)備權(quán)限、波特率、固件刷寫工具鏈。對三天的ROS2新手來說任何一個(gè)環(huán)節(jié)出問題你都分不清到底是ROS2的問題、串口的問題、還是單片機(jī)的問題。所以當(dāng)天我做了個(gè)明智的決定關(guān)掉ESP32的燒錄工程回到純軟件的ROS2環(huán)境先把節(jié)點(diǎn)、工作區(qū)、編譯、運(yùn)行這套基本功練扎實(shí)。第三天尤其在還搞不清colcon build原理的情況下任何硬件層都會(huì)成為不必要的變量。這不是勸退是讓后面的路更順。等你能熟練寫三五個(gè)功能包之后再回頭搞micro-ROS橋接相信一天就能解決。2. 第三天的地基環(huán)境、工作區(qū)與構(gòu)建系統(tǒng)2.1 ROS2版本怎么選Humble、Jazzy還是等新發(fā)行版版本選擇是第三天必須自己先想清楚的一件事。目前最常見的是ROS2 Humble官方支持到2027年左右教程最多、社區(qū)資源最全。我一開始裝了Humble但因?yàn)槭诸^電腦正好是Ubuntu 24.04官方Humble并不直接支持折騰很久才勉強(qiáng)裝上問題還非常多。后來我干脆換成了Jazzy因?yàn)镴azzy正好對應(yīng)Ubuntu 24.04裝起來輕松不少。這里的建議很簡單先看你的Ubuntu版本再選對應(yīng)的ROS2發(fā)行版。別學(xué)我看了教程是Humble就強(qiáng)行裝結(jié)果后面各種Python依賴沖突連ros2 --version都時(shí)好時(shí)壞。從長期學(xué)習(xí)角度講選Humble做學(xué)習(xí)平臺(tái)是沒有問題的它是當(dāng)前生態(tài)最成熟的分支很多硬件驅(qū)動(dòng)、第三方庫都優(yōu)先適配了它。但如果你用的是新版本Ubuntu裝Humble的痛苦遠(yuǎn)大于收益。我后來還試過Docker方案在容器里跑一個(gè)干凈的Humble環(huán)境宿主機(jī)的Ubuntu版本就無所謂了。這個(gè)方案給了一個(gè)非常干凈的實(shí)驗(yàn)環(huán)境壞了就重建容器不用擔(dān)心把系統(tǒng)搞爛。我當(dāng)時(shí)在Docker容器里跑通了ROS2 humble的小烏龜還把rviz2通過主機(jī)的顯示屏輸出出來體驗(yàn)相當(dāng)順滑。2.2 Ubuntu 24.04 安裝的坑與一鍵腳本提到安裝過程我強(qiáng)烈建議在第三天就把“怎么裝好的”這件事徹底想清楚不然以后出問題都不知道去哪修。手動(dòng)裝ROS2需要先設(shè)置軟件源、添加ROS2的GPG密鑰、再安裝對應(yīng)發(fā)行版的基礎(chǔ)包最后還要裝開發(fā)工具和Python依賴。這個(gè)流程對新手來說很容易出錯(cuò)尤其是網(wǎng)絡(luò)不好的時(shí)候下載中斷、源失效都可能讓安裝時(shí)長無限拉長。我試過網(wǎng)上很流行的“魚香ROS一鍵安裝”確實(shí)能省掉不少步驟它本質(zhì)上是把這些命令全部打包成一個(gè)腳本你只要選擇對應(yīng)的發(fā)行版就行。這里有一個(gè)關(guān)鍵教訓(xùn)一鍵腳本雖然快但你最好還是手動(dòng)跑一遍官方文檔里的步驟至少大概知道腳本在你系統(tǒng)里改了哪些文件。我第三天寫的第一行“真正有用的代碼”其實(shí)是調(diào)試安裝問題。當(dāng)時(shí)我發(fā)現(xiàn)明明裝好了Jazzy但每次打開新終端總提示找不到ros2命令。原因特別蠢忘了把source /opt/ros/jazzy/setup.bash寫進(jìn)~/.bashrc。新手經(jīng)常在不同終端之間來回切換只有已經(jīng)source過的老終端能用ros2新終端一上來就是空的。這個(gè)問題不解決后續(xù)每一步都會(huì)荒廢。2.3 工作區(qū)結(jié)構(gòu)src/build/install/log安裝好之后第三天的另一件大事是搞清楚什么是“工作區(qū)”。我最初以為只要在一個(gè)文件夾里寫幾個(gè).py文件就能跑后來才發(fā)現(xiàn)ROS2有一套自己的工程組織方式最外面是一個(gè)工作區(qū)目錄下面通常有src、build、install、log四個(gè)文件夾。src放我們的源碼包build放編譯中間產(chǎn)物install放最終安裝好的包和環(huán)境腳本log則是編譯日志。剛接觸這套結(jié)構(gòu)時(shí)真的頭大但類比一下就通了這就像一個(gè)大型項(xiàng)目的“工地”源碼是設(shè)計(jì)圖紙build是施工過程install是最終交付的毛坯房log是每天的施工日志。我在第三天犯過的最蠢錯(cuò)誤是好幾次打開終端直接跑到install目錄下運(yùn)行一個(gè)可執(zhí)行文件然后報(bào)錯(cuò)說找不到相關(guān)的庫。正確做法是在你手動(dòng)source了install/setup.bash之后ros2 run會(huì)替你找到對應(yīng)的可執(zhí)行文件和依賴庫。你不需要關(guān)心這個(gè)可執(zhí)行文件到底藏在哪個(gè)子目錄。記住這個(gè)邏輯之后我寫代碼時(shí)的思路就順多了只要保證源碼在src下被正確組織編譯之后所有東西都會(huì)統(tǒng)一進(jìn)install運(yùn)行階段我只關(guān)心ros2 run的包名和節(jié)點(diǎn)名不再去手動(dòng)找路徑。2.4 colcon build 的日常用法和source技巧colcon build是第三天繞不開的構(gòu)建命令它負(fù)責(zé)把你src下的包一個(gè)個(gè)編譯并把結(jié)果放到install目錄。我第一次用的時(shí)候直接一個(gè)colcon build就跑結(jié)果編譯一個(gè)包時(shí)因?yàn)槿鄙僖蕾噲?bào)錯(cuò)了整個(gè)構(gòu)建流程中斷。后來才知道如果你只是改了某一個(gè)包可以用colcon build --packages-select 包名只編譯指定包速度會(huì)快很多。這個(gè)選項(xiàng)看起來不起眼但它真的能省下大量時(shí)間尤其在你后面進(jìn)行一個(gè)幾個(gè)包的聯(lián)合開發(fā)時(shí)每次全量構(gòu)建會(huì)讓你懷疑人生。source環(huán)境腳本這里還有個(gè)坑source install/setup.bash是要在“當(dāng)前終端”生效的一旦你新開一個(gè)終端就得重新source。我一開始以為放在.bashrc里就一勞永逸了但如果你像我一樣同時(shí)維護(hù)多個(gè)工作區(qū)容易造成“包遮蔽”問題。比如工作區(qū)A里有個(gè)pkg_a工作區(qū)B里也有一個(gè)同名pkg_a兩個(gè)都寫進(jìn).bashrc最終生效的是排在后面的那個(gè)。這種問題排查起來非常隱蔽癥狀是代碼明明改了跑起來還是舊行為。后面我學(xué)乖了不在.bashrc里寫死工作區(qū)而是每次進(jìn)入具體項(xiàng)目時(shí)手動(dòng)source寧可麻煩一點(diǎn)也要保證環(huán)境是確定的。2.5 Domain ID 和 Docker讓多個(gè)系統(tǒng)并存第三天如果只學(xué)一個(gè)“不那么常見但很有用”的概念我推薦花十分鐘看看Domain ID。ROS2默認(rèn)的Domain ID是0所有在同一網(wǎng)段、Domain ID相同的節(jié)點(diǎn)才能互相通信。這個(gè)設(shè)計(jì)本來是為了讓不同系統(tǒng)在同一網(wǎng)絡(luò)環(huán)境下互不干擾但新手不懂它就很容易出現(xiàn)“我這個(gè)節(jié)點(diǎn)的數(shù)據(jù)和別人為什么串了”的詭異問題。我當(dāng)時(shí)在跑小烏龜時(shí)旁邊別人教室的ROS2節(jié)點(diǎn)也通過Wi-Fi廣播了過來話題列表里多出一堆不認(rèn)識(shí)的名字我還以為自己的系統(tǒng)壞了。后面把Domain ID改成一個(gè)偏門數(shù)字世界立刻清凈了。Docker里跑ROS2也是一條值得走通的路。我試過在Ubuntu 24.04上用一個(gè)專門的ROS2容器再配合主機(jī)的顯示器做圖形界面轉(zhuǎn)發(fā)這樣無論宿主機(jī)是什么版本環(huán)境都保持干凈。但要注意Docker容器默認(rèn)使用橋接網(wǎng)絡(luò)ROS2的發(fā)現(xiàn)協(xié)議默認(rèn)使用組播在橋接網(wǎng)絡(luò)里很多時(shí)候會(huì)發(fā)現(xiàn)不了對方。解決辦法是啟動(dòng)容器時(shí)用--network host讓容器共享宿主機(jī)的網(wǎng)絡(luò)棧然后在容器里的ROS_DOMAIN_ID和宿主機(jī)保持一致這樣才能正常通信。如果你的目標(biāo)是“在干凈環(huán)境里跑ROS2”Docker絕對值得在第三天花一下午研究明白它能讓你以后換電腦、換系統(tǒng)時(shí)不再重新經(jīng)歷一次安裝地獄。3. 第三天的核心概念話題、服務(wù)與動(dòng)作3.1 話題ROS2里的“瀑布流”話題這個(gè)概念很多人以為懂但第三天一旦自己上手寫代碼就容易在“什么時(shí)候發(fā)消息、什么時(shí)候訂閱、什么時(shí)候銷毀節(jié)點(diǎn)”這些問題上卡住。我用一個(gè)生活化的比喻來說話題就像廣播電臺(tái)。一個(gè)節(jié)點(diǎn)在某個(gè)頻率上廣播某種類型的消息任何感興趣的節(jié)點(diǎn)都能來聽發(fā)布者和訂閱者之間不需要認(rèn)識(shí)對方。比如/cmd_vel這個(gè)標(biāo)準(zhǔn)話題就是告訴機(jī)器人“你該怎么樣了”而激光雷達(dá)節(jié)點(diǎn)則會(huì)在/scan上廣播測量數(shù)據(jù)導(dǎo)航節(jié)點(diǎn)訂閱/scan來計(jì)算避障。這里的關(guān)鍵點(diǎn)在于話題通信是異步的、單向的、持續(xù)性的。發(fā)布者發(fā)完消息就走訂閱者也在自己的線程里回調(diào)處理。新手最容易犯錯(cuò)的是在回調(diào)函數(shù)里干了太多耗時(shí)的事情比如在訂閱回調(diào)里去執(zhí)行一個(gè)數(shù)據(jù)庫查詢結(jié)果整個(gè)節(jié)點(diǎn)越來越卡。第三天的正確姿勢是回調(diào)函數(shù)里只做“把數(shù)據(jù)趕緊收下來”這件事真正的復(fù)雜處理放回主循環(huán)或單獨(dú)的線程里去。我當(dāng)時(shí)寫的一個(gè)里程計(jì)訂閱節(jié)點(diǎn)就是因?yàn)橹苯釉诨卣{(diào)里做了大計(jì)算導(dǎo)致消息越積越多最后內(nèi)存瘋漲。3.2 服務(wù)簡單直白的“一呼一應(yīng)”如果說話題是廣播電臺(tái)那服務(wù)就是“打電話”??蛻舳藫苓^去說“我要做這件事”服務(wù)端響應(yīng)并返回結(jié)果一個(gè)請求對應(yīng)一個(gè)響應(yīng)整個(gè)過程同步完成。我學(xué)服務(wù)時(shí)想找一個(gè)最簡單的例子最好就是ROS2的小烏龜例子里那個(gè)/spawn服務(wù)。你調(diào)用它傳遞一個(gè)坐標(biāo)和角度它就在仿真世界里生成一只新的烏龜并返回生成烏龜?shù)拿帧_@個(gè)模式非常適合那些“請求一下、等結(jié)果”的操作比如點(diǎn)亮一盞燈、打開一個(gè)夾爪或者請求一個(gè)機(jī)器人執(zhí)行一次位置歸零。第三天理解服務(wù)要特別注意一對概念srv文件長什么樣里面用---分隔請求和響應(yīng)兩部分。我記得我第一次自己定義服務(wù)類型的時(shí)候忘了在package.xml和CMakeLists.txt里注冊結(jié)果編譯通過但運(yùn)行報(bào)錯(cuò)說找不到服務(wù)類型。這個(gè)坑很典型。后來我才明白R(shí)OS2里新建消息類型也好、服務(wù)類型也好除了要寫.msg或.srv文件之外還必須修改構(gòu)建配置讓構(gòu)建系統(tǒng)可以發(fā)現(xiàn)這些文件。這塊沒有捷徑把官方示例的配置抄一遍抄兩遍抄明白為止。3.3 動(dòng)作給“耗時(shí)任務(wù)”專用的執(zhí)行模式動(dòng)作是我在第三天最后一個(gè)弄明白的概念也是我覺得最容易被新手忽略的一塊。動(dòng)作類比的場景可以是一次“外賣配送”你下單后商家確認(rèn)收到訂單中間不斷告訴你出餐進(jìn)度最后送達(dá)時(shí)告訴你完成。對應(yīng)到ROS2里動(dòng)作客戶端發(fā)起一個(gè)目標(biāo)動(dòng)作服務(wù)端響應(yīng)并承諾執(zhí)行在執(zhí)行過程中周期性反饋進(jìn)度任務(wù)完成后返回最終結(jié)果。導(dǎo)航任務(wù)就是最典型的動(dòng)作比如“導(dǎo)航到A點(diǎn)”它需要持續(xù)執(zhí)行幾十秒中間的進(jìn)度和未來的最終結(jié)果都很重要這時(shí)候用服務(wù)就不合適因?yàn)榉?wù)同步等待會(huì)讓整個(gè)節(jié)點(diǎn)阻塞。我在學(xué)動(dòng)作的時(shí)候一開始老把它和服務(wù)混在一起。后來用到的判斷標(biāo)準(zhǔn)特別簡單如果這個(gè)任務(wù)需要“持續(xù)一段時(shí)間”且有中間進(jìn)度要匯報(bào)那就用動(dòng)作如果只是“閃一下”趕緊給個(gè)結(jié)果那就用服務(wù)。動(dòng)作對新手而言最大的門檻是代碼結(jié)構(gòu)比話題和服務(wù)復(fù)雜一層因?yàn)樗喑觥澳繕?biāo)、反饋、結(jié)果”三種消息類型。第三天我并不建議自己動(dòng)手寫一個(gè)完整的動(dòng)作服務(wù)端但至少要把ros2 action list和ros2 action info這類命令用熟看明白現(xiàn)成例子里反饋是怎么回來的。3.4 怎么選一把實(shí)用的尺子如果有朋友第三天跑來問我“話題、服務(wù)、動(dòng)作到底應(yīng)該學(xué)哪個(gè)、優(yōu)先學(xué)哪個(gè)”我會(huì)說話題是絕對優(yōu)先級(jí)其次是服務(wù)動(dòng)作可以了解但不必深究。理由很簡單實(shí)際項(xiàng)目中七八成的ROS2節(jié)點(diǎn)間通信靠的都是話題很多工具鏈、算法包在集成時(shí)對服務(wù)的依賴度也比動(dòng)作高。動(dòng)作重要但通常是導(dǎo)航、機(jī)械臂這類大型應(yīng)用里才高頻出現(xiàn)等基礎(chǔ)扎實(shí)再回過頭啃就好。拿一張表來收束這個(gè)選擇邏輯通信方式方向是否同步最適合的場景話題單向、持續(xù)異步傳感器數(shù)據(jù)、速度指令、狀態(tài)廣播服務(wù)雙向、一次請求一次響應(yīng)同步指令類操作、查詢狀態(tài)動(dòng)作雙向、長時(shí)間執(zhí)行異步但有反饋導(dǎo)航、機(jī)械臂運(yùn)動(dòng)規(guī)劃、復(fù)雜流程這張表就是我現(xiàn)在做架構(gòu)設(shè)計(jì)時(shí)的第一直覺。每次有新人問“我該用哪個(gè)”我都是先問“它是不是持續(xù)廣播的”如果是話題閉眼選再看“需不需要立刻拿到結(jié)果”需要就服務(wù)如果是要執(zhí)行很久還要回報(bào)進(jìn)度那動(dòng)作沒跑。4. 第三天實(shí)操讓小烏龜背后的代碼露出原形4.1 創(chuàng)建一個(gè)自己的功能包理論再多第三天最缺的還是“親手寫一場能跑起來的完整代碼”。我從“命令行操作小烏龜”升級(jí)到“自己寫節(jié)點(diǎn)控制小烏龜”這個(gè)跨越讓我真正理解了ROS2的開發(fā)流程。第一步是創(chuàng)建一個(gè)功能包。在src目錄下我執(zhí)行了下面的命令ros2 pkg create --build-type ament_python my_turtle_control --dependencies rclpy geometry_msgs這里用了--build-type ament_python指定這是Python包否則默認(rèn)可能會(huì)生成C包結(jié)構(gòu)。--dependencies是告訴構(gòu)建系統(tǒng)我需要依賴rclpyROS2的Python客戶端庫和geometry_msgs小烏龜速度指令里需要的消息類型。這個(gè)命令會(huì)在src下自動(dòng)生成my_turtle_control目錄里面有package.xml、setup.py以及my_turtle_control子目錄真正的Python代碼就放在這個(gè)同名子目錄里。我當(dāng)時(shí)對ROS2生成的這一整套目錄結(jié)構(gòu)非常不習(xí)慣感覺比普通Python項(xiàng)目復(fù)雜。但后來發(fā)現(xiàn)它的核心邏輯其實(shí)很簡單package.xml聲明這個(gè)包叫什么、依賴什么setup.py負(fù)責(zé)讓ros2 run能找到你的節(jié)點(diǎn)。新手最容易出的問題是往包里添加了一個(gè)新的Python文件但忘了在setup.py的entry_points里注冊它結(jié)果運(yùn)行ros2 run my_turtle_control xxx時(shí)報(bào)錯(cuò)說找不到xxx。每次新增一個(gè)可執(zhí)行節(jié)點(diǎn)都必須同步修改entry_points這個(gè)習(xí)慣我用了好幾個(gè)星期才養(yǎng)成。4.2 寫一個(gè)最簡單的發(fā)布者讓烏龜走正方形功能包建好之后我來寫一個(gè)最經(jīng)典的練習(xí)讓烏龜朝一個(gè)固定方向直行然后轉(zhuǎn)彎走出一個(gè)正方形。這本質(zhì)上是往/turtle1/cmd_vel話題發(fā)布geometry_msgs/Twist消息每條消息告訴烏龜“線速度多少、角速度多少”。import rclpy from rclpy.node import Node from geometry_msgs.msg import Twist class SquareDriver(Node): def __init__(self): super().__init__(square_driver) self.publisher_ self.create_publisher(Twist, /turtle1/cmd_vel, 10) self.timer self.create_timer(0.5, self.timer_callback) self.step 0 self.linear 2.0 self.angular 1.57 def timer_callback(self): msg Twist() if self.step % 4 0: msg.linear.x self.linear msg.angular.z 0.0 else: msg.linear.x 0.0 msg.angular.z self.angular self.publisher_.publish(msg) self.step 1 def main(argsNone): rclpy.init(argsargs) node SquareDriver() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ __main__: main()這段代碼里最需要理解的是create_publisher的第一個(gè)參數(shù)是消息類型第二個(gè)是話題名第三個(gè)10是隊(duì)列長度。隊(duì)列長度這個(gè)概念雖然小但很關(guān)鍵它代表著如果訂閱者處理不過來ROS2會(huì)在緩存里保留多少條消息。10是常見默認(rèn)值適合大部分練習(xí)如果你做的是高頻傳感器比如雷達(dá)數(shù)據(jù)那就要根據(jù)實(shí)際情況調(diào)整。小烏龜在仿真里移動(dòng)有慣性0.5秒發(fā)一次速度指令已經(jīng)足夠讓它走得很順滑。運(yùn)行前還要記住source環(huán)境和工作區(qū)source /opt/ros/jazzy/setup.bash source ~/ros2_ws/install/setup.bash ros2 run my_turtle_control square_driver如果一切正常你會(huì)看到小烏龜開始一格一格往前走、轉(zhuǎn)彎、再往前走走出一個(gè)近似正方形。這時(shí)候你再用一個(gè)終端執(zhí)行ros2 topic echo /turtle1/cmd_vel就能看到自己發(fā)布的那些速度數(shù)據(jù)源源不斷流出來。那一刻的成就感比看多少文檔都強(qiáng)。4.3 寫一個(gè)訂閱者把小烏龜?shù)奈蛔舜虺鰜戆l(fā)布者跑通了下一件事是寫一個(gè)訂閱者去監(jiān)聽小烏龜?shù)奈恢抿?yàn)證整個(gè)閉環(huán)。訂閱者的核心是創(chuàng)建一個(gè)訂閱對象然后寫一個(gè)回調(diào)函數(shù)一旦有新消息到達(dá)這個(gè)函數(shù)就會(huì)被自動(dòng)調(diào)用。import rclpy from rclpy.node import Node from turtlesim.msg import Pose class PosePrinter(Node): def __init__(self): super().__init__(pose_printer) self.subscription self.create_subscription( Pose, /turtle1/pose, self.pose_callback, 10) self.subscription def pose_callback(self, msg): self.get_logger().info( fx{msg.x:.2f}, y{msg.y:.2f}, theta{msg.theta:.2f}) def main(argsNone): rclpy.init(argsargs) node PosePrinter() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ __main__: main()這個(gè)訂閱者的回調(diào)函數(shù)只是打印坐標(biāo)所以不會(huì)造成性能壓力。但你別小看這個(gè)模式它是一切數(shù)據(jù)流應(yīng)用的起點(diǎn)。以后你要做激光雷達(dá)的slam建圖本質(zhì)上就是寫一個(gè)訂閱/scan的節(jié)點(diǎn)把雷達(dá)數(shù)據(jù)交給建圖算法要做八叉樹地圖導(dǎo)航也是在各個(gè)話題之間接管道。三天的學(xué)習(xí)能寫出發(fā)布者和訂閱者已經(jīng)完成了最核心的一步。4.4 打開rviz2第一次用可視化工具檢查系統(tǒng)在命令行里echo話題數(shù)據(jù)已經(jīng)能滿足“看數(shù)據(jù)流”但第三天我還想更直觀一點(diǎn)所以把rviz2打開了。rviz2是ROS2官方的3D可視化工具能顯示機(jī)器人模型、激光點(diǎn)云、地圖、路徑這些東西。學(xué)它最大的意義在于你以后做slam、導(dǎo)航、機(jī)械臂仿真時(shí)調(diào)節(jié)和觀察都離不開它。我第一次用rviz2的時(shí)候界面的左側(cè)面板顯示的是“Displays”列表右側(cè)是3D視圖頂部是一排工具欄。如果發(fā)現(xiàn)畫面里什么都看不到不要去懷疑系統(tǒng)壞了先檢查左下角全局選項(xiàng)里的“Fixed Frame”設(shè)置。Fixed Frame相當(dāng)于整個(gè)可視化世界的坐標(biāo)系錨點(diǎn)如果你把Fixed Frame設(shè)成map但當(dāng)前系統(tǒng)里根本沒有map坐標(biāo)系場景就會(huì)是空的。我在搞機(jī)械臂仿真時(shí)就經(jīng)常因?yàn)镕ixed Frame設(shè)錯(cuò)而看不到模型最后發(fā)現(xiàn)是panda_link0和world搞混了。4.5 串口橋接的真實(shí)難度micro-ROS只是入口我知道很多人第三天真正想做的事情是把ROS2和真實(shí)硬件接起來尤其是看到“ROS2 humble串口橋接esp32小車”這種關(guān)鍵詞就走不動(dòng)路。我也一樣。但歷經(jīng)一下午的折騰我要誠實(shí)地告訴你這條路對新手來說暫緩一下更明智。它牽扯的micro-ROS Agent并不是一個(gè)特別難的應(yīng)用難點(diǎn)藏在它靠后的環(huán)節(jié)上你需要先給ESP32生成固件這個(gè)固件要內(nèi)置micro-ROS客戶端的配置然后你在電腦上啟動(dòng)micro-ROS Agent監(jiān)聽串口最后你還要保證ROS2端的話題消息類型和單片機(jī)端完全一致任何一方不匹配數(shù)據(jù)都靜默丟失。后來我把這套流程拆開看意識(shí)到它實(shí)際上等于同時(shí)學(xué)習(xí)三樣?xùn)|西ROS2的消息機(jī)制、單片機(jī)的串口編程、以及micro-ROS中間件的配置。任何一個(gè)地方不熟你都無法判斷問題是出在哪一層的。所以我那天最終選擇回到純軟件世界先確保能熟練寫一個(gè)自定義消息再談橋接硬件。這個(gè)決定幫我省下了大量無效的排查時(shí)間也讓我在后面真正做小車時(shí)幾乎一晚上就把橋接跑通了。5. 避坑實(shí)錄我第三天踩過的六個(gè)典型問題5.1 找不到包、找不到節(jié)點(diǎn)命令與環(huán)境變量第三天最常遇到的報(bào)錯(cuò)就是“Package xxx not found”或者“Executable xxx not found”。這個(gè)問題的第一可能性就是你沒source當(dāng)前工作區(qū)的install/setup.bash。另一個(gè)可能性是你剛用colcon build編譯過但編譯失敗了而你誤以為成功了。我自己就出現(xiàn)過編譯輸出了一大堆警告但我沒看直接運(yùn)行結(jié)果找不到節(jié)點(diǎn)回頭仔細(xì)看日志才發(fā)現(xiàn)是某個(gè)依賴的Python模塊拼寫錯(cuò)了。所以遇到包找不到第一個(gè)動(dòng)作永遠(yuǎn)是檢查環(huán)境腳本有沒有source第二個(gè)動(dòng)作是重跑一次colcon build并認(rèn)真讀最后幾行輸出。5.2 QoS不匹配數(shù)據(jù)就在眼前但你就是收不到ROS2的QoSQuality of Service是一個(gè)對新手非常不友好的概念。它控制消息在傳輸中的可靠性、時(shí)效性和緩存策略。默認(rèn)情況下發(fā)布者和訂閱者都采用“可靠傳輸?shù)试S一定延遲”的配置所以大多數(shù)練習(xí)都能零配置互通。但一旦你開始訂閱真實(shí)傳感器的數(shù)據(jù)比如激光雷達(dá)很多雷達(dá)驅(qū)動(dòng)的發(fā)布者用的是“盡力而為”策略也就是為了追求速度寧可丟包也不重傳。這時(shí)候如果你用默認(rèn)的可靠策略去訂閱就會(huì)一直收不到數(shù)據(jù)。判斷方法是如果話題存在、有節(jié)點(diǎn)在發(fā)消息但你的節(jié)點(diǎn)就是訂閱不到八成就是QoS不匹配。命令行里可以用ros2 topic info /話題名 --verbose查看發(fā)布者和訂閱者的QoS配置是否一致。我當(dāng)時(shí)做雷達(dá)數(shù)據(jù)訂閱時(shí)在這個(gè)問題上卡了一個(gè)多小時(shí)最后把create_subscription里的QoS策略改成qos_profile_sensor_data立刻就好了。5.3 日志刷屏與節(jié)點(diǎn)卡頓第三個(gè)問題相對隱蔽當(dāng)你的訂閱回調(diào)里干了太多事情節(jié)點(diǎn)會(huì)越來越慢日志瘋狂刷屏最后就像死機(jī)了一樣。本質(zhì)原因是ROS2的默認(rèn)回調(diào)是串行處理的一個(gè)回調(diào)沒跑完下一個(gè)回調(diào)只能排隊(duì)如果回調(diào)執(zhí)行時(shí)間太長消息越積越多系統(tǒng)延遲越來越高。解決辦法有幾個(gè)方向一是讓回調(diào)只負(fù)責(zé)把數(shù)據(jù)存到隊(duì)列或變量里二是用多線程執(zhí)行器讓不同訂閱者并行回調(diào)三是降低發(fā)布頻率。新手階段最簡單有效的是第一種。5.4 /dev/ttyUSB0 權(quán)限問題如果你第三天實(shí)在沒忍住要碰串口那你一定會(huì)遇到Permission denied。這個(gè)問題的根源是Linux串口設(shè)備默認(rèn)只有dialout用戶組能訪問而普通用戶不在這個(gè)組里。我記得第一次遇到時(shí)直接sudo chmod 777 /dev/ttyUSB0能跑通但非常臟換個(gè)USB口又要重新設(shè)置一遍。正確做法是把當(dāng)前用戶加入組sudo usermod -aG dialout $USER添加之后重新登錄一次之后所有串口設(shè)備就都有權(quán)限了。注意這個(gè)組名在不同發(fā)行版里可能略有差異但dialout是最常見的。5.5 “零拷貝”話題知道有這回事就行我在第三天還搜到了“ROS2零拷貝”這類高級(jí)主題差點(diǎn)點(diǎn)進(jìn)去。后來看完幾個(gè)介紹才明白零拷貝是一種性能優(yōu)化方案目的是減少消息在進(jìn)程間傳遞時(shí)的內(nèi)存復(fù)制次數(shù)主要用在雷達(dá)、攝像頭這類高頻大數(shù)據(jù)場景。對普通學(xué)習(xí)項(xiàng)目來說默認(rèn)的消息傳遞開銷完全可以接受完全不需要細(xì)化到這種程度。我給新手的建議是第三天的你知道有這么個(gè)方向就行別在這上面花時(shí)間它屬于等你真正做高性能傳感器處理時(shí)再回頭的課題。5.6 依賴地獄找不到Python模塊到底為什么最后一個(gè)是依賴問題。我跑很多網(wǎng)上教程時(shí)代碼看起來很簡單但一運(yùn)行就報(bào)ModuleNotFoundError: No module named xxx。新手很容易以為是自己代碼寫錯(cuò)了其實(shí)多半是忘了安裝那個(gè)Python庫。ROS2環(huán)境本身有很多依賴但不會(huì)把所有第三方庫都替你裝好。遇到缺模塊最簡單的辦法就是問一下大語言模型或搜索引擎看這個(gè)庫應(yīng)該用什么命令裝裝完再重試。比如做機(jī)械臂仿真你可能要pip install不少運(yùn)動(dòng)規(guī)劃相關(guān)的Python包做激光雷達(dá)處理可能還需要裝點(diǎn)云處理庫。這些都不是ROS2環(huán)境的問題是項(xiàng)目環(huán)境的問題。6. 第三天結(jié)束后的心得與下一步這一天過完之后我最大的體會(huì)是ROS2學(xué)習(xí)的前三天真正的分水嶺不是“你會(huì)用多少命令”而是“你能不能自己寫一個(gè)包并在系統(tǒng)里跑起來”。如果你今天熬到了這一步后面學(xué)服務(wù)、學(xué)動(dòng)作、學(xué)導(dǎo)航其實(shí)都是在同一個(gè)土壤上加磚。最需要避免的心態(tài)是覺得“三天了還不會(huì)做小車”說明自己不適合。幾乎所有搞機(jī)器人的人都會(huì)告訴你那很正常這個(gè)領(lǐng)域光是把術(shù)語體系理清楚就需要反復(fù)進(jìn)出好幾次。我建議第四天做兩件事第一是把發(fā)布者和訂閱者這兩個(gè)節(jié)點(diǎn)分別擴(kuò)展一下試著自定義一個(gè)簡單的.msg消息類型在小烏龜?shù)幕A(chǔ)上加一點(diǎn)自己的邏輯第二是回頭把colcon build --packages-select、ros2 topic info、ros2 node info這組命令練到肌肉記憶它們會(huì)貫穿你整個(gè)ROS2生涯。你可以把“兩周之內(nèi)讓ESP32小車通過micro-ROS橋接跑起來”當(dāng)作一個(gè)真正的階段目標(biāo)但請確保在那之前你能不靠教程、直接在自己創(chuàng)建的功能包里完成一次標(biāo)準(zhǔn)的發(fā)布訂閱閉環(huán)。過了這一關(guān)第四天你就已經(jīng)不再是那個(gè)只會(huì)敲命令的觀眾了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99原创自拍视频在线观看| 日本三级中国三级99人妇网站| 伊人久久大香线蕉亚洲五月天,| 丁香五月天狠狠操| 99青青草99| 99久超碰| 五月婷婷激情五月| 五月深爱激情网| 97人人操人人爽| 婷婷丁香无码专区| 中国丰满熟女A片免费观| 99爱视频| 色久综合| 色情婷婷五月天| 六月香五月婷| 777.色色| 99rewww| 丁香五月天婷婷91| 日韩有码久久| 久草视频大香蕉99| 亚洲国产网址| 天堂网亚洲色图| 五月丁香久久| 久操婷婷| 色999亚洲人成色| 色婷婷香蕉| 开心五月天激情网站| 99ri视频在线播放| 日日天天干| 99这里只有精品在线| 99热最新精品| 激情久久久久久久久久久| www.亚洲激情.com| 五月丁香综合网| 91操人人操| 99热伊人| 99re热视频这里只精品| 欧美成人精品A片免费一区99| 成人网站在线观看视频| 久久婷婷五月| 成人在线日韩| 色色欧美色色色| 色婷婷六月| 午夜激情婷婷| 色综合色| 99热这里都是精品| 五月丁小婷婷激情四射| av一区二区电影免费在线观看| WWW嗯嗯啊啊啊啊| 开心五月婷婷| 亚洲图片 丁香婷婷| 亚洲精品**不卡在线播he| www久久久久久久久久久| 免费看成人AA片无码视频吃奶| 五月婷婷综合网| 亚洲激情综合| 俺来也狠狠| 农村熟妇高潮精品A片| 激情第四色| 色五月在线播放| 国产激情综合五月久久| 日韩成人免费电影| 26uuu成人网| 婷婷桃色网| 99操九九网| 色啪久| 丁香五月玖玖| 欧美日本国产欧美日本韩国99| 熟女啪啪视频| aaaaaa片| 欧美激情综合五月色丁香| 激情五月婷婷丁香| 色情婷婷五月天| www.色婷婷.com| 国产精品久久久久久妇女6080| 激情AV网| 五月天丁香婷| 丁香花五月天| 男女99免费视频| 六月婷婷激情| 这里只有九九精品| 91碰在线| 97精品人人A片免费看| 2050人人操免费工开爱| 色婷婷五月综合在线| 91碰碰| 美女婷婷六月色| 久久草婷婷丁香网站| 深爱激情六月| XX色综合| 婷婷亚洲久久| 婷婷五月天激情综合婷婷五月天激情综合| 亚洲精品激情| 99re久久| 去色色五月天| 美女婷婷六月色| 狠狠色婷婷777| 久久五月婷婷丁香| 91九色PORNY大屁股| 97超碰欧美中文字幕| www.五月天色色.com| 激情综合5| 午夜不卡成人一区二区| 日韩成人av在线| 丰满老熟妇BBBBB搡BBB| 久99综合婷婷| 色色色色五月| 成人综合网站| 久婷五月| 26uuu丁香婷婷五月| 99爱在线视频| 日本九九视频| 综合深爱五月| 午夜大香蕉| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 激情文学第四色婷婷丁香五月| 深爱五月婷婷开心中文字幕| 激情亚洲婷婷| 在线色婷婷| www.yw尤物| 伊人五月天婷婷| 激情99| 99精品在线观看| 97色综合视频| 情涩婷婷五月天| 色五月成人| 97超级啪啪在线观看| 國語久久婷| 五月WWW| 99综合网| 五月丁香婷婷色色| 99re这里只有| 国产特黄色精品一区二区三区精品无广告| 久久老码第一| 九九Av| 大香蕉九九热| 激情五月综合婷婷| 丁香五月婷婷综合激情哟哟哟| 色狠狠五月天| 日韩亚洲视频| 夜夜 操无码| 五月丁香六月婷婷网| 乱精品一区字幕二区| 欧美综合五月丁香六月婷| 少妇人妻凹凸视频| 大香蕉在线99热| 色狠狠999综合网| 亚洲啪啪网| www九月婷婷| 婷婷玉月丁香五月在线视频| 国产乱妇乱子在线播视频播放网站| 任你爽精品免费视频6| 五月天涩涩| 无码少妇高潮喷水A片免费| 久久98| 99热久| 九九爱激情| 美妞av| 五月天婷婷影院| 丁香社92视频| 久9视频免费播放| 超碰99成人在线| 99热精品9| 图片区 小说区 区 亚洲五月| 狠狠艹狠狠艹| 国产AV一区二区三区最新精品| 婷婷综合另类小说| 丁香五月成人| 逼逼AV| 噜噜在线| 99精品爱| 久久婷婷的综合色丁香五月| 色九月婷婷丁香| 99色久| 天天插天天爽| 97碰碰人人| 欧美97色| 婷婷区日本| 久久久GOGO无码啪啪艺术| 人妻久久做| 天天精品视频免费观看| 色婷婷综合五月| 亚洲经典三级| 5月婷婷激情网| 婷婷综合偷拍| 色婷婷电影| 婷婷色综合| 久久婷五月天| AV 3P| 亚洲情综合五月天| 综合久久99| 538任你爽视频不一样的| 99操无码视频观看| 亚洲天天免费| 亚洲国产另类av| 天天日,天天射,天天舔| AA久久| 久热9| 99热日本| 婷婷色中文| 丁香婷婷五月色成人网站| 亚洲综合视频在线| 亚洲精品V天堂中文字幕| 丁香五月狠狠综合欧美| 日91高清无玛| 香蕉AV777XXX色综合一区| 甈你aaaaa| 人人操操97| 五月丁香啪啪综合| 五月噜噜| 99久久网站| 亚洲中文字幕在线观看| 日本婷婷五月天| 色色综合色视频| 桃色成人网| 天天澡天天狠天天天做| 久久小视频免费| 91婷婷丁香五月亚洲| 少妇人妻人伦A片| 99re思思精品视频在线观看| 91久久色| 婷婷五月丁香第四色超碰在线| 99热这里只有精品免费| 中文无码精品一区二区三区| 爆乳熟妇一区二区三区爆乳照片| 亚洲狠狠色丁香婷婷综合久久| 久久精品人妻| 人人做人人看人人摸| 欧美三级黄色片久久| 五月天婷婷综合| 天天色,天天日,天天做| 婷婷欧美色| 婷婷情色五月| 成人无码髙潮喷水A片| 裸体美女丁香五月天。| 久久久五月激| 六月婷婷成人| 日韩在线视频网站| 加勒比久热| www.色99| 亚洲精品视频在线播放| 这里只有精品在线观看视频| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 色五月婷婷久久| 五月丁香六月综合基地| 99热精品一区| 婷婷色五月综合丁香| 色五月大香蕉婷婷| 香蕉视频性爱BB做爱| 婷婷色在线| 综合激情五月天六月婷免费视频| 五月天婷爱综合| 五月婷啪| av操一操| 变天就操逼婷婷五月| 久久久精品人妻| 夜夜操夜夜操| 婷婷精品性视频| 五月天婷婷六月| 色婷婷操逼| 久久久日韩特色特黄AAAA| www.夜夜| 国产肥白大熟妇BBBB视频| 91碰超| 五月婷婷开心综合| 丁香五月激情视频| 99热这里只有精品 搜| 婷婷六月激情小说网| 亚洲成人av在线播放| 九月婷婷综合色干| 26uuu色五月| AA片在线观看视频在线播放| 少妇出轨做爰高潮A片| 久久a热| WWW久久久| 天天日天天插| 狠狠爱婷婷爱| 成人片在线播放| 五月天激情婷婷| 26uuu国产激情视频| 婷婷色系婷色| 丁香欧美| 色婷婷精品| 人妻精品久久久久久久| 亚洲另类噜噜| 亚洲日韩欧美综合VA| 1010日日无码| 99re8这里只有精品99re8热视频| 色色色色色色网站| 婷婷色五月开心五月| 欧美精品18| 天天爱天天做天天| 五月激情婷婷综合| 婷婷成人视频| 51精品国自产在线| 一本色道久久综合狠狠躁一二三| 1024成人免费看| 久久99草五月婷婷| 色一情一乱一乱91Av| 91热手机在线| 久热欧美| 激情五月综合六月丁香婷婷狠狠干| 五月婷婷丁香啪啪| 丁香五月天婷婷中文| 人色五月天婷婷| 深爱激情五月天色婷婷| 日本社区五月天激情| 99国产性感视频| 狠婷婷五月| 婷婷五月天激情基地| 婷婷五月综合激情免费视频| 99.N在线视频| 色偷偷综合| 国产精品18久久久| 婷婷亚州综合| 97人人操在线| 亚洲综合色丁香婷婷六月| 夜夜夜叫天天天做| 婷婷成人五月天成人文学| 思思热精品在线| 亚洲综合无码| 国产肥白大熟妇BBBB视频| 色无婷婷| 久热一本| 亚洲 无码 中文字幕 中出| 天天日日爽| 久久久久久久人妻| 婷婷丁香六月天| 五月婷婷影视| 久久99操| 五月丁香婷婷人体| 99热这里只有精品1025| 久久丁香综合香蕉| 婷色五月天| 国内婷婷丁香社区在线播放| 五月丁香六月情| 91超级碰碰| 五月香婷婷| 一区二区乱视频码| 久久只有这里精品免费| 婷婷五月天狠狠搞干| 另类图片激情五月| 操大屄五月天视频| 91九色视频| 能看的AV网站| 啊V视频在线观看| AA片在线观看视频在线播放| 色情丁香五月婷婷精品| www.99热. com这里只有精品| 五月天激情小说| 婷婷综合五月天| 综合久久首页| 精品无码人妻一区| 综合色99| 亚州婷婷五月激情综合| 丁香花五月天| 五月丁香色| 嘿嘿视频免费看9| 欧美婷婷日本| 中文av网| www.ywav| 99综合婷婷五月| 极品另类| 色婷婷小视频| 99er在线观看| 狠狠穞A片一區二區三區| 激情碰碰碰| 九九免费视频在线| 99热这里只有精彩| 婷婷久久影院| 性日本精品| 超碰在线成人| 五月丁香啪啪激情| 噜一噜在线| 久久婷婷青青草| 在线不卡视频| 91玖玖| 伊人成综合五月婷婷| 婷婷五月综合婷婷| 综合久久综合| 欧美日韩成人免费在线| 色情成人五月天| 99在线精品免费视频| 婷婷久久五月天| 五月天伊人久久久久| 婷婷五月花.97| 99视频色在线观看| 综合五月婷婷| 五月天婷婷av| 色碰碰| 婷婷五月激情综合啪啪| 天天爽日日爽夜夜爽| 久久久婷婷| www.99在线| 丁香婷婷五月色成人网站| 五月婷婷激情在线| jiqingliuyuetian| 久久婷婷青青| 亚洲A色| WwW色婷婷| 99re久热只有精品6在线直播| 丁香六月婷婷综合| 天天色月| 99久在线精品99re8热| 久久99免费视屏| 色五月琪琪| 久久精品63| 丁香五月色网| 人人操91| 综合五月婷婷| 天天在线久久综合| 强辱丰满人妻HD中文字幕| 99er免费在线观看| 91妻人人爽人人看片| 五月婷婷六月丁香激情综合网| 欧美精品18| 欧韩性爱| 六月婷婷毛片| 婷婷综合精品视频97| 色婷小说| 日日干天天| 亚洲自拍天堂| 影音先锋男人AV资源站| 五月丁香六月婷婷亚洲视频| 99热伊人综合| 婷婷另类小说| 一区二区乱码视频| 啪啪91| 激情综合5| 天天日天天舔| 色青青视频| 超碰在线免费观看日韩| 久久婷婷综合五月趴| 99热在线观看99| 玖玖99免费视频| 丁香大香蕉| 久久九九综合| 五月激情黄色小说| 丁香五月婷婷色偷偷| 五月婷婷与六月丁香图片激情| 五月丁香综合激情| 99噜噜噜在线播放| 亚洲丁香婷婷丁香五月天激情| 色婷婷丁香社综合| 色五月av| 中文乱子伦视频| 琪琪色热色色| 丁香五月性| 丁香五月六月婷婷综合激情| 日本人人干| 欧美性爱五月天| 日韩欧美骚货| 天天爽天天日| 五月丁香六月综合情在线观看| 婷婷五月色| 五月婷婷激情综合视频| 日韩ac不卡无码| 丁香九月婷婷| 激情丁香五月婷婷| 青青热久久综合| 婷婷丁香黄色| 五月婷婷六月丁香在线| 激情开心五月天婷婷基地丁香社区| WWW久| 婷婷五月激情中文字幕| 国产日韩欧美| 99热这里只有精品亚洲| 538任你爽视频不一样的| 色五月av| 影音先锋天天日| 五月天色婷好好| 91操在线| 少妇被躁爽到高潮无码文| 精a品a| 五月丁香色婷婷婷基地| 婷婷五月中文字幕| 亚洲九N| 91丨九色丨高潮丰满日本| 久久这里都是精品视频| 国产67194| 五月婷九月| 婷婷天天色| 少妇人妻综合色6699| 国产韩日亚洲美州欧亚综合在线| 久久99jiu9| 99热综合| 超碰人人操人人干| 可以直接看的AV| 丁香五月婷婷久久久| 丁香六月青青草| 99在线精品免费视频| WWW.17C亚洲精品| 插插插色综合网| 嫩模aV在线| 久热精品免费视频4| 性爱视频99| 99色精品| 五月天精品综合| 免费精品66| 91色噜噜狠狠狠狠色综合| 美女久久婷婷| 国产亚洲精品久久久久久郑州 | 日日夜夜狠狠| 超碰99在线观看| 伊人婷婷五月天| 日日狠夜夜狠| 深爱开心激情网| 亚洲综合在线伊人婷| 午夜丁香六月婷| 精品九九九久| 综合狠久久| 欧美人与性动交CCOO| 五月婷婷婷| 99riAv1国产在线观看| www、色色色| 九九爱看亚洲| 亚洲婷婷婷| 久久成人性爱| 热99热| Xx色综合| site:wpjngj.com| 中文字幕在线观看视频www| 久久久jd| 91超碰在线播放| enecarbon-materials.com污K127封锁请涟系@wip1688 | 亚洲精品V天堂中文字幕| 欧美人妻一区二区| 丁香五月手机在线| 天天做天天爱| 婷婷五月天成人| 色噜噜婷婷| 99精品久久| 99热亚洲| 国产真人做爰视频免费| 婷婷香草网| 国产精品扒开腿做爽爽爽A片唱戏| 五月激情小说| 熟女人妻一区二区三区免费看| 色五月激情网| 色爽干| 婷婷色色亚洲| 色99xx| 精品九九婷婷| 六月婷婷综合激情| 99小视频| 伊人干练久| 久久成人综合五月天| 五月丁香亚洲综合网| 开心色播色五月婷婷| 色天天综合成人网| 日韩三级高清无码| 九九AV在线| 丁香六月婷婷色XXXXX| 99热这里都是精品| ..真实国产乱子伦毛片| 69精品无码一区二区三区| 色五月婷婷天堂| 性爱五月丁香| 人人爽人人射-美女久久久久久久久久-成人AV| 久热久色| 亚洲综合婷婷五月天| 五月婷婷五月天激情网| 久久五月网| 激情五月激情综合网| 久草热久草在线视频| 久久婷婷丁香花综合网| 激情婷婷九月| 丁香五月综合激情久久潮喷| 99久久精品网| 99人妻碰碰碰久久久久视| 亚洲色啪| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 福利视频在线播放| 成人国产网站| 久久婷婷五月天激情新地址| 天天色天天噜| 性热视频99精品| 久激情网| 伊久大香蕉| 婷婷色五月天色| 久久婷婷视频| 色操b| 99热新网址| 91丨九色丨东北熟女| 超碰天堂网| 婷婷爱爱蜜臀天天操| 色婷婷色五月另类综合| 亚城区在线| 丁香九月激情| 五月综合激情网| 五月丁香久人妻中文| 六月色色综合| 影音先锋91| 粉嫩AV久久一区二区三区| 99热99| 国产成人精品123区免费视频| 啪啪啪丁香五月| 久热9| av五月天婷婷丁香| 大香网伊人久久综合| 色色色色色日韩午夜激情 | 99亚洲色色| 69精品人人人人| 99精品丰满| 婷婷在线观看五月天在线视频| 五月激情婷婷六月| 色激情五月天| 久久综合综合久久| 欧美成人色婷婷| 亚洲五月天激情| 六月丁香色色色| 99热骚货| 天天天天干| www.婷婷.com| 俺也去在线视频| 噜噜噜久久| 丁香玖玖视频大全| 精品国产va久久久| 成人国产欧美大片一区| 久久xx| 狠狠狠狠狠| 久久久aaa| 丁香五月精品视频| 久久综合五月天| 丁香六月欧美| 人人草人人爱手机视频看看| 91中文在线| 特黄三级片| 天天色噜| 伊人久久大香线蕉综合网站| 丁香婷婷成人在线播放| 精品一二三区久久AAA片| 天天肏夜夜肏| 日本美女上人| 国产精品美女| 伊人五月天| 伦乱人妻| 色丁香五月天婷婷| 婷婷五月综合社区在线| 天天操夜夜操| 黄网在线播放| 日韩欧美一级大黄网站| 色婷婷中文在线| 日本丁香五月| 九色激情网| 六月丁香五月天| 99爱在线| www.色色色色| av超碰在线| 五月天成人小说网| 99在线综合视频| 色狠狠色噜噜AV天堂五区消防| 色婷婷香蕉在线| 婷婷精品在线| 色啪久 | 五月婷婷六月色| 一级无码作爱片| 丁香五月天啪啪a日本| 色综合婷婷99| 五月天伊人网| 99综合自拍| 色欲天天综合| 亚洲婷婷在线播放十月| 久久丁香五月婷婷| 婷婷五月天,影院| 国产伦亲子伦亲子视频观看| 丁香五月综合在线播放 | 狠狠做深爱婷婷久久综合一区| 成人av中文字幕| 日本欧美在线| 99爱免费在线观看| 玖玖爱伊人网| 五月婷婷丁香俺日污视频| 天天综合91入口| 丁香五月人妻| 色色网站免费在线视频| 三人荫蒂添的好舒服A片| 五月色天五月色| 99热最新国内| 亚洲综合另类| 中文网AV| 91精品91久久久久77777| 色婷视频| 九九色色网| 亚洲精品色色| 99久久婷婷精品视频| 丁香色婷婷| 99在线69| 国产成人精品一区二三区熟女在线| A色色| 九九偷拍网| 婷婷色网| 亚洲色vA| 在线资源av-超碰中文在线-成人AV| 97热视频| 9999热这里只有精品| 中文字幕亚洲-区久久99婷婷| 超碰chaompinm| 日韩成人五月天| 操比激情五月| 久久ww| 激情亚洲婷婷六月| 激情宗合 激情宗合| 激情五月婷婷| 无月播播激情在线观看视频| 综合婷婷久久| 五月婷婷 婷婷五月 一区二区 久久久 | www色综合| 色99日韩| 五月九九综合| 97操碰| 五月丁香六月婷婷综合网缴情| 大香蕉婷婷久久| 精品人妻一区二区三区在| 五月丁香婷婷深深爱| 色色永久| 91肏| 影音先锋 萱萱| 日韩欧美一级大黄网站| 亚洲亚洲亚洲AAAAAA| 国产超碰在线| 丁香香蕉婷婷| 丰满少妇猛烈A片免费看观看| 色99在线| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 日本va欧美va欧美va| 99在线观看亚洲| 91久久免费| 亚洲精品一区无码A片| 一区二区乱码视频| 天天爽夜夜爽| 婷婷五月天视| 99热青青草| 九九在线91| 99∨VTV| 色五月婷婷综合| 79色色| 六月综和久久| 色色五月婷婷| 欧美激情中文字幕| 伊人大香蕉爱聚| 久热无码| 日韩啪啪视频| 五月天色婷婷综合| 伊人久久丁香婷婷六月五月综合| VA日本视频| 日本婷婷在线| 日韩成人电影Av| 婷婷色色综合| 国产成人精品一区二三区熟女在线| 99热这里只有精品1025| 饮料下药迷倒漂亮女同事强干| 五月综合六月丁| 79亚洲精品少妇| 丁香色色色| 亚州操操| 99久久玖玖| 五月婷av| 中文字幕不卡网站| 2018夜夜草| 成人美女网| 色婷婷成人做爰A片免费看网站| 婷婷色五月丁香六月欧美啪| 99热这里只有精品1025| 人人九色| 曰曰久久| 国产9色在线/日韩| 成人在线综合| 欧美性猛交99久久久99| 九九热在线视频| www激情| 国产午夜一区二区三区| 五月婷婷综合精品| 色99热| 婷婷五点亚洲| 丁香六月伊人| 激情五月丁香综合网站 | 久久思思热| 天天插天天干| 五月综合激情| 久久新地址| 五月天综合在线| 色婷五月| 九九热精品| www.99热| 屁股翘好撅高迎合跪趴| 丁香88AV五月婷婷| 免费日本aⅴ中文字幕 | 五月天婷婷婷| 久久久久人妻精品| 丁香五月影视| 九九热这里| 激情五月综合| 91精品激情9| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 色婷成人狠干| 超碰在线视屏| 丁香婷婷综合精品六月初| 九九九九九无码| 亚洲激情视频网| 开心五月激情婷婷| 99色在线视频| 五月婷亚洲精品AV天堂| 无码色色色| 99噜噜噜在线播放| www.91AV.com| 激情99热| 日本丁香五月婷婷| 五月丁香欧美在线| 欧美激情VA永久在线播放| 黄网免费看| 日日操天天操| 9999热在线| 在线观看av网站| 99色综合网| 久99久热只有精品国产99| 五月天婷婷视频| 天天日天天操心| www.夜夜操| 大操人妻| 99在线视频精品| www.夜夜夜| 六月丁香VA| 久热 91| 99re久久| 91九色在线观看免费| 影音先锋噜一噜| 97AV人人插人人操| 午夜一区| 婷婷五月天亚洲图片| 超碰国产在线观看| 五月丁香综合激情| 99情色五月天| 99视频精品全部免费看| 五月综合影院| 成人AV在线电影| 人人人操 超碰| 91久久五月天| 秋霞电影理论| 激情床戏| 五月丁香亭亭电影久久| 国产精品99久久久久久猫咪| 色五月丁香激情视频| 免费亚洲婷婷| 99精品视频在线观看| 超碰不卡在线| 婷婷五月开心中文字幕在线| 婷婷涩涩五月天| 丰满少妇猛烈A片免费看观看| 日本3级片一区2区| 手机AVAV天堂看网| 色综合色五月| 99re久热| 五月天六月天| 久久激情五月天| 婷婷伊人激情婷婷| 99爱视频| 大香蕉伊人丁香五月| 97人人操在线| 色婷婷六月丁香综合欲精品| 国产激情综合五月久久| 高清国产AV| 日韩AAA| 九九久久网| 1234操逼网| 激情婷婷丁香色五月综合| 狠狠色狠狠| 婷婷日韩| 中文aV网| 中文激情网| 9|无码久久久久久| 五月天伊人网| 嫩草免费视频| 婷久看人爽| 色婷婷电影网| 狼人婷婷综合| 欧美成人色婷婷| 大香焦啪啪啪| 少妇日麻屄| 色999;丁香五月| 天堂亚洲 在线| 五月天婷婷永久免费视频| 伊人久久婷婷| 久久久中文| 成人网站免费在线播放| 免费成片在线观看| 婷婷五月天免费视频在线观看| 午夜性做爰电影| 五月婷婷免费在线| 国产熟女一区二区三区五月婷| 性爱五月婷婷| 亚洲成人人人操| www天堂99| 99.色| 熟妇人妻中文字幕无码老熟妇| 欧美A级网站| 97在线碰| 日日干天天射| 97香蕉碰碰人妻国产欧美| 黑人无码一区| 久久人妻精品| 激情婷婷九月| 婷婷成人五月天| 超碰人人99| 久久丁香综合| 久久久27操| 婷婷色在线播放| 97黑人精品区| 99在线精品视频| 亚卅毛片| 婷婷五月天综合网| 婷婷五月丁香综合| 五月天激情电影| 五月大香蕉| 日日操日日撸| 五月婷婷六月丁| 久久99精品视频| 婷婷五月天av网| 五月婷久久| 婷婷五月天 偷拍| 狠狠CAO日日穞夜夜穞AV| 九九九午夜影院成人| 青草青草视频2免费观看| 襙比视频| 人人操婷婷| 五月婷婷综合社区| 99热在线精品播放| 五月色综合| 精品人妻伦一二三区久久| 婷婷丁香成人在线视频| 精品国产AV色一区二区深夜久久 | 中文激情网| 人色五月天婷婷| 久久ri精品| www.夜夜操.com| 五月婷婷色播| 欧美这里只有精品| oVV4WIB3vFi8D| 丁香五月激情啪啪综合| 这里只有精品视频免费在线观看| 97性视频| 可以看的av| 青青草日本亚洲| 97性高潮久久久| 99九九99九九九视频精彩| 六月99天天婷婷激情综合| 少妇大叫太大太粗太爽了A片| 日本激情五月天‘| 久久久久久久久久久44| 五月天色色色| 丁香色啪综合| www色哟哟| 久久五月网| 另类图片五月天婷婷| 欧美精品狠狠色丁香婷婷| www.9797国产| se色99| 日韩三级视频一区二区| 26uuu精品一区二区| 婷婷亚洲五| 91av成人| 日本久久天堂| 天天拍久久| 9月色婷婷| 九月婷婷综合| 欧美激情综合五月色丁香| 7777激情基地| 色香蕉婷婷| 丁香五月综合婷婷| 色五月激情综合| 色婷婷色| 成人片黄网站色大片免费毛片| 婷婷播5月| 99热精品在线观看| 丁香婷婷浪潮AV久久综合| www.婷婷六月天| 九九热区一区二区三区| 久热99热| 电影91久久久| caop在线视频| 99热精品6| 天天久久狠狠色综合| 东京热五月婷婷| 丁香六月啪啪啪| 欧美Va在线| 丁香五月综合| 97人人操人人拍| 日日撸夜夜操| 5五月综合网亚洲| 日韩五月天婷婷| 丁香色成人| 99色嘟嘟精品网站| 日日噜噜夜夜狠狠久久丁香五月| 五月婷婷二月丁香| 久热这里只有精品性色AV| 成人在线视频一区| 91色色五月天| 91精品综合久久久久久五月丁香| 思思热精品在线观看| 玖玖在线| 天天操夜夜爽| 五月天合网| 综合激情在线| 婷婷94s| 被强行糟蹋的女人A片| 色婷婷免费视频| 久久五月天激情| 婷婷丁香六月激情综合| 五月丁香性爱| 婷婷色片| 五月婷婷激情在线| 亚洲精品无AMM毛片| 色5月婷婷| 99re6久热只有精品6在线直播| 激情五月五月五月婷婷| 热中文字幕| 激情五月婷| 91精品啪| 人人操婷婷| 亚洲三A| 亚洲超碰在线| 99热偷拍| 91大神操美女| 欧洲色色| 婷婷五月天开心网| 色婷婷五月天小说| 五月婷婷插一插| 欧美色骚婷婷五月天| 久99热| 中文字幕视频在线播放| 欧美日韩成人在线网| 亚洲韩国日产综合AV| 成人在线观看精品| 成人午夜视频精品一区| 五月婷婷深深爱| 夜夜操夜夜操| 九九热在线99| 91久久99久久91熟女精品| av在线免费网站| 激情综合一| 久久色亭亭五月天| 色综合伊人网| 可以免费观看的av| 天天操综合网| 丁香五月天亚洲视频| 激情五月天电影| 这里只有精品免费观看网占| 婷婷激情五月综合丁香社| 99综合99| 久久婷婷五月综合啪| 久久欧洲综合网| 色操b| 啄木鸟丝袜美女福利视频| 日操夜撸| 色色性爱视频| 99热综合色图| 五月天久久婷婷| 在线婷婷| 亚洲色色色| 免费无码毛片一区二区A片| 中文字幕日产A片在线看| 国产成人精品一区二三区熟女在线| 日本乱子人伦在线视频| 99热国品| 91re色综合视频| 婷婷日本色| 婷婷综合一二三| 色综合久久88色综合天天99| 超碰人人在线| 五月天天天操天天爽夜夜操| 欧美综合激情五月丁香| 激情WWW| 婷婷中文字暮| 五月丁香啪啪啪| 五月丁香久久网| 特级西西4444www无码| 婷婷九月| 伊人爱爱日本| 都市激情亚洲| 精品久久99码| 色婷婷婷婷成人网| 天堂AV在线看| 五月丁香影院| AV九九| 国产精品久久久爽爽爽麻豆色哟哟| 国产AV成人精品| 色九九九九| 丁香五月情色| 五月婷婷无码专区| 色婷婷五月天久久| 色婷婷影视| 国产精产国品一二三在观看| 亚洲电影中文字幕| 9福利性视频欧美| 99热成人永久免费| 天天天日天天天干| 色欲婷婷五月天丁香| 久久久免费精彩视频| 一本大道伊人AV久久综合| 婷婷性爱综合| 99精品在线观看| 新激情五月天色播| 丁香五月最新地址| 久99热| 七七色综合| 久久 婷婷 五月天| 午夜理论片最新午夜理论剧| 涩婷婷五月天| 玖玖热视频| 五月丁香婷婷欧美色图视频五月丁香777电影 | 久婷五月| 五月婷婷丁香六月在线| 色五月婷婷操逼| 国产特级毛片AAAAAAA高清| 色约约视频一区二区三区四区五区| 99自拍视频网站| 婷婷综合网伊人| 天天色粽合合合合合合合| 色99色| 五月天婷综合| 综合五月亭亭9| 色五月天电影| 国产精品国产成人国产三级| 91丨九色熟女丨首页| 丁香五月综合高清在线| 色深爱五月| 日本九九九九| 好色婷婷| 狠狠色综合777| 日韩精品一品二区三区的使用体验| 六月丁丁香| 丁香六月啪啪啪| 久久激情五月婷婷| 婷婷成人基地| 99热最新精品| 99九九久久| 久久92| 婷婷六月激情| 久久婷综| 久久婷婷五月天激情| 狠狠ri| www,五月天com| 日本丁香五月| 日本色色影片| 亚洲AV日韩无码| www,av好吊操| 精品一区二区三区免费毛片爱 | 97超碰综合| www.亚洲激情| 婷婷色五月激情| 激情久久肏屄视频| 婷婷瑟瑟五月天| 依人大香蕉| 91碰| 久热只有精品| 亚洲成人av中文| 性色播| 国产操碰| 久久五月天网| 深爱五月激情综合| 97九色视频| 色色丁香色五月| 激情激情激情网| www.狠狠| 丁香五月综合激情久久潮喷| 色视五月天婷婷| 婷婷俺去也| 五月天伊人综合| 亚洲久久激情| 激情五月最新网址| 五月噜噜| 亚洲综合激情五月久久| 91日本在线观看| 五月婷婷偷拍| 六月大香蕉| 丁香五月婷综合网| 大香蕉视频99| 狠婷婷五月| 不卡在线视频| 婷婷深爱五月天在线| 丁香六月啪| 九九综合视频在线观看| av大香蕉| 久久99久久99精品免观看粉| WWW.17C亚洲精品| 久热伊人9| 五月丁香六月婷婷啪啪| 91色色色视频| 色五月婷婷影院| 色噜噜狠狠色综合日日| 97超级免费无码| 五月丁香六月婷婷综合伊人| 婷婷伊人网| 丁香五月天偷拍| 九九热在线精品| 99re66热这里只有精品| 99精品国产热久久91色欲| 欧美色久| 99精品自拍| 九九热九九| AV五月丁香| 狠狠色噜噜狠狠狠狠综合| 亚洲综合视频网| 日韩人妻在线观看| 影视av久久久噜噜噜噜噜三级| 色五月欧美| 91色噜噜狠狠狠狠色综合| 热五月婷婷| 亚洲精品亚洲人成人网| 99er6免费视频热播| 99操碰| 婷婷色5月天在线。| 五月香婷婷| 九九一综合精品| 91狼友视频网页更新| 成人精品亚洲性爱| 综合 蜜月 婷婷| 99九无网码| www九九热| 天天爽天天爽| 婷婷久久婷婷色五月| 久久久婷| 婷婷婷五月天最新综合你懂的| 黄色网址五月婷婷| 丁香色婷婷| 国产综合视频婷婷| 五月丁香成人网| 色99亚洲| 91五月花丁香| 国产精品视频| 猫咪伊人久久| 97人人操人人干| 五月天开心婷婷久久| 亚洲天堂AV综合网| 色综合久久中文| www.超碰| 狠狠色综合五月人人| 丁香六月欧美| 99免费综合网| 伊人久久婷婷| 激情合网婷婷| 五月丁香久久色| 777色色色| 欧美综合五月丁香六月婷| 五月天丁香看婷婷| 92久久| 开心日韩丁香婷婷五月| 久热婷婷在线视频| 日本精品99网站| 丁香婷婷人妻综合网| 亚洲视频久久| 可以免费观看的av| 欧美激情凹凸丁香网| 婷婷天堂视频| 中字幕视频在线永久在线观看免费| 噜噜色噜噜网| 五月婷婷xxx| 婷婷五月天亚洲综合网| 天天色天天操天天射| 日本女天天爽| 一区中文字幕电影| 天天日夜夜爽| 激情婷婷丁香色情五月天| 国内久久亭亭| 国产SUV精品一区二区883| 久久小视频|