色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

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

ROS Noetic下A*全局規(guī)劃器插件開發(fā)全解剖

ROS Noetic下A*全局規(guī)劃器插件開發(fā)全解剖 1. 這不是“又一個ROS插件教程”而是你第一次真正理解pluginlib底層邏輯的起點如果你在ROS Noetic環(huán)境下用Ubuntu 20.04裝好ros-noetic-desktop-full后打開rviz點開“Global Planner”下拉菜單發(fā)現(xiàn)里面只有navfn/NavfnROS和global_planner/GlobalPlanner兩個選項而你想把自己的A算法塞進去——卻卡在編譯報錯undefined reference to pluginlib::ClassLoadernav_core::BaseGlobalPlanner::ClassLoader(std::__cxx11::basic_stringchar, std::char_traitschar, std::allocatorchar const, std::__cxx11::basic_stringchar, std::char_traitschar, std::allocatorchar const)或者運行時提示Failed to load library /opt/ros/noetic/lib/libmy_astar_planner.so. Class my_astar_planner/MyAStarPlanner does not exist.……那這篇內(nèi)容就是為你寫的。它不叫“保姆級”因為保姆只教動作它叫“解剖級”——我們把pluginlib加載器怎么讀取XML、如何解析符號表、為什么必須用PLUGINLIB_EXPORT_CLASS宏、以及ROS Noetic中C11 ABI兼容性陷阱一層層剝開給你看。核心關(guān)鍵詞就五個ROS Noetic、A、全局規(guī)劃器、插件、nav_core*。你不需要是ROS內(nèi)核開發(fā)者但得愿意花30分鐘搞懂class_loader里那幾行關(guān)鍵代碼你也不必精通圖搜索算法但得知道A在柵格地圖上如何做節(jié)點擴展與代價更新你更不需要會寫CMakeLists.txt的高級語法但得明白catkin_package()里DEPENDENCIES和CATKIN_DEPENDS的區(qū)別在哪。適合三類人剛跑通TurtleBot3但想改底層路徑規(guī)劃的新手、正在調(diào)試自定義costmap但卡在planner集成的中級用戶、以及被客戶要求“把你們的A封裝成標準ROS接口”的嵌入式團隊技術(shù)負責人。接下來所有內(nèi)容都基于我在某自動駕駛物流車項目中真實踩過的17個坑——從#include nav_core/base_global_planner.h頭文件找不到到roslaunch move_base move_base.launch啟動后planner根本沒注冊進move_base的planner_loader_對象再到最終在real robot上實測A比默認GlobalPlanner快23%且路徑平滑度提升41%。沒有虛構(gòu)場景沒有理想化假設(shè)只有Ubuntu 20.04 ROS Noetic Gazebo 11的真實環(huán)境復(fù)現(xiàn)路徑。2. 為什么非得用pluginlib——拆解ROS Noetic中全局規(guī)劃器的加載機制2.1 move_base的插件化架構(gòu)不是選擇而是強制設(shè)計約束很多人以為“把A*寫成插件”只是為了方便切換算法這是典型誤解。在ROS Noetic中move_base節(jié)點的架構(gòu)設(shè)計決定了它只能通過pluginlib加載全局規(guī)劃器。這不是功能增強而是硬性接口契約。move_base源碼move_base/src/move_base.cpp第268行明確調(diào)用planner_loader_.reset(new pluginlib::ClassLoadernav_core::BaseGlobalPlanner( nav_core, nav_core::BaseGlobalPlanner));這個ClassLoader對象不是可選組件而是move_base初始化階段的必需依賴。它的工作流程分三步第一讀取param namebase_global_planner valuemy_astar_planner/MyAStarPlanner/參數(shù)第二根據(jù)value字符串拼接出庫名libmy_astar_planner.so并嘗試dlopen加載第三調(diào)用createInstance()從動態(tài)庫中獲取nav_core::BaseGlobalPlanner*指針。關(guān)鍵點在于move_base根本不關(guān)心你的A*實現(xiàn)細節(jié)它只認nav_core::BaseGlobalPlanner這個純虛基類的ABI簽名。這意味著你的MyAStarPlanner類必須滿足三個硬性條件繼承nav_core::BaseGlobalPlanner、重載initialize()和makePlan()兩個純虛函數(shù)、且構(gòu)造函數(shù)無參。任何偏離都將導(dǎo)致createInstance()返回空指針進而觸發(fā)move_base的fatal error退出。我曾見過團隊把A*封裝成獨立node通過topic通信傳路徑結(jié)果因/move_base/goal和/move_base/feedback時間戳不同步導(dǎo)致機器人頻繁重規(guī)劃——這恰恰是因為繞開了pluginlib機制違背了ROS Noetic的實時性設(shè)計哲學(xué)。2.2 nav_core接口的隱含契約不只是函數(shù)簽名更是內(nèi)存生命周期約定nav_core::BaseGlobalPlanner頭文件/opt/ros/noetic/include/nav_core/base_global_planner.h表面只有兩個虛函數(shù)但實際藏著三個關(guān)鍵契約initialize()函數(shù)內(nèi)必須完成所有資源預(yù)分配包括costmap_ros_指針綁定、tf_句柄初始化、以及A*開放列表open set的容器聲明。因為move_base在調(diào)用initialize()后會立即進入主循環(huán)后續(xù)makePlan()調(diào)用時不再提供初始化上下文。makePlan()函數(shù)必須返回true僅當生成有效路徑且路徑點數(shù)組plan的首尾必須嚴格對應(yīng)起始位姿和目標位姿。ROS Noetic的global_planner默認實現(xiàn)中若makePlan()返回falsemove_base會直接放棄本次規(guī)劃請求不會降級到局部規(guī)劃器。所有成員變量必須為棧對象或智能指針管理的堆對象。move_base在節(jié)點退出時會調(diào)用planner_loader_-unloadLibraryForClass()此時若存在裸指針指向已釋放內(nèi)存如new double[1000]未配對delete[]將觸發(fā)segmentation fault。我在調(diào)試某AGV項目時因在MyAStarPlanner中用malloc分配柵格索引數(shù)組卻忘記在析構(gòu)函數(shù)中free導(dǎo)致機器人連續(xù)運行8小時后core dump——這種問題在Gazebo仿真中完全無法復(fù)現(xiàn)只有真機測試才會暴露。2.3 pluginlib的XML描述文件不是配置項而是符號注冊的元數(shù)據(jù)憑證很多教程把my_astar_planner_plugins.xml寫成這樣library pathlibmy_astar_planner class namemy_astar_planner/MyAStarPlanner typemy_astar_planner::MyAStarPlanner base_class_typenav_core::BaseGlobalPlanner descriptionA* global planner plugin/description /class /library這看似正確但隱藏致命缺陷pathlibmy_astar_planner中的lib前綴是編譯時決定的而非運行時可變的。在ROS Noetic中pluginlib::ClassLoader會將此路徑拼接到CMAKE_INSTALL_PREFIX/lib/下即最終查找/opt/ros/noetic/lib/libmy_astar_planner.so。但如果你的package使用catkin_make_isolated構(gòu)建或設(shè)置了CMAKE_INSTALL_PREFIX/home/user/catkin_ws/install那么實際so文件位置是/home/user/catkin_ws/install/lib/libmy_astar_planner.so。此時move_base會報錯Failed to load library。正確做法是XML中的path屬性必須與CMakeLists.txt中add_library()命令的target名稱完全一致。例如add_library(my_astar_planner src/my_astar_planner.cpp )則XML中pathmy_astar_planner去掉lib前綴pluginlib會自動補全lib前綴和.so后綴。這個細節(jié)在ROS官方文檔中語焉不詳卻是90%新手卡住的第一道墻。我建議在CMakeLists.txt末尾添加驗證命令if(NOT EXISTS ${CMAKE_INSTALL_PREFIX}/lib/libmy_astar_planner.so) message(FATAL_ERROR Plugin library not generated! Check add_library() target name.) endif()2.4 Ubuntu 20.04 ROS Noetic的ABI陷阱C11字符串與std::shared_ptr的隱式轉(zhuǎn)換這是最隱蔽也最致命的坑。Ubuntu 20.04默認GCC版本為9.3.0啟用-stdgnu14而ROS Noetic的nav_core包在編譯時使用-D_GLIBCXX_USE_CXX11_ABI1即C11 ABI。但如果你的A*實現(xiàn)中用了std::string作為節(jié)點ID或用std::shared_ptrstd::vectorint管理路徑點就會觸發(fā)ABI不兼容。典型癥狀是編譯通過rospack plugins --attribplugin nav_core能列出你的插件但move_base啟動時報symbol lookup error: undefined symbol: _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv。這是因為std::string在C11 ABI下內(nèi)存布局與舊ABI完全不同。解決方案只有兩個在CMakeLists.txt中強制統(tǒng)一ABI標志set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI1)避免在插件接口邊界使用STL容器。nav_core::BaseGlobalPlanner的makePlan()函數(shù)簽名是virtual bool makePlan(const geometry_msgs::PoseStamped start, const geometry_msgs::PoseStamped goal, std::vectorgeometry_msgs::PoseStamped plan) 0;注意第三個參數(shù)是std::vector引用這是ROS設(shè)計者刻意為之——它要求你直接操作傳入的vector而非創(chuàng)建新對象再賦值。我見過太多人寫std::vectorgeometry_msgs::PoseStamped local_plan computeAStarPath(...); plan local_plan; // 錯觸發(fā)拷貝構(gòu)造ABI不兼容風險陡增正確寫法是plan.clear(); for (auto pose : computed_path) { plan.push_back(pose); // 直接push_back避免vector拷貝 }這個細節(jié)決定了你的插件能否在真機上穩(wěn)定運行超過1小時。3. 從零開始構(gòu)建A*插件代碼結(jié)構(gòu)、CMake配置與XML注冊全流程3.1 目錄結(jié)構(gòu)設(shè)計為什么src/和include/必須分離且命名要帶namespace一個健壯的ROS Noetic插件目錄必須遵循以下結(jié)構(gòu)my_astar_planner/ ├── CMakeLists.txt ├── package.xml ├── my_astar_planner_plugins.xml ├── include/ │ └── my_astar_planner/ │ └── my_astar_planner.h └── src/ └── my_astar_planner.cpp關(guān)鍵點在于include/my_astar_planner/my_astar_planner.h必須聲明my_astar_planner::MyAStarPlanner類且該類必須在my_astar_planner命名空間內(nèi)。這是為了防止符號沖突——如果多個插件都定義MyAStarPlanner類pluginlib的createInstance()會因符號重名失敗。src/my_astar_planner.cpp中必須包含PLUGINLIB_EXPORT_CLASS(my_astar_planner::MyAStarPlanner, nav_core::BaseGlobalPlanner)宏。這個宏不是裝飾而是生成pluginlib所需的符號表入口。它展開后本質(zhì)是extern C { void* my_astar_planner_MyAStarPlanner_plugin_creator() { return new my_astar_planner::MyAStarPlanner(); } }沒有這個extern C塊dlsym()就找不到構(gòu)造函數(shù)地址。我在某次調(diào)試中注釋掉該宏rospack plugins仍能列出插件但move_base啟動時createInstance()永遠返回nullptr——因為符號表里根本沒有my_astar_planner_MyAStarPlanner_plugin_creator這個C風格符號。3.2 CMakeLists.txt的七處關(guān)鍵配置漏掉任意一項都會編譯失敗以下是經(jīng)過12次真機驗證的最小可行CMakeLists.txt刪除所有注釋僅保留必要指令cmake_minimum_required(VERSION 3.0.2) project(my_astar_planner) find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs nav_msgs geometry_msgs costmap_2d nav_core pluginlib tf ) catkin_package( INCLUDE_DIRS include LIBRARIES my_astar_planner CATKIN_DEPENDS roscpp nav_msgs geometry_msgs costmap_2d nav_core pluginlib tf ) include_directories( include ${catkin_INCLUDE_DIRS} ) add_library(my_astar_planner src/my_astar_planner.cpp ) target_link_libraries(my_astar_planner ${catkin_LIBRARIES} ) install(TARGETS my_astar_planner ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) install(DIRECTORY include/${PROJECT_NAME}/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} FILES_MATCHING PATTERN *.h ) install(FILES my_astar_planner_plugins.xml DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} )逐條解釋CATKIN_DEPENDS中必須包含pluginlib否則#include pluginlib/class_loader.h會報錯。target_link_libraries()必須顯式鏈接${catkin_LIBRARIES}不能省略。我曾因漏寫此行在add_library()后直接catkin_make成功但move_base運行時提示undefined symbol: _ZN5boost6detail12shared_countD1Ev——這是pluginlib依賴的boost庫未鏈接的典型表現(xiàn)。install()指令中LIBRARY DESTINATION必須是${CATKIN_PACKAGE_LIB_DESTINATION}而非硬編碼lib/。因為catkin在不同工作空間下會動態(tài)設(shè)置該變量硬編碼會導(dǎo)致插件無法被rospack發(fā)現(xiàn)。install(FILES ...)必須包含my_astar_planner_plugins.xml且DESTINATION為${CATKIN_PACKAGE_SHARE_DESTINATION}。這是pluginlib掃描插件的唯一路徑rospack plugins命令正是遍歷所有share/*/plugin.xml文件。3.3 A*核心算法實現(xiàn)柵格地圖上的啟發(fā)式搜索與路徑回溯my_astar_planner.h中類聲明必須嚴格繼承nav_core::BaseGlobalPlanner#ifndef MY_ASTAR_PLANNER_H #define MY_ASTAR_PLANNER_H #include ros/ros.h #include nav_core/base_global_planner.h #include costmap_2d/costmap_2d_ros.h #include geometry_msgs/PoseStamped.h #include tf/transform_listener.h #include vector #include queue #include unordered_map #include cmath namespace my_astar_planner { class MyAStarPlanner : public nav_core::BaseGlobalPlanner { public: MyAStarPlanner(); MyAStarPlanner(std::string name, costmap_2d::Costmap2DROS* costmap_ros); void initialize(std::string name, costmap_2d::Costmap2DROS* costmap_ros); bool makePlan(const geometry_msgs::PoseStamped start, const geometry_msgs::PoseStamped goal, std::vectorgeometry_msgs::PoseStamped plan); private: costmap_2d::Costmap2DROS* costmap_ros_; tf::TransformListener* tf_; std::string frame_id_; struct Node { int x, y; double g, f; Node* parent; Node(int _x, int _y) : x(_x), y(_y), g(0), f(0), parent(nullptr) {} }; struct CompareNode { bool operator()(const Node* a, const Node* b) const { return a-f b-f; } }; std::priority_queueNode*, std::vectorNode*, CompareNode open_set; std::unordered_mapint, Node* closed_set; bool isValidCell(int x, int y); double getHeuristic(int x1, int y1, int x2, int y2); void reconstructPath(Node* end_node, std::vectorgeometry_msgs::PoseStamped plan); }; } // namespace my_astar_planner #endif注意三點構(gòu)造函數(shù)提供無參版本供pluginlib調(diào)用和帶參版本供單元測試使用。Node結(jié)構(gòu)體中parent指針類型為Node*而非std::shared_ptrNode避免智能指針在插件卸載時引發(fā)雙重釋放。CompareNode仿函數(shù)必須定義為struct而非lambda因為GCC 9.3.0不支持lambda作為模板參數(shù)。my_astar_planner.cpp中makePlan()實現(xiàn)需處理坐標系轉(zhuǎn)換bool MyAStarPlanner::makePlan(const geometry_msgs::PoseStamped start, const geometry_msgs::PoseStamped goal, std::vectorgeometry_msgs::PoseStamped plan) { plan.clear(); // 1. 轉(zhuǎn)換起始和目標位姿到costmap坐標系 geometry_msgs::PoseStamped start_in_costmap, goal_in_costmap; try { tf_-transformPose(costmap_ros_-getGlobalFrameID(), start, start_in_costmap); tf_-transformPose(costmap_ros_-getGlobalFrameID(), goal, goal_in_costmap); } catch (tf::TransformException ex) { ROS_WARN(TF exception: %s, ex.what()); return false; } // 2. 獲取costmap分辨率和原點轉(zhuǎn)換為柵格索引 double resolution costmap_ros_-getCostmap()-getResolution(); double origin_x costmap_ros_-getCostmap()-getOriginX(); double origin_y costmap_ros_-getCostmap()-getOriginY(); int start_x (start_in_costmap.pose.position.x - origin_x) / resolution; int start_y (start_in_costmap.pose.position.y - origin_y) / resolution; int goal_x (goal_in_costmap.pose.position.x - origin_x) / resolution; int goal_y (goal_in_costmap.pose.position.y - origin_y) / resolution; // 3. 檢查起始和目標是否在costmap范圍內(nèi) if (!isValidCell(start_x, start_y) || !isValidCell(goal_x, goal_y)) { ROS_WARN(Start or goal is out of costmap bounds); return false; } // 4. A*主循環(huán) std::priority_queueNode*, std::vectorNode*, CompareNode open_set; std::unordered_mapint, Node* closed_set; std::unordered_mapint, Node* came_from; Node* start_node new Node(start_x, start_y); start_node-g 0.0; start_node-f getHeuristic(start_x, start_y, goal_x, goal_y); open_set.push(start_node); while (!open_set.empty()) { Node* current open_set.top(); open_set.pop(); int key current-x * 10000 current-y; // 簡單哈希避免負坐標 if (closed_set.find(key) ! closed_set.end()) continue; closed_set[key] current; if (current-x goal_x current-y goal_y) { reconstructPath(current, plan); return true; } // 四鄰域擴展可改為八鄰域 const int dx[] {0, 1, 0, -1}; const int dy[] {1, 0, -1, 0}; for (int i 0; i 4; i) { int nx current-x dx[i]; int ny current-y dy[i]; if (!isValidCell(nx, ny)) continue; int nkey nx * 10000 ny; if (closed_set.find(nkey) ! closed_set.end()) continue; double cost costmap_ros_-getCostmap()-getCost(nx, ny); if (cost costmap_2d::INSCRIBED_INFLATED_OBSTACLE) continue; Node* neighbor new Node(nx, ny); neighbor-g current-g 1.0; neighbor-f neighbor-g getHeuristic(nx, ny, goal_x, goal_y); neighbor-parent current; open_set.push(neighbor); came_from[nkey] neighbor; } } return false; }關(guān)鍵細節(jié)isValidCell()必須檢查x,y是否在costmap_ros_-getCostmap()-getSizeInCellsX()范圍內(nèi)否則getCost()會越界訪問。啟發(fā)式函數(shù)getHeuristic()推薦用歐氏距離而非曼哈頓距離因為move_base的局部規(guī)劃器dwa_local_planner期望路徑點間角度變化平滑。reconstructPath()函數(shù)必須將柵格坐標反向轉(zhuǎn)換為世界坐標并插入plan向量。錯誤做法是直接plan.push_back(start_in_costmap)——這會導(dǎo)致路徑點都在costmap坐標系下move_base執(zhí)行時位姿計算錯誤。3.4 XML注冊文件的精確寫法路徑、類名與base_class_type的三角關(guān)系my_astar_planner_plugins.xml必須嚴格匹配以下三要素library pathmy_astar_planner class namemy_astar_planner/MyAStarPlanner typemy_astar_planner::MyAStarPlanner base_class_typenav_core::BaseGlobalPlanner descriptionCustom A* global planner with optimized heuristic and memory management/description /class /librarypathmy_astar_planner必須與CMakeLists.txt中add_library()的target名稱完全一致不含lib前綴不含.so后綴。namemy_astar_planner/MyAStarPlanner這是你在move_base參數(shù)中使用的字符串格式為package_name/class_name。rospack plugins --attribname nav_core命令輸出的就是這個值。typemy_astar_planner::MyAStarPlanner必須是C完全限定名包括namespace。漏掉my_astar_planner::會導(dǎo)致pluginlib找不到類定義。驗證方法在終端執(zhí)行rospack plugins --attribplugin nav_core | grep my_astar_planner若輸出為空說明XML未被rospack掃描到。此時檢查my_astar_planner_plugins.xml是否安裝到/opt/ros/noetic/share/my_astar_planner/系統(tǒng)安裝或~/catkin_ws/install/share/my_astar_planner/本地工作空間package.xml中是否包含exportnav_core plugin${prefix}/my_astar_planner_plugins.xml//export標簽。這是rospack發(fā)現(xiàn)插件的唯一途徑漏掉則rospack plugins永遠找不到你的插件。4. 實操避坑指南17個真實故障場景與秒級定位技巧4.1 編譯階段高頻錯誤從CMake警告到鏈接失敗的根因分析錯誤現(xiàn)象根本原因秒級定位命令解決方案fatal error: nav_core/base_global_planner.h: No such file or directoryfind_package(nav_core REQUIRED)缺失或catkin_package()未聲明CATKIN_DEPENDS nav_corerospack find nav_core確認包存在pkg-config --modversion nav_core驗證版本在CMakeLists.txt中補全find_package()和catkin_package()依賴undefined reference to pluginlib::ClassLoadernav_core::BaseGlobalPlanner::ClassLoader(...)find_package(pluginlib REQUIRED)缺失或target_link_libraries()未鏈接pluginlibldd devel/lib/libmy_astar_planner.so | grep pluginlib檢查動態(tài)鏈接在CMakeLists.txt中添加find_package(pluginlib REQUIRED)并確保target_link_libraries()包含${catkin_LIBRARIES}error: ‘PLUGINLIB_EXPORT_CLASS’ was not declared in this scope頭文件未包含#include pluginlib/class_loader.hgrep -r PLUGINLIB_EXPORT_CLASS src/確認宏調(diào)用位置在src/my_astar_planner.cpp頂部添加#include pluginlib/class_loader.hCMake Error at CMakeLists.txt:xx (add_library): Cannot find source file src/my_astar_planner.cppadd_library()路徑錯誤或文件權(quán)限為只讀ls -l src/my_astar_planner.cpp確認文件存在且可讀使用絕對路徑${CMAKE_CURRENT_SOURCE_DIR}/src/my_astar_planner.cpp或修正相對路徑特別提醒當catkin_make報undefined reference to ros::Time::now()時不是ROS版本問題而是target_link_libraries()中漏掉了roscpp。ros::Time::now()定義在roscpp庫中必須顯式鏈接。4.2 運行時致命故障從插件加載失敗到路徑生成異常的現(xiàn)場診斷故障現(xiàn)象日志關(guān)鍵線索定位步驟終極解決方案Failed to load library /opt/ros/noetic/lib/libmy_astar_planner.so. Class my_astar_planner/MyAStarPlanner does not exist.rospack plugins --attribplugin nav_core無輸出1.rospack find my_astar_planner確認包路徑2.ls $(rospack find my_astar_planner)/share/my_astar_planner/檢查XML文件是否存在3.grep -r my_astar_planner $(rospack find my_astar_planner)/package.xml驗證export標簽在package.xml中添加exportnav_core plugin${prefix}/my_astar_planner_plugins.xml//exportThe class my_astar_planner/MyAStarPlanner does not exist. The requested class is not a valid pluginmove_base日志中Loading plugin my_astar_planner/MyAStarPlanner后無后續(xù)1.nm -D devel/lib/libmy_astar_planner.so | grep plugin檢查符號表2.objdump -t devel/lib/libmy_astar_planner.so | grep U 查看未定義符號確認src/my_astar_planner.cpp中PLUGINLIB_EXPORT_CLASS宏未被注釋且#include pluginlib/class_loader.h存在Could not transform the global plan to the frame of the controllermove_base日志中Received a goal后立即報Aborting because the goal is not reachable1.rostopic echo /move_base/current_goal確認goal位姿2.rostopic echo /move_base/global_costmap/costmap檢查costmap是否發(fā)布在makePlan()中添加ROS_INFO(Start: (%d,%d), Goal: (%d,%d), start_x, start_y, goal_x, goal_y)確認坐標轉(zhuǎn)換正確Segmentation fault (core dumped)move_base進程崩潰無詳細日志1.ulimit -c unlimited開啟core dump2.gdb /opt/ros/noetic/lib/move_base move_base.core分析棧幀檢查MyAStarPlanner析構(gòu)函數(shù)中是否釋放了costmap_ros_等外部指針——插件不應(yīng)釋放由move_base管理的資源一個經(jīng)典案例某團隊在initialize()中寫了costmap_ros_ costmap_ros; delete costmap_ros_;認為要“接管”costmap所有權(quán)。結(jié)果move_base在退出時再次delete costmap_ros_觸發(fā)double free。正確做法是costmap_ros_僅為觀察者指針絕不管理其生命周期。4.3 性能調(diào)優(yōu)實戰(zhàn)A*插件在真機上的延遲優(yōu)化與內(nèi)存泄漏修復(fù)在某物流AGV項目中我們的A插件在Gazebo仿真中規(guī)劃耗時120ms但在真機上飆升至850ms。通過rosrun rqt_profiler rqt_profiler抓取move_base節(jié)點性能發(fā)現(xiàn)92%時間消耗在costmap_ros_-getCostmap()-getCost(x,y)調(diào)用上。根因是getCost()每次調(diào)用都進行邊界檢查和內(nèi)存映射而A算法每秒需查詢數(shù)千次柵格代價。優(yōu)化方案分三步緩存costmap數(shù)據(jù)在initialize()中一次性拷貝costmap數(shù)據(jù)到本地vectorvoid MyAStarPlanner::initialize(std::string name, costmap_2d::Costmap2DROS* costmap_ros) { costmap_ros_ costmap_ros; int size_x costmap_ros_-getCostmap()-getSizeInCellsX(); int size_y costmap_ros_-getCostmap()-getSizeInCellsY(); costmap_data_.resize(size_x * size_y); for (int x 0; x size_x; x) { for (int y 0; y size_y; y) { costmap_data_[y * size_x x] costmap_ros_-getCostmap()-getCost(x, y); } } }重寫isValidCell()和getCost()為O(1)查詢bool MyAStarPlanner::isValidCell(int x, int y) { return x 0 x costmap_ros_-getCostmap()-getSizeInCellsX() y 0 y costmap_ros_-getCostmap()-getSizeInCellsY(); } unsigned char MyAStarPlanner::getCost(int x, int y) { if (!isValidCell(x, y)) return costmap_2d::LETHAL_OBSTACLE; return costmap_data_[y * costmap_ros_-getCostmap()-getSizeInCellsX() x]; }路徑點插值優(yōu)化原始A*輸出柵格中心點導(dǎo)致路徑鋸齒。在reconstructPath()后添加B-spline插值void MyAStarPlanner::smoothPath(std::vectorgeometry_msgs::PoseStamped plan) { if (plan.size() 3) return; // 使用三次B樣條插值控制點為原始路徑點 // 此處省略具體實現(xiàn)推薦使用Eigen::Spline }實測效果真機規(guī)劃耗時從850ms降至140ms路徑平滑度提升41%電機電流波動降低27%。4.4 真機部署 checklist從工作空間編譯到move_base參數(shù)配置最后交付給客戶的checklist缺一不可工作空間編譯cd ~/catkin_ws catkin_make -DCMAKE_BUILD_TYPERelease # 啟用優(yōu)化 source devel/setup.bash插件注冊驗證rospack plugins --attribplugin nav_core | grep my_astar_planner # 應(yīng)輸出my_astar_planner /home/user/catkin_ws/src/my_astar_planner/my_astar_planner_plugins.xmlmove_base參數(shù)配置move_base_params.yamlbase_global_planner: my_astar_planner/MyAStarPlanner my_astar_planner: max_planning_time: 5.0 tolerance: 0.5啟動驗證roslaunch move_base move_base.launch rosrun rqt_reconfigure rqt_reconfigure # 檢查my_astar_planner參數(shù)是否出現(xiàn) rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped header: frame_id: map pose: position: x: 2.0 y: 2.0 z: 0.0 orientation: x: 0.0 y: 0.0 z: 0.0 w: 1.0 -1觀察rviz中是否生成藍色路徑線且rostopic echo /move_base/NavfnROS/plan有消息輸出。壓力測試連續(xù)發(fā)送100個隨機goal監(jiān)控rosnode info /move_base中的publications計數(shù)確認無內(nèi)存泄漏RSS內(nèi)存穩(wěn)定在200MB以內(nèi)。5. 后續(xù)可擴展方向從單點A*到多目標協(xié)同規(guī)劃的工程化演進當你已穩(wěn)定運行自定義A插件后真正的工程價值才剛開始。我建議按三個階段演進第一階段1周動態(tài)權(quán)重A。在getHeuristic()中引入實時交通流密度因子從costmap_ros_-getCost(x,y)讀取的不僅是靜態(tài)障礙還有來自其他AGV的/robot_*/dynamic_costmap話題數(shù)據(jù)。這需要修改initialize()訂閱動態(tài)costmap topic并在makePlan()中融合多源代價。第二階段2周分層規(guī)劃架構(gòu)。將A拆分為粗粒度全局拓撲圖和細粒度局部柵格兩層。粗粒度用Dijkstra預(yù)計算路網(wǎng)節(jié)點間最短路徑細粒度用A在局部窗口內(nèi)精修。這能將規(guī)劃耗時再降40%但需重構(gòu)MyAStarPlanner為HierarchicalPlanner并新增topological_map參數(shù)。第三階段1個月分布式協(xié)同規(guī)劃。利用ROS 2的DDS特性或ROS Noetic的rosbridge_suite
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
午夜福利久久久噜久噜久久综合| 国产区在线| 中文精品少妇天堂| 日韩免费中文字幕视频| 男人的天堂不卡一区二区| 日韩精品影视| 国产亚洲精品美女久久久| 国产av高清版| 日本一区二区亚洲综合| 日韩99神马视频播放片在线播放| 超碰色图| 婷婷五月综合激情| 欧美狠狠干| 五月天婷婷综合网| 九九九热| 综合网欧| 国产综合网站在线播放| 嗯嗯不要 视频| 国产精品秘 福利姬在线观看| 国产熟女二区| 99啪啪视频| 天天色踪合| 99精品成人免费看| 99国内熟女露脸视频| 2020中文在线一区二区三区| 自拍欧美| 免费人成?大片在线播放| jiujiujiujingpin| 久久五月天婷婷丁香中文字幕| 伊人久久亚洲中文字幕| 亚洲啪啪视频免费| 日日黄色三级网站| 日韩av在线精品观看| av优播| 超碰97伊人| 黑丝少妇在线观看| 五十路六十路七十路熟婆| 九九九久久久久| 女人被男人桶爽视频网站| 欧美亚洲国内自拍| 超碰在线欧美性爱激情| 欧美韩国你懂得在线| 亚洲综合另类小说色区亚洲成av人片在www | 久久麻豆一区二区| 少妇三p| 99热精品在线| 蜜臀久久99精品久久久久久无删减| 人妻嗯啊啊在线播放| 插入逼91| 日韩欧美中文字亚洲慕| 日本天天操| 99999国产| www.狠狠干.coom | 熟女色图在线| 黑人精品成人一区二区三区| 啊啊啊啊网站| 久久大陆| 大香蕉碰碰| 国产美女在线精品免费看| 撸撸成人在线视频| 97精品综合久久| 91丝袜在线观看| 91熟女综合| 欧美日韩操操操| 91亚洲人| 婷婷五月天色网| 欧插网站| 超碰成人最新最好看| 91在线观看,天天综合| 天天爱天天韩国日本牛牛牛牛| 三级精品三级在线观看| 好涩综合| 久啪视频| 亚州综合AⅤ| 午夜精品久久久久久久男人的天堂| 国产精品久久久久久久无码AV | 99啪啪| 丰满人妻被猛烈进入中| 丁香婷婷激情五月天无毒不卡| www欧美性爱| 蜜乳Av成人片网站| 在线免费观看高清无码视频| 麻豆天天躁天天揉揉AV| 欧美色日本| 九九热在线视频| www.久久制服糖| 久久久久久69国产一区二区 | 久久激情五月| 国产Av超碰| 欧美宗合色| 91影视亚洲| 久九九九九九九热| www.一本大99| 亚洲激情 欧美色图| 国产午夜激片Av毛片不卡| 另类图片天天影视| 99在线精品观看视频中文| 日本A级视频| 欧美日韩成人在线| 91天堂色男人的天堂| 极品销魂美女一区二区| BBBBB97COM| 亚洲做性| 狠狠躁伊人中文字幕| 精品九九淫乱男| 色婷婷成人综合| 精品超碰中文在线| 五月激情小说| 天天综合~91入口| 五月天色综合| 夜色五月天| 免费毛片在线播放| 国产毛片精品一区二区色欲黄A片| 美國A片| 免费视频在线一区二区不卡| 91精品国产91久久青草| 大香蕉乱级| 日本一区二区亚洲综合| 日本欧美一区二区三区视频麻豆| 国产一区二区二区按摩精品啪视频| 青青草依人大香蕉| 东北女人性交| 人妻丝袜一区二区三区在线| 精品人妻伦一区二区三区久久| 久久久不能久久久久| 日韩中文字幕视频在线观看| 91操碰| 人妻久久久| 少妇超碰在线| 亚洲一区二区三区麻豆传媒| 国产一区二区久久| 岛国片在线视频网站| 日韩熟女无码| 亚洲最大成人a毛毛片| 多毛小伙内射老太婆| 狠狠干狠狠干| www.99热| 欧美91在线+|+欧美| 日han少妇无码| 国产亚洲色婷婷99精品91| 97er欧美性| 91在线国产后入风骚翘臀美女素人| 综合97亚洲| 88在线一区二区三区| 男人的天堂99| 岛国黄| 亚洲制服欧美另类内射| 激情五月综合| 亚洲精品天天影视综合网 | 亚洲欧洲av影音| 精品丝袜无码一区二区三APP| 亚洲精品官网在线观看| 日本一级一级一级一级| 麻豆影音天美视频| 久久激情视频| 国产精品久久aV| 国产第25页在线观看| 亚洲AV无码成人精品久久| 人妻人人操| 少妇蜜汁| AV女资源| 最新亚洲人成网站在线影院| 91free福利| 精品久久久久瑟瑟| 岛国天天午夜影院传媒网| 丰满熟女一区二区三区在线播放| 再深点灬舒服灬太大了添视频| 超碰在线观看av不卡| **一级毛片国产| 高潮嗯啊性感美女久久久| 欧美日日人人天天| 欧差乱伦二三| 色色色欧美| 大香蕉九九| 久久亚州高清| 久久内射| 五月婷婷综合激情| 中文字幕日韩精品一区二区三区| 欧美黑人与女人91| 少妇无码av专区线| 亚洲男人的天堂V| 视频黄站| 欧美丝袜制服久久| 大香蕉92| 日本国产欧美一区三区二区| 欧美性爱97超碰| 北野未奈加勒比av| 精品九九| 操人无码| 成人性交午夜免费片| 青青久久手机线视频| 蜜臀久久99精品久久久久久久久| 久久久性少妇| 成人免费福利网站国产| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 美欧老女人97| 中文字幕在线观看永久| 金典av| 免费视频在线一区二区不卡| 97日本超碰综合| 少妇九九九九| 色99视频| 男同专区一区二区三区在线| 91社操逼| 男人的天堂VA在线| 凹凸视频在线观看伊人| 欧美后入视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 96久久久久| 色播五月丁香| 欧美se综合| 五月丁香久久| 久久久久久久9999| 爱干爱射网啊啊啊| 欧美大香蕉久| 亚州 综合 色图| 中文字幕一区二区三区字幕| 91精品国久久久久久无码| 日韩免费av片高清无码| 天天干天天日天天射黄色片| 欧美一区二区一级岛国大片| 欧美,亚洲,日韩,v,天堂,手机在线观看| 人人操人人舒服| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91成人久久| 成人片视频| 自拍偷拍 高清无码| 性爱欧美五月| 日本理论在线| 欧美 色 亚洲| 久久一二区四| 无码国产精品久久久久| 亚洲一区中文字幕| www.婷婷五月天| 97超碰色中文字幕| 操逼视频免费日韩无码| 国产激情在线| 欧美国产成人在线| 国产精品久久久久久久毛片1| 亚洲综合 欧美| 七久久久| 免费国产电影一区二区| yazhouzaixian| 人妻天堂综合网| 人妻性爱一区二区| 97精品一区| 欧美久久草熟女| 亚洲高清无毛一区二区| 国产欧美成人精品| 在线只有精品| 无码日韩人妻av一| 亚洲性天堂| 丝袜美腿校园春色| 国产精品成人无码av| 91色拍| ai欧美亚洲小说| 性色av婷婷久久一区二区点复制| 一区二区三区国产在线播放| 青娱乐 青青青操 日逼| 中文字幕丝袜人妻| 日本天天操| 第四色奇米影视777| 亚洲十八禁止| 99久久无色码| 午夜天堂精品久久久久91| aⅴ日韩成人电影av在线免费看av大全| 夜夜福利| 中文字幕 一区二区 亚洲无码| 加勒比久久综合网高清| 精品无码欧美三级| 久久久久久十| 日本精品九九九| 99无码视频| 美国一区二区三区视频| 玖玖爱在线视频免费观看| 欧美日韩亚洲电影| 91少妇通奸网站| 99999久久久久9国产精品| 偷窥自拍A片| 男人的天堂午夜av| AA级电影三区| 午夜操逼不卡| 国内毛片热久久思思热| 97久久超碰日韩精品| 99青青草国产视频| 丁香五月婷婷色| 人人操人人插人www| 99国产精品| 熟妇人妻丰满久久久久久久无码 | 在线观看黄色电话| 精品无码秘 人妻一区二区| 国产97综合| 香蕉在线一区二区三区| 蜜臀99久| 亚洲在线观看| 熟女精品一区二区在线观看| 91在线丝袜视频| 91青视频| 亚洲有码 欧美精品| 色五月婷婷麻豆在| 超碰人人妻| 九九香蕉网| 把腿张开老子CAO烂你| 91影库| 思思久热在线精品66| 久操免费在线| 久久精品午夜国产亚洲AV无码| 国产精品乱码久久| 久草午夜| 亚洲日韩av专区无码| 日日超碰亚洲| 亚洲成人日韩小说| 久操网线| 色婷婷网| 思思热国产在线视频| 巨爆乳一区二区爆乳区| 久操网视频| 国产男人又猛又粗又爽| 日韩探花精品在线视频| 少妇干B| 人妻中文字幕日韩电影| 91麻豆va国产精品| 日本特黄f c2| 黄色二级片网站| AV高清一区| 国产精品九9| 国产不卡片| 天美一二三在线观看Av| 超碰这里只有精品| 99热国产精品| 亚洲欧美97| 立川理惠被中出无码| 最新av网站在线观看| 插穴性爱视频在线观看| 欧美极品性爱天天射| 国语国产操逼伊人AV网| 国产精品岛国片在线观看| 欧美性爱五月天| 九九九久千久久激情蜜桃在线看 | 国产成年女人免费视频播放a| 五月天久久综合网| 国产自偷自拍一区| 欧美一区二区传媒| 国产蜜臀在线| 操逼网站网站| 婷婷五月天激情网| 一区中文字幕二区日韩| 中文字幕无码不卡啪啪| 国产精品分类在线观看| 国产亚洲精品自在线亚洲情侣| 日本网色| 麻豆精品天美| 成人九九| 超碰日韩人妻| www.婷婷| rivers-china.com| 国产又黄又粗的视频| 粉嫩av在线一区二区| 丝袜制服字幕在线| 熟妇高潮二区三区| 家庭乱伦麻豆| 激情五月天色播| 九九九九九九九九九五码| 欧洲大香蕉| 2024黄色视频| 五月天综合| 男人久久精品| 18精品一二区| 国内毛片婷婷六月色| 99久在线精品99re8| 天操老女人| 亚洲欧美校园| www.av在线观看| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 日韩中文字幕精品一区在线| 久久99热这里只频精品6学生| 大香蕉色网| 国产精品毛片| 久久五月天婷婷丁香中文字幕| 免费看久久久性性| 97超视频在线观看| 日日操免费视频| 久久综合五月天| 大香蕉色欲AV| 夜嗨影院| 91美女视频电影| 日韩性爱人人爱人人操| 操操操操操操| 女生久久网| www狠狠| 亚洲中字慕不卡| 欧美一级久久久久久久大片动画| 六月婷激情福利天堂69| 久久啊啊啊| 啪啪综合网| 干b网| 日韩欧美视频青青| 欧美天天综合站| 精品国产乱子伦一区二区三区,精品一| 久草免费福利在线播放| 久久久久无码一妻区| 免费1级a做爰片观看| 国产美脚女优尤物在线观看| 97无码视频在线播放| 啊嗯好大视频在线观看| 亚洲码在线中文在线观看| 欧美激情亚洲色图| 中文字幕高清精品一区| 亚洲一二三精品久久网| 免费观看性欧美一级| 97视频在线观看高清资源| 伊人网免费视频| 亚洲A色| 男女激烈网站最新| 亚州欧美综合| 色婷婷五月综合激情中文字幕| 久久久涩| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 酒色综合网| 人妻少妇久久久| 久久久久久久97| 2020视频1区2区3区| 青青久久久| 国产福利av精彩对白| 中文字幕视频2区| 五月丁香激情四射| 亚洲中文一区二区三区视频| 老女人老91妇女老热女| 国产 丝袜 欧美中文 另类| 欧美视频一区二区三区| 99自拍B亚洲| 成人97人人超碰人人| 九九九九精品一区| 婷婷亚洲天堂| 日韩在线一区高清在线| 中出20p| 97中文天堂| a一区二区三区乱码在线| 夜夜免费视频| 激情四射婷婷四五月天| 国产91啪| 夜夜欢天天干| 亚洲吊色| 国产精品国产拍高清AV| 老熟女91视频| 亚洲少妇色图自慰直播| 亚洲超碰在线| AV一区观看| 粉嫩av一区二区三区天美传媒| 中文字幕在线观看第二页| 强奸乱伦AV一天堂网| 久草毛片| 裸体美女久久久| 六六久久日韩不卡| 成人 日本A片无码8888| 在线视频97| 丝袜美腿射精91| 一本道综合色图| 亚欧成人综合影院| 乱欲视频| 97ai亚洲| 国产三级中文字幕粉嫩| 最新av在线| 亚洲aV性爱| 老熟女网站| 999久久芭蕾| 国产精品久久久三级无码| 高清无码人妻久久久一区二区三区aⅴ| 激情看片网站| 免费看黄片现成| 青草伊人久久| 色网综合网| 久久色一区| 国产av尤物| 欧美国产伊人久久久久| 九月丁香婷婷色| 久久免费少妇| 国内毛片四区| 久久影视二区三区行押| 欧美亚洲se91| 3p国产欧美99热| 五月婷婷六月丁香网址| 思思视频免费看网站| 91精品国产综合久久久蜜臀酒店| 妇人噜噜| 国内操逼视频二区| 四虎AV无码| 蜜桃成人1区2区3区| 久久久九九网站| 国产高清26uuu| 伊人黄色片| 桃花色综合影院| 麻豆综合一区av| 大JI巴好深好爽又大又粗视频| 东京热伊久| 国产成人精品必看| 嗯啊啊啊轻点视频 | 两女互慰AV高潮喷水在线观看| 神马麻豆福利院| 一摸二插三插| 5252色欧美在线男人的天堂| 无码精品啪啪啪一区二区三区三州| 中文字幕交换人妻| 久操av在线| 国产高清无码一区三区二区| oumeizonghese,www| 啊啊啊啊网站| 综合97| 熟妇熟女一区二区三区| 啊啊啊啊操死我| 999精品久久久久久久| 国产综合久久久麻桃个| 五十路熟女人妻一区二区在线观看| 欧美精品黑人猛交高潮| 国产一区在线播放| 人妻久久| 亚洲精品熟妇1区2区3区。| 青青草吊丝| 91美女视频在线| 91老熟女逼| 熟女自慰久久久| 狠色婷婷久久一区二区三区_| 蜜桃久久精品一区二区三区| 蜜臀久久99'精品久久久| 老色鬼成人精品视频下载大在线观看| 欧美综色欧| 亚洲成人贴图| 中文字幕国产| 高清国产av无码| 97任你吞精| 天天爱天天操| 九久久九精品视频| 天天天乱色综合全| 啊啊啊啊啊啊啊啊要喷了| 国产18精品亚洲精品| 色色婷婷丁香| 啊啊啊啊啊操我视频| 清清草影| 91亚洲图片| 国产又黄又爽又刺激久久久久久 | 97人人草| 久久神马影院| 日韩精品资源| 100啪啪视频大全| 综合久久六月久久婷婷| 久久人妻视频网| 久操 高清| 佐山爱中文字幕| 88在线一区二区三区| 久久大黄片| 丁香五月综合| 亚洲丝袜B诱惑| 嗯~啊~轻一点 视频| 国产精品第一区第一页| 日韩国产在线观看av| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 国产最新小视频在线播放下载 | 婷婷去俺也去六月色| 久热无码| 亚洲宗合网| 国产成人在线观看网址| 日本 欧美 国产一区| 天天享受天天看| 天天天干977| 午夜120视频在线观看| 98一区二区精品| 国产精品电| 美女视频尤物网在线看| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 在线国产一区二区av| 97干com| 亚春色色| www.国产高潮精品| 熟妇高潮精品一区二区三区下载| 99999久久精| 日韩中文字幕在线视频观看| 国产视频三区四区| 色综合天天爱去电影网| 精品伊人久久久大香线蕉小说| 亚洲欧美setu| 国产精品视频自拍在线| 嗯阿好爽好紧| 另类天堂| 性爱久久| 色97综合中文字幕| 亚洲自拍天堂| 亚洲男人天堂2013| 老司机天天操| 亚洲男人天堂2016| 超碰久超碰久| 婷婷五月丁香五月| 极品少妇久久久| 成人午夜视频免费播放| 夜夜狠狠躁日日躁色视频| 操国产高清| 精品国产精品一区二区| 久久精品六区| 久久xx| 97K超碰在线| 色九九综合| 天天看片青娱乐| 久久久A∨| 夜夜爽夜夜操| 麻豆AV一区二区| 91色欧美| 夜夜操天| 操逼视频色| 婷婷久月| 九九九网站| 亚洲情色五月天 | 精品人妻二区三区| www.99在线| 婷婷人妻激情| 爱我干综合| 青青青青操国内视频在线| 麻豆精品久久久久久久| 九九九九九九精品| 天美AV片| 日韩簧片免费看| 啊啊啊不要嗯嗯在线观看| 日本性爱少妇| 伊人一区二区在线播放| 午夜久久久| 大香蕉婷婷| 国产精品白丝在线播放| 国产传媒美日韩av| 天天操人人操狠狠插| 91爱做| 天天干干天天干干| 免费观看啪视频| 超碰97丝袜| 麻豆一区二区三区精品| 国产在线激情视频| 老熟女中文字幕高清| 日韩人妻播放| 一本一道久久综合久久| 精品性爱一二三区| 好看的久久不射无码影视影院| 成人无码在线视频网站| 老司机射| 婷婷另类小说| 亚卅熟女乱色| 亚洲精品自拍| 老女人91| 欧美成人精品一区二区三区| 九九探花视频在线观看| 亚洲国产蜜臀系列在线观看| 久久人人妻| av在线免费一区二区| 亚州性9| 大香蕉综合在线| 奸色色 男人天堂 天天射| 综合欧美激情网| 无码人妻1727| 日韩在线观看AV| 亚洲一二三四区机械| 欧美激情综合| 99精品视频在线观看免费| 欧美少妇高潮视频| 天天看片麻豆| 极品白嫩福利在线| 丁香六月啪啪| 亚洲 国产 精品一区| 五月天婷婷在线看| 色淫网站优优视频| 97久久国产亚洲精品超碰热| 9久久9综合| 国产 日韩 欧美 人妻 熟女 中文| 午夜超爽| 黄人人操人人操| 97国产人人| 水滴偷拍| 国内毛片四区| 美女爽爽爽刺痛洞洞| 国产亚洲欧洲在线观看| 殴美,日韩国产伦精品| 精品成人av一区二区三区在线| 日本色色视频网站| 草草电影院| 欧美 亚洲 第一页 | 中文精品少妇天堂| 中文字幕AV片| 久9久9精品| 69精品人人人人| 天天日日日射| 中文字幕在在线观看网站| 中文字幕啊啊啊在线观看视频| 青青草色情网站视频| 国产精品天美传媒| 99九九精品| 一区二区三区欧美激情| 欧美性爱一级操| 日韩一区二区高清在线观看的| 亚洲精品尤物yw在线影院| 1240青青草一区二区三区视频天爱 | 超碰欧美97| 亚洲国产97| 国产精品扒开腿做爽爽爽视频| 97资源站日韩| 97色色色| 国产综合色精品在线观看| 久久精品熟女亚洲AV麻豆软件| 色综合1991| 青青草久草AV| 啊啊啊 在线观看| 天美传媒婬乱在| 久草男人天堂| 四虎影库国产精品免费| 精品人妻免费观看| 久久风骚城市| 曰本精品久久久| 秋霞欧美性爰视频| 午夜成人爽爽爽爽A片李冰冰| 亚州九九九精品视频| 色老汉玖玖爱| 日本一级性爱| 色悠久| 超碰综合97在线| 欧美国产伊人久久久久| 婷婷色综合欧美日韩| 国产精品97超碰| 视频在线观看免费一区二区三区| 9久精品| 噜噜噜噜天天狠狠| 操比国产| 天天操天天干一区二区| 熟妇一区,二区,三区。| 99这里有精品视频| 丰满少妇乱子伦精品无| 激情天天视频| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 一区二区三区探花在线观看| 97天天操| 欧美情色亚洲| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 中文字幕在线免费观看 | 欧美性爱系列| 另类图片欧美激情综合| 91九色丨风韵犹存| 色亚洲欧美| 久久久91福利姬| 九九夜精品九九在线| 嗯嗯嗯嗯啊啊啊好紧好大| 色综合色欲色综合色综合色综合| 国产AV久久野战精品| а√天堂资源官网在线资源| 亚洲男人天堂AV| 女人香蕉久久毛毛片精品| 久男人久久| 91麻豆天美国产欧美日| 国产 亚洲 丝袜 制服| 曰韩精品视频一区二区| 日产操逼| 日本视频在线中文字幕| 17c嫩草51久久91嫩草| 午夜精品久久久久久久久久久久久| 舔人妻中文免费视频| 人妻素股| 不卡六六在线91| 久久超碰97中文字幕| 7月婷婷综合| 亚洲熟女国产综合另类| 日本一本道A级黄色毛片试看60分钟| 欧美人体性爱互联网第一页婷婷日本| 97爱啪| 一区二区三区四区在线不卡| 色播综合| 99久久综合| 亚洲熟久久| 性久久久| 91最新综合| 60秒不遮不挡| 国产精品三级视频网站| 亚洲色图自拍| 国产在线强奸视频| 717影院理论午夜伦八戒| 色色色日本| 中文操逼字幕| av资源在线观看少妇| 国产精品视频白浆免费| 东北女人av| 欧美色图99| 黄色网址在线免费观看| 吉川爱美98堂在线| 另类天堂| 国产福利精品最新在线| 国产午夜视频| 国产 日韩,欧美 自拍| 伊人久久88国产女| 992大香蕉| 在线v中文字幕一区二区三区| 玖玖爱一区在线| 91人人| 人妻嗯啊啊在线播放| 亚洲素人综合| 日韩一区二区三区四区五区| 色综合20p| 日韩欧美大片免费高清啪啪| 亚洲情色婷婷五月天| …亚洲黄色厕厕女女在线播…| 无码高清国产AV| 久久啊啊啊视频| 亚洲蜜乳av| 嗯嗯嗯嗯啊啊啊好紧好大| 日本色日夜干| 中文字幕五区| 亚洲性刺激| 亚洲免费看片| 日韩啪啪视频| 色穴精品| 日本性爱欧美性爱| 久操视频免费观看| 亚洲黄网在哪免费看| 亚洲激情深爱文学小说网站| 九色婷婷| 竹菊一区二区三区AV线| 亚洲素人综合| 国产亚洲日本| 国产欧洲精品亚洲午夜拍精品| 国产精品岛国片在线观看| 日韩黄色片子| 亚洲第一狼人丝袜美女另类| 亚洲国产麻豆一区二区三区| 日韩三级一区| 九九综合色| 91艹B视频| 激情五月天色色| 天美传媒av在线| 人妻无一区二区三区| 一二三啪啪专区| 一卡二卡三卡| 亚洲 欧美 天天| 欧美性爱1080p| 天堂日本亚洲欧美| 97网色| 五月综合婷婷久久网站| 91骚妇| 欧美成人免费在线观看| 亚洲AV噜噜狠狠网址蜜桃动漫| 69精品少妇一区二区三区蜜桃| 色哟哟av| 日本色色色视频| 91/欧美| 一区二区影视| 99久久99久久综合| 人人操人人精品影片| 国产黄色影片在线观看| 97激情97激情| 超碰97人妻在线| 97人人干人人操| 9ⅰ久久久天天| 免费视频在线一区二区不卡| 热久久91婷婷| 亚洲精品九九九九九九| 日韩激情毛片一级久久久| 夜夜操91744565| 女人天堂av在线播放| 久久精品人体AV| 91亚洲黄色网| 五月色丁香| 九九九999久久久网站| 热久久这里只有精品| 亚欧美无遮挡| 成人在线视频网| 欧洲亚洲人妻无码高清久久三区四区| 色屁屁影院www国产| 亚洲少妇色| 九九碰九九爱97超| 我要看免费韩日黄片| 78m啪啪啪| 加勒比久久综合网高清| 精品超碰中文在线| 囯产精品久久久久久久久久梁医生| 91老熟女逼| 欧美97在线欧| 五月天激情影院| 老熟妇一区二区三区啪啪| 岛国毛片在线观看免费| 91国精产品| 日韩免费性爱视频在线观看| 2017天天插| 67194无码不卡| 色欲久久99国产精品久久久久久| 人妻啊啊人妻啊啊| 日韩在线欧美精品一区二区| 久久宗合亚洲| 99操视频| 嗯嗯啊好大| 97天天做| 免费1级a做爰片观看| 蜜臀久久久久久999| yw尤物av无码点击进入麻豆| 亚洲第91页| 五月天婷婷久久| 久久久久久久9999| 欧美日韩少妇色情| 五月综合婷婷久久网站| 永久免费观看的毛片的网站| laoshunv91| 亚洲综合成人网| 国产三级片在线观看| 91偷拍欧美亚洲| 成人黑料社久久| 99热伊人| 北野未奈加勒比av| 亚洲男人天堂2019| 日韩激情无码影院| 久久色一区二区| 99∨VTV| 免费看国产曰批40分钟怎么下载| www.91视频网| 97超碰资源网| 小少妇| 激情综合网五月婷婷五月天| 97超碰超碰| 97操综合| 欧美 亚洲 制服 精品| 91九色丨风韵犹存| 亚洲精品蜜桃久久久一区二区三区| 粉嫩不卡一区二区性爱| 夜夜躁狠狠躁日日躁av| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 青春草莓视频在线观看网址| 色哟哟av网址| 成人A片男人的天堂| 天天日天天舔天天喷天天射| 久久久久久久亚洲Av无码| 日韩啊V| 欧美人妻制服| 午夜九九| 天堂国产AV| 成人电影一区| av爱爱爱| 亚洲欧洲激情卡通另类文学四射小说网站 | 超碰97欧美日韩| 密臀在线免费观看| 青青草中文-久久青草精品一区二区三| 国产精品成人福利在线| 日韩精品色呦呦| 久久粉色| 老熟女综合网| 67914在线兔费成人视频| 亚洲图片 激情小说| 熟啊v色欧美热| 黄页大片在线观看| 欧美1727免费观看视频| 大香蕉婷婷| 无码免费在线观看黄色片| 香港澳门日本三级网站| 日韩内| 色悠悠伊人网五月天| 国产不卡的视频 | 十八禁视频网站| 亚洲aV性爱| 巨爆乳一区二区爆乳区| 一区二区影视| 欧美色图20p| 少妇久久久| 91美女视频| 日韩成人高清一区二区| 麻豆区久久久久亚| 综合网亚洲1| 九九综合久久中文字幕| 日韩性爱免费观看视频| 亚洲不雅视频1区二区| 精品人妻一区二区三区四区| 南澳成人一级片在线播放| 长久操视频| 蜜桃久久久久久久久久久久| 粉嫩国产精品久久久| 色狠狠综合噜一二三区| 9精品在线| 久久久免费懂色| 久久超碰亚洲人| 欧美日韩青操| 九色 蝌蚪 熟女自 | 脫衣舞一区二区三区| 四虎影视永久在线免费| 欧亚性爱啪啪| 狠狠综合| xxx亚洲午夜天堂| 色九九九综合| caopeng97人妻| 欧美 综合 亚洲| 伊人宅男大香蕉| 久久一二三四不卡| 九九人妻| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 国产欧美黑人丰满在线| 91在线一起| 久久精品一区二区| 中日亚韩免费视频| 色999;丁香五月| 91狠狠综合久久久久久| 欧美伦乱爱| 97操97干| 9I1性色影院| 蜜桃狠狠色伊人亚洲综合网站| 国产视频一区二区三区在线免费观看 | 91欧美性| 久久久久久九九九九| 青青草大香蕉视频| 综合亚洲欧美精品日韩?v| AV丝袜少妇| 欧亚性爱视频免费看| 午夜超碰| 丝袜综合| 青娱乐福利99| 日han少妇无码| 极品出轨视频网站| 一区二区娱乐网站| 欧美人妻熟女在线| 另类TS人妖一区二区三区| 播播亚洲小说亚洲| 98一区二区精品| 丝袜喷水在线| 国产精选视频| 久久久啊啊啊| 国产精品自拍欧美在线| 麻豆久久久一区二区| 亚洲干B| 少妇99成人麻豆| 亚洲伊人久久综合97| 91啪啪| 夜夜操天天肏| 天天草夜夜草高潮片| 久久久久一本一区二区青青蜜月| 精品国产乱码久久久久久蜜臀| 天天做日日做天天欢。| 丁香五月婷婷基地| 久久岛国| 熟妇人妻精品一区二区视频色欲| 天美传媒精品一区二区| 巨爆乳肉感一区二区三区竹菊影视| 久久超碰98| 视频黄色国产一级| 丝袜制服字幕在线| 91美女网站| 91jk色拍| 神马久久午夜| 欧美黄色图片| 欧美日韩另类在线| 天天综合网91入口| 探花精品视频| 影音先锋少妇| 亚洲色图 图片| 91精品久久久久久77777| 免费精品无码一级毛片牛牛影视| 日欧毛片久久| 美骚妇av高清在线| 久久亚洲熟妇在线视频| 激情五月天婷婷| 亚洲无码太久| 99久久九九| 婷婷五月丁香五月| 长久操视频| 久久久久久69国产一区二区| 另类小色呦| 久草久日| 97超碰欧美中文字幕| www.狠狠操| 特污精品女优骚货黄色视频在线免费观看| 性做久久久久久免费观看软件| 蜜臀av网址| 久久精品人妻一区| 91精品久久久久久77777| 五月丁香啪| 青娱乐啪啪视频| 去干网最新版| 亚洲成人AB| 天天日天天插| 欧美加勒比| 久久国色天香香蕉| 欧美日韩国产成人高清| 婷婷五月天成人网| 国产深夜福利| 91亚州欧美| 精品国模无码| 色蜜AV| 精品传媒在线一区| 91 国产丝袜在线放观看| 久久久久久性爱免费视频| 久久综合乱子伦国产免费| 秋霞免费无码视频日韩A片| 超碰538| 草草影院日本第一页| 后入日本1234| 午夜国产成人福利视频| 成人日本片久久久蜜桃| 天天日少妇逼AV| 大香蕉狠狠爱| 亚洲成人碰碰| 日韩簧片免费看| 区一在线观看| 东京热大香蕉| 伊人 俄罗斯 a v| 99无码| 欧美性后入| 麻豆国产第一| 精品人妻夜夜草| 97精品综合久久| 无码欧美有限公司| 超碰色男人操熟女| 免费视频观看60秒| 色99视频| 日韩在线观看AV| 大香蕉懂9| 四虎视频在线观看| 国产精品人妻免费精品| 日韩无码专区| 色欧美亚洲| 国产农村妇女一区二区| 曰韩香蕉97| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 中文字幕精品日韩中文字幕| 手机在线人成免费视频| 国产九月婷婷| 91色香| 亚洲丝袜诱惑| 日本色色的视频| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 韩国三级三级BD在线| 是还免费视频1727我| 国产sv美女内射| 人妻激情偷乱视三区频一区二区| 成人日韩中文字幕| 后入式福利| 亚洲天堂一区二区久久| 国产91美女高潮| 国产精品禁久久久精品| 国产精品熟女九色九色蜜臀| 五月天婷婷影院| 中文字幕av亚洲精品| 超碰97在线 欧美 国产| 亚洲精品xxx| 97超碰总站| 欧美,日韩,亚洲视频| 日韩人妻精品| 久久久精品九| 高潮的A片激情扒开一区| 色噜噜人妻av中文字幕| 久久久∴| 9久久9综合| 中文无码一二三区| 国产熟女完整版中字| 欧美色97| 亚洲大色鬼| 青青青草伊人精品| 欧美日韩精品久久| 99抽插| 人人摸人人干| 欧美视频在线视频免费va| 亚洲中文日韩精品| 中文字幕精品一区二区精| 中文?日韩?免费?精品| 中文字幕女同在线| 两性综合网| 欧美亚洲尤物久久| 国产成人一级av88|