日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Apollo源码分析:路径规划 (v5.5)

發(fā)布時(shí)間:2023/12/8 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apollo源码分析:路径规划 (v5.5) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Apollo開(kāi)源代碼鏈接:https://github.com/ApolloAuto/apollo

本文主要講解Apollo/modules/planning中的路徑規(guī)劃的架構(gòu)和算法。

第一章? ? 架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

一、架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

?

引自:https://github.com/ApolloAuto/apollo/blob/master/modules/planning/README_cn.md

?

Apollo FSM(finite state machine):一個(gè)有限狀態(tài)機(jī),與高清地圖確定車(chē)輛狀態(tài)給定其位置和路線(xiàn)。

----------------------------------------------------------------------------------------------------------------------------------------

Planning模塊整體框架:

1. 可執(zhí)行程序?qū)?#xff1a; Planning Dispatcher根據(jù)車(chē)輛的狀態(tài)和其他相關(guān)信息,調(diào)用合適的Planner。Planner實(shí)現(xiàn)獲取所需的上下文數(shù)據(jù)和其他信息,確定相應(yīng)的車(chē)輛意圖,執(zhí)行該意圖所需的規(guī)劃任務(wù)并生成規(guī)劃軌跡。它還將更新未來(lái)作業(yè)的上下文。根據(jù)工作模式不同將規(guī)劃任務(wù)分成不同的Planner模式(LatticePlanner\NaviPlanner\PublicRoadPlanner\RTKReplayPlanner)。

2.app層:每種Planner分成多個(gè)場(chǎng)景Scenario(BareIntersectionUnprotectedScenario、EmergencyPullOverScenario、EmergencyStopScenario、LaneFollowScenario、TestLearningModelScenario、NarrowStreetUTurnScenario、PullOverScenario、ValetParkingScenario、ParkAndGoScenario、StopSignUnprotectedScenario、TrafficLightProtectedScenario、TrafficLightUnprotectedLeftTurnScenario、TrafficLightUnprotectedRightTurnScenario、YieldSignScenario)-》每個(gè)場(chǎng)景又分解成多個(gè)Stage(例如ValetParkingScenario包含StageApproachingParkingSpot和StageParking兩個(gè)Stage)

3.lib層:每個(gè)Stage又分解成可執(zhí)行的Task(包括不同的Deciders & Optimizers庫(kù)),Task是Deciders & Optimizers :一組實(shí)現(xiàn)決策任務(wù)和各種優(yōu)化的無(wú)狀態(tài)庫(kù)。優(yōu)化器特別優(yōu)化車(chē)輛的軌跡和速度。決策者是基于規(guī)則的分類(lèi)決策者,他們建議何時(shí)換車(chē)道、何時(shí)停車(chē)、何時(shí)爬行(慢速行進(jìn))或爬行何時(shí)完成。

-------------------------------------------------------------------------------------------------------------------------------------------

Planning Context: 作業(yè)的上下文。

這種 可執(zhí)行程序?qū)?》app層 -》lib層 的三層分級(jí)架構(gòu)實(shí)質(zhì)與視覺(jué)感知模塊類(lèi)似。

本文路徑規(guī)劃模塊架構(gòu)與視覺(jué)感知模塊架構(gòu)( https://blog.csdn.net/Cxiazaiyu/article/details/106256330 區(qū)別:

?

視覺(jué)感知模塊中更像是自下而上地設(shè)計(jì)出這種三層結(jié)構(gòu)的,因此,我們也自下而上地講解了這個(gè)結(jié)構(gòu);

路徑規(guī)劃模塊更像是自上而下設(shè)計(jì)出這種架構(gòu)的,因此,我們也自上而下地講解這個(gè)結(jié)構(gòu)。

?

視覺(jué)感知模塊命名更直白。

路徑規(guī)劃模塊把接口分散放入各個(gè)層的模塊中了,沒(méi)有集中放在一個(gè)文件夾。

?

?1. 可執(zhí)行程序?qū)?/strong>--planning/planner

定義抽象基類(lèi)PlannerDispatcher,包含了Planner類(lèi)型的數(shù)據(jù)成員;

class PlannerDispatcher {public:virtual std::unique_ptr<Planner> DispatchPlanner() = 0;protected:common::util::Factory<PlannerType, Planner> planner_factory_; };

NaviPlannerDispatcher和OnLanePlannerDispatcher繼承自PlannerDispatcher,覆蓋了抽象基類(lèi)中的virtual std::unique_ptr<Planner> DispatchPlanner()方法,實(shí)現(xiàn)通過(guò)工廠模式創(chuàng)建配置文件中指定的Planner對(duì)象。

以?NaviPlannerDispatcher為例:

std::unique_ptr<Planner> NaviPlannerDispatcher::DispatchPlanner() {PlanningConfig planning_config;if (!apollo::cyber::common::GetProtoFromFile(FLAGS_planning_config_file,&planning_config)) {return nullptr;}auto planner_type = PlannerType::NAVI;if (planning_config.has_navigation_planning_config()) {planner_type = planning_config.navigation_planning_config().planner_type(0);}return planner_factory_.CreateObject(planner_type); }

Planner為定義的基類(lèi)接口,Planner中包含了scenario

class Planner { protected:scenario::ScenarioManager scenario_manager_;scenario::Scenario* scenario_ = nullptr; };

?? PlannerWithReferenceLine繼承自 Planner,做了一層抽象:

class PlannerWithReferenceLine : public Planner {};

根據(jù)不同的工作模式定義了4種Planner:

class LatticePlanner : public PlannerWithReferenceLine {};/*** @class NaviPlanner* @brief NaviPlanner is a planner based on real-time relative maps. It uses the* vehicle's FLU (Front-Left-Up) coordinate system to accomplish tasks such as* cruising, following, overtaking, nudging, changing lanes and stopping.* Note that NaviPlanner is only used in navigation mode (turn on navigation* mode by setting "FLAGS_use_navigation_mode" to "true") and do not use it in* standard mode.*/ class NaviPlanner : public PlannerWithReferenceLine {};/*** @class PublicRoadPlanner* @brief PublicRoadPlanner is an expectation maximization planner.*/class PublicRoadPlanner : public PlannerWithReferenceLine{};/*** @class RTKReplayPlanner* @brief RTKReplayPlanner is a derived class of Planner.* It reads a recorded trajectory from a trajectory file and* outputs proper segment of the trajectory according to vehicle* position.*/ class RTKReplayPlanner : public PlannerWithReferenceLine{};

2. app層--planning/scenarios

前面講到Planner中包含scenario::ScenarioManager scenario_manager_和scenario::Scenario* scenario_ = nullptr數(shù)據(jù)成員,

class Scenario {public:/*** Each scenario should define its own stages object's creation* scenario will call stage's Stage::Process function following a configured* order, The return value of Stage::Process function determines the* transition from one stage to another.*/virtual std::unique_ptr<Stage> CreateStage(const ScenarioConfig::StageConfig& stage_config) = 0;// Each scenario should define its own transfer condition, i.e., when it// should allow to transfer from other scenario to itself.virtual bool IsTransferable(const Scenario& other_scenario,const Frame& frame) {return true;}protected:std::unique_ptr<Stage> current_stage_; };

基于scenario派生出BareIntersectionUnprotectedScenario、EmergencyPullOverScenario、EmergencyStopScenario、LaneFollowScenario、TestLearningModelScenario、NarrowStreetUTurnScenario、PullOverScenario、ValetParkingScenario、ParkAndGoScenario、StopSignUnprotectedScenario、TrafficLightProtectedScenario、TrafficLightUnprotectedLeftTurnScenario、TrafficLightUnprotectedRightTurnScenario、YieldSignScenario;

?Scenario類(lèi)型中又包含Stage類(lèi)型的數(shù)據(jù)成員。一個(gè)Scenario分解成多個(gè)Stage,不同Stage可能是基于不同規(guī)劃算法實(shí)現(xiàn)的。例如:泊車(chē)場(chǎng)景中(Apollo/modules/planning/scenarios/park/valet_parking),劃分成了StageApproachingParkingSpot和StageParking兩個(gè)Stage。

?

Stage中包含Task類(lèi)型的數(shù)據(jù)成員,依次執(zhí)行Tasklilst上的Task,相當(dāng)于將多個(gè)lib串聯(lián)起來(lái)實(shí)現(xiàn)一定功能的app:

class Stage {public:/*** @brief Each stage does its business logic inside Process function.* If the stage want to transit to a different stage after finish,* it should set the type of 'next_stage_'.*/virtual StageStatus Process(const common::TrajectoryPoint& planning_init_point, Frame* frame) = 0;/*** @brief The sequence of tasks inside the stage. These tasks usually will be* executed in order.*/const std::vector<Task*>& TaskList() const { return task_list_; }protected:std::map<TaskConfig::TaskType, std::unique_ptr<Task>> tasks_;std::vector<Task*> task_list_; };

3. lib層--planning/tasks

決策任務(wù)deciders和各種優(yōu)化optimizers的無(wú)狀態(tài)庫(kù),都是基于Task基類(lèi)派生。

決策者是基于規(guī)則的分類(lèi)決策者,他們建議何時(shí)換車(chē)道、何時(shí)停車(chē)、何時(shí)爬行(慢速行進(jìn))或爬行何時(shí)完成。

class Decider : public Task {};

Decider又派生出:CreepDecider、LaneChangeDecider、OpenSpaceFallbackDecider、OpenSpacePreStopDecider、OpenSpaceRoiDecider、PathAssessmentDecider、PathBoundsDecider、PathDecider、PathLaneBorrowDecider、PathReuseDecider、RssDecider、RuleBasedStopDecider、SpeedBoundsDecider、SpeedLimitDecider、SpeedDecider、STBoundsDecider

優(yōu)化器特別優(yōu)化車(chē)輛的軌跡和速度。

class PathOptimizer : public Task {}; class SpeedOptimizer : public Task {}; class TrajectoryOptimizer : public Task{};

具體包括:

class OpenSpaceTrajectoryProvider : public TrajectoryOptimizer{}; class OpenSpaceTrajectoryPartition : public TrajectoryOptimizer{}; class PathTimeHeuristicOptimizer : public SpeedOptimizer {}; class PiecewiseJerkPathOptimizer : public PathOptimizer{}; class PiecewiseJerkSpeedNonlinearOptimizer : public SpeedOptimizer{}; class PiecewiseJerkSpeedOptimizer : public SpeedOptimizer{};

關(guān)于Apollo路徑規(guī)劃更詳細(xì)的資料可參考:https://blog.csdn.net/davidhopper/article/details/79176505?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

?

第二章??? 設(shè)計(jì)模式

一、簡(jiǎn)單工廠模式

Apollo/modules/planning/scenarios/scenario_manager.cc

std::unique_ptr<Scenario> ScenarioManager::CreateScenario(ScenarioConfig::ScenarioType scenario_type) {std::unique_ptr<Scenario> ptr;switch (scenario_type) {case ScenarioConfig::BARE_INTERSECTION_UNPROTECTED:ptr.reset(new scenario::bare_intersection::BareIntersectionUnprotectedScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::EMERGENCY_PULL_OVER:ptr.reset(new emergency_pull_over::EmergencyPullOverScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::EMERGENCY_STOP:ptr.reset(new emergency_stop::EmergencyStopScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::LANE_FOLLOW:ptr.reset(new lane_follow::LaneFollowScenario(config_map_[scenario_type],&scenario_context_));break;case ScenarioConfig::PARK_AND_GO:ptr.reset(new scenario::park_and_go::ParkAndGoScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::PULL_OVER:ptr.reset(new scenario::pull_over::PullOverScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::STOP_SIGN_UNPROTECTED:ptr.reset(new scenario::stop_sign::StopSignUnprotectedScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::TEST_LEARNING_MODEL:ptr.reset(new scenario::TestLearningModelScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::TRAFFIC_LIGHT_PROTECTED:ptr.reset(new scenario::traffic_light::TrafficLightProtectedScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::TRAFFIC_LIGHT_UNPROTECTED_LEFT_TURN:ptr.reset(new scenario::traffic_light::TrafficLightUnprotectedLeftTurnScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::TRAFFIC_LIGHT_UNPROTECTED_RIGHT_TURN:ptr.reset(new scenario::traffic_light::TrafficLightUnprotectedRightTurnScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::VALET_PARKING:ptr.reset(new scenario::valet_parking::ValetParkingScenario(config_map_[scenario_type], &scenario_context_));break;case ScenarioConfig::YIELD_SIGN:ptr.reset(new scenario::yield_sign::YieldSignScenario(config_map_[scenario_type], &scenario_context_));break;default:return nullptr;}if (ptr != nullptr) {ptr->Init();}return ptr;

與視覺(jué)感知模塊(https://blog.csdn.net/Cxiazaiyu/article/details/106256330)中使用的簡(jiǎn)單工廠模式類(lèi)似,這里不再贅述。

二、工廠方法模式(基于類(lèi)模板)

工廠方法模式:調(diào)用抽象工廠的接口,返回抽象產(chǎn)品的指針;根據(jù)輸入配置參數(shù)不同,在抽象工廠接口內(nèi)部調(diào)用相應(yīng)的具體工廠,生產(chǎn)相應(yīng)的具體產(chǎn)品,并將具體產(chǎn)品的指針綁定在抽象產(chǎn)品的指針上作為返回值。Register解決的就是實(shí)現(xiàn)“根據(jù)輸入配置參數(shù)不同,在抽象工廠接口內(nèi)部調(diào)用相應(yīng)的具體工廠”,方法是建立一個(gè)map,根據(jù)配置參數(shù)名稱(chēng)映射到相應(yīng)的具體工廠。

路徑規(guī)劃模塊(Apollo/modules/planning)主要使用基于類(lèi)模板實(shí)現(xiàn)工廠方法模式創(chuàng)建對(duì)象。包括在planner_dispatcher中創(chuàng)建planner對(duì)象(?Apollo/modules/planning/planner/planner_dispatcher.h中定義 common::util::Factory<PlannerType, Planner> planner_factory_;),在scenarios中創(chuàng)建stage對(duì)象(Apollo/modules/planning/scenarios/stop_sign/unprotected/stop_sign_unprotected_scenario.cc中定義的? static apollo::common::util::Factory<ScenarioConfig::StageType, Stage, Stage* (*)(const ScenarioConfig::StageConfig& stage_config)> s_stage_factory_;),在stage中創(chuàng)建task(Apollo/modules/planning/scenarios/stage.cc中調(diào)用auto ptr = TaskFactory::CreateTask(*config_map[task_type]);)。

2.1 UML結(jié)構(gòu)

參與者如下(這里以task_factory_一條應(yīng)用鏈路為例,planner_factory_的鏈路與之類(lèi)似):

參與者作用在Apollo中的示例
抽象工廠類(lèi)模板,創(chuàng)建對(duì)象調(diào)用的接口和Register的接口由Factory(factory.h中定義)實(shí)例化出的task_factory_
具體工廠實(shí)例化抽象工廠的類(lèi)模板,負(fù)責(zé)生產(chǎn)具體產(chǎn)品。將抽象工廠的指針綁定在具體工廠指針上,根據(jù)需要調(diào)用相應(yīng)的具體工廠以生產(chǎn)相應(yīng)的具體產(chǎn)品task_factory_中輸入的creator(這里是匿名函數(shù)的形式)
抽象產(chǎn)品抽象工廠返回類(lèi)型為抽象產(chǎn)品的指針Task
具體產(chǎn)品綁定在基類(lèi)(抽象產(chǎn)品)指針上的具體派生類(lèi)指針LaneChangeDecider、SpeedBoundsDecider、OpenSpaceRoiDecider (Decider和PathOptimizer是根據(jù)邏輯需要在抽象產(chǎn)品和具體產(chǎn)品之間抽象的一層)

注意:相比于一般只能創(chuàng)建一種抽象產(chǎn)品的工廠方法模式,這里設(shè)計(jì)的工廠方法模式還支持創(chuàng)建不同的抽象產(chǎn)品(基于類(lèi)模板,把抽象產(chǎn)品類(lèi)型作為參數(shù))。

?

2.2 實(shí)現(xiàn)方法

2.2.1 抽象工廠 & 抽象產(chǎn)品 、 map & 創(chuàng)建對(duì)象的接口

  • 類(lèi)模板的定義

Apollo/modules/common/util/factory.h 中Factory類(lèi)模板提供了注冊(cè)和創(chuàng)建對(duì)象的接口。

template <typename IdentifierType, class AbstractProduct, //IdentifierType為派生類(lèi)名的類(lèi)型(一般可設(shè)為string),AbstractProduct為基類(lèi)class ProductCreator = AbstractProduct *(*)(),class MapContainer = std::map<IdentifierType, ProductCreator>> class Factory {public:/*** @brief Registers the class given by the creator function, linking it to id.* Registration must happen prior to calling CreateObject.* @param id Identifier of the class being registered* @param creator Function returning a pointer to an instance of* the registered class* @return True if the key id is still available*/bool Register(const IdentifierType &id, ProductCreator creator) { //注冊(cè)的接口return producers_.insert(std::make_pair(id, creator)).second;}/*** @brief Creates and transfers membership of an object of type matching id.* Need to register id before CreateObject is called. May return nullptr* silently.* @param id The identifier of the class we which to instantiate* @param args the object construction arguments*/template <typename... Args>std::unique_ptr<AbstractProduct> CreateObjectOrNull(const IdentifierType &id, //創(chuàng)建對(duì)象的接口,返回的是抽象產(chǎn)品(基類(lèi))的指針Args &&... args) { auto id_iter = producers_.find(id);if (id_iter != producers_.end()) {return std::unique_ptr<AbstractProduct>((id_iter->second)(std::forward<Args>(args)...));}return nullptr;}/*** @brief Creates and transfers membership of an object of type matching id.* Need to register id before CreateObject is called.* @param id The identifier of the class we which to instantiate* @param args the object construction arguments*/template <typename... Args>std::unique_ptr<AbstractProduct> CreateObject(const IdentifierType &id, //創(chuàng)建對(duì)象的接口Args &&... args) {auto result = CreateObjectOrNull(id, std::forward<Args>(args)...);AERROR_IF(!result) << "Factory could not create Object of type : " << id;return result;}private:MapContainer producers_; };
  • map定義:

std::map<IdentifierType, ProductCreator>> producers_;

注冊(cè)就是將實(shí)際需要生產(chǎn)的具體產(chǎn)品的名稱(chēng)和具體工廠插入producers_,在需要?jiǎng)?chuàng)建對(duì)象時(shí)根據(jù)具體產(chǎn)品的名稱(chēng)索引到具體工廠,調(diào)用具體工廠生產(chǎn)具體產(chǎn)品,并將具體產(chǎn)品的指針綁定在抽象產(chǎn)品的指針上作為具體工廠的返回值。

?

  • 基于抽象工廠類(lèi)模板+抽象產(chǎn)品作為模板實(shí)參=》實(shí)例化出抽象工廠

在Apollo/modules/planning/tasks/task_factory.h中針對(duì)task基類(lèi)對(duì)工廠模板類(lèi)進(jìn)行了實(shí)例化,產(chǎn)生task_factory_抽象工廠,并使用TaskFactory類(lèi)對(duì)task_factory_抽象工廠做了一層封裝。

class TaskFactory {public:...private:static apollo::common::util::Factory<TaskConfig::TaskType, Task, Task *(*)(const TaskConfig &config),std::unordered_map<TaskConfig::TaskType, Task *(*)(const TaskConfig &config), std::hash<int>>> task_factory_;static std::unordered_map<TaskConfig::TaskType, TaskConfig, std::hash<int>>default_task_configs_; };

上文已經(jīng)講過(guò)Task為基類(lèi)(抽象產(chǎn)品),派生出各種Decider和Optimizer的具體產(chǎn)品。

2.2.2 具體工廠 & 具體產(chǎn)品、 Register(向map中添加元素)

//Register void TaskFactory::Init(const PlanningConfig& config) {task_factory_.Register(TaskConfig::LANE_CHANGE_DECIDER,[](const TaskConfig& config) -> Task* {return new LaneChangeDecider(config); //使用匿名函數(shù)定義具體工廠,具體工廠生產(chǎn)具體產(chǎn)品});task_factory_.Register(TaskConfig::SPEED_BOUNDS_PRIORI_DECIDER,[](const TaskConfig& config) -> Task* {return new SpeedBoundsDecider(config);});task_factory_.Register(TaskConfig::OPEN_SPACE_ROI_DECIDER,[](const TaskConfig& config) -> Task* {return new OpenSpaceRoiDecider(config);}); }std::unique_ptr<Task> TaskFactory::CreateTask(const TaskConfig& task_config) {TaskConfig merged_config;if (default_task_configs_.find(task_config.task_type()) !=default_task_configs_.end()) {merged_config = default_task_configs_[task_config.task_type()];}merged_config.MergeFrom(task_config);return task_factory_.CreateObject(task_config.task_type(), merged_config); }

特點(diǎn):在Apollo/modules/planning/tasks/task_factory.cc定義中對(duì)task的派生類(lèi)LaneChangeDecider、PATH_LANE_BORROW_DECIDER等集中進(jìn)行注冊(cè)。

2.2.3 Client使用示例:

?Apollo/modules/planning/scenarios/stage.cc中讀入配置參數(shù),調(diào)用抽象工廠的接口,依次生產(chǎn)具體產(chǎn)品:

for (int i = 0; i < config_.task_type_size(); ++i) {auto task_type = config_.task_type(i);ACHECK(config_map.find(task_type) != config_map.end())<< "Task: " << TaskConfig::TaskType_Name(task_type)<< " used but not configured";auto iter = tasks_.find(task_type);if (iter == tasks_.end()) {auto ptr = TaskFactory::CreateTask(*config_map[task_type]); //根據(jù)配置文件的參數(shù)動(dòng)態(tài)地創(chuàng)建具體產(chǎn)品task_list_.push_back(ptr.get());tasks_[task_type] = std::move(ptr);} else {task_list_.push_back(iter->second.get());}}

可參考:https://blog.csdn.net/davidhopper/article/details/79197075

?

下表總結(jié)對(duì)比基于類(lèi)模板實(shí)現(xiàn)工廠方法模式和視覺(jué)感知模塊(https://blog.csdn.net/Cxiazaiyu/article/details/106256330)使用的基于宏定義的工廠方法模式的異同

?基于類(lèi)模板的工廠方法實(shí)現(xiàn)基于宏定義的工廠方法實(shí)現(xiàn)

可適用不同基類(lèi)類(lèi)型的抽象工廠機(jī)理

工廠的類(lèi)模板只有一個(gè),利用類(lèi)模板機(jī)理,將抽象產(chǎn)品類(lèi)型(基類(lèi))作為模板參數(shù),根據(jù)抽象產(chǎn)品類(lèi)型實(shí)例化出不同的抽象工廠只有一個(gè)抽象工廠原型類(lèi),使用返回創(chuàng)建對(duì)象的接口使用Any類(lèi)型機(jī)理(支持代表任意類(lèi)型)保證可以返回任意抽象產(chǎn)品
實(shí)現(xiàn)方法的區(qū)別

直接將Register和CreateObject作為工廠類(lèi)模板的兩個(gè)方法,使用類(lèi)模板Factory實(shí)例化出的對(duì)象調(diào)用Register和CreateObject方法

?

?

?

CreateObject: 為每一個(gè)基類(lèi)宏展開(kāi)一個(gè)伴隨的Register類(lèi)(實(shí)際作用是CreateObject),該Register類(lèi)中給出創(chuàng)建對(duì)象的接口;

Register: 為每一個(gè)派生類(lèi)宏展開(kāi)一個(gè)伴隨的Register函數(shù),該Register函數(shù)建立配置參數(shù)名稱(chēng)到具體工廠的map。

?

Register的map的區(qū)別

(相同點(diǎn):都基于Register添加一個(gè)map,建立根據(jù)輸入配置文件參數(shù)映射到對(duì)應(yīng)的具體工廠)

無(wú)論是基于宏定義還是類(lèi)模板,在抽象工廠和具體工廠之間需要實(shí)現(xiàn)怎么基于抽象工廠的接口調(diào)用具體工廠(Register機(jī)理建立map后,使用map索引到真實(shí)綁定的具體工廠)。?

每一個(gè)基類(lèi)維護(hù)一個(gè)Local的map

(std::map<IdentifierType, ProductCreator>> producers_;),通過(guò)producers_[派生類(lèi)名]可以調(diào)用對(duì)應(yīng)的具體工廠;

不同基類(lèi)維護(hù)不同的Local map。

維護(hù)一個(gè)Global的map, (static std::map<string, std::map<std::string, ObjectFactory *>> factory_map;),通過(guò)factory_map[基類(lèi)名][派生類(lèi)名]可以調(diào)用對(duì)應(yīng)的具體工廠
具體工廠的實(shí)現(xiàn)機(jī)制直接使用匿名函數(shù)在派生類(lèi)中使用宏定義展開(kāi)成對(duì)應(yīng)的具體工廠類(lèi),繼承自抽象工廠類(lèi)
Register的方式區(qū)別

在factory的Register方法中集中Register,將派生類(lèi)名-具體工廠的對(duì)應(yīng)關(guān)系插入到map中;

?

在每個(gè)派生類(lèi)定義中分布式地Register,將[基類(lèi)名][派生類(lèi)名]-具體工廠的對(duì)應(yīng)關(guān)系插入到map中;

?

優(yōu)\缺點(diǎn)

優(yōu)點(diǎn):類(lèi)模板工廠定義簡(jiǎn)單

缺點(diǎn):如果需要添加新的基類(lèi),需要重新實(shí)例化factory;如果需要添加新的派生類(lèi),需要在實(shí)例化的factory中集中Register。

缺點(diǎn):定義相比類(lèi)模板實(shí)現(xiàn)略顯復(fù)雜

優(yōu)點(diǎn):如果需要增加新的基類(lèi)和派生類(lèi),不需要修改原來(lái)的工廠相關(guān)的代碼,僅需要在新添加的基類(lèi)和派生類(lèi)后調(diào)用宏定義。

?

總結(jié)

以上是生活随笔為你收集整理的Apollo源码分析:路径规划 (v5.5)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

黄色录像av | 97精产国品一二三产区在线 | 成人午夜电影网站 | 婷婷精品在线 | 97热视频| 欧美日韩3p | 在线黄色国产电影 | 一区二区激情视频 | 久久99精品国产 | 日韩专区在线观看 | 久久国产免费视频 | 国产资源网 | 天天干一干 | 久久婷五月 | 国产中文字幕国产 | 亚欧日韩成人h片 | 欧美精品一区二区在线播放 | 91手机视频 | 色天天综合久久久久综合片 | 深爱激情久久 | aaa日本高清在线播放免费观看 | 免费a网 | 亚洲视频一区二区三区在线观看 | 国产一区影院 | 久久久精品福利视频 | 在线观看黄色免费视频 | 人人干,人人爽 | 国产精品免费观看网站 | 亚洲涩涩色| 涩涩爱夜夜爱 | 亚洲在线黄色 | 四虎亚洲精品 | 日本精品久久久久中文字幕 | 成人在线视频网 | 成人国产精品久久久久久亚洲 | 成人毛片网 | 免费三级大片 | 日本激情动作片免费看 | 免费看黄的视频 | 久久久久影视 | 国产在线播放一区 | 国内外成人在线视频 | 制服丝袜欧美 | 欧美日韩一区二区免费在线观看 | 国产免费亚洲高清 | 国内精品视频在线 | 亚洲狠狠干 | 久久国产手机看片 | 欧美色婷婷 | 亚洲成av人片 | 国产精品久久久久av福利动漫 | 国产精品资源 | 九草在线视频 | 久久精彩免费视频 | 黄色大片国产 | 久久久国产精品网站 | 国产一区福利在线 | 成人免费看视频 | 麻豆视频免费网站 | 国产成人久久77777精品 | 亚洲亚洲精品在线观看 | 婷婷免费在线视频 | 亚洲成人av免费 | 久久久久久激情 | 日本久久免费视频 | 日本三级中文字幕在线观看 | 国内外成人在线 | 日韩精品一区二区免费视频 | 亚洲久草视频 | 久久99久国产精品黄毛片入口 | 欧美日高清视频 | 在线观看视频你懂 | 国产特级毛片aaaaaa毛片 | 欧美电影黄色 | 欧美综合国产 | 337p西西人体大胆瓣开下部 | 狠狠狠狠狠狠狠干 | 麻豆极品| 狠狠狠色狠狠色综合 | 精品免费观看 | 少妇做爰k8经典 | av电影一区| 日本久久久亚洲精品 | 免费看成人片 | 国产精品高清在线观看 | 国产艹b视频 | 欧洲精品在线视频 | 热久久国产精品 | 亚洲日本精品视频 | 精品美女久久久久 | 久久免费在线 | 国产精品久久久久久久久久白浆 | 成人久久18免费网站麻豆 | 日韩精品一区二 | 免费看久久 | 久久艹国产视频 | 久草在线费播放视频 | 久久精品国产美女 | 国产一区二区久久精品 | 久久久国产精品麻豆 | 最新99热| 午夜10000 | 人人搞人人干 | 久久伊人操 | 日本夜夜草视频网站 | 精品美女久久久久久免费 | 98精品国产自产在线观看 | 天天色综合三 | 99re6热在线精品视频 | 精品视频免费久久久看 | 国产精品久久久久久久久久久久午夜 | 黄色毛片网站在线观看 | 日韩av网站在线播放 | 探花国产在线 | 一区二区三区污 | 97狠狠干| 国产欧美精品xxxx另类 | 国产精品女同一区二区三区久久夜 | 国产精品99久久久久久小说 | 久久人人爽爽人人爽人人片av | 中文字幕免费一区 | 久久字幕 | 日韩欧美高清免费 | 午夜精品久久久久久 | www免费视频com━ | 激情综合啪啪 | 九九九热精品免费视频观看 | 最新av免费 | 国产片免费在线观看视频 | 丁香激情网| 夜夜操狠狠干 | 四虎永久视频 | 欧美日韩精品免费观看视频 | 欧美午夜性 | 欧美日韩伦理在线 | 国产亚洲人 | 日本性生活一级片 | 亚洲黄色成人网 | 在线黄色国产电影 | 狠狠狠狠狠狠狠干 | 成人一级在线观看 | 99视频这里有精品 | av在线免费在线 | 黄污网站在线 | 亚洲va天堂va欧美ⅴa在线 | 亚洲精品国产精品久久99 | 欧美日韩xxxxx | 亚洲理论电影 | 久久无码av一区二区三区电影网 | 2017狠狠干 | 国产一区精品在线观看 | 蜜桃视频在线视频 | 成年人在线免费看视频 | 在线小视频国产 | 91九色国产蝌蚪 | 成人免费观看视频网站 | 手机av在线网站 | 欧美一区二区三区免费观看 | 免费午夜在线视频 | 国产精品videoxxxx | 亚洲在线视频免费 | 黄色三级在线看 | 在线黄色毛片 | 992tv又爽又黄的免费视频 | 亚洲色图av | 国产精品久久久久久久久久99 | 国产区久久| 热精品| 国产精品嫩草影院99网站 | 国产美女精品视频 | 一区三区视频在线观看 | 日本激情动作片免费看 | av在线免费在线 | 亚洲精品乱码久久久久久蜜桃动漫 | 色婷婷综合久久久中文字幕 | 午夜国产一区二区 | 亚洲精品激情 | 亚洲精品福利在线观看 | 天天操天天操天天 | 欧美日韩一区二区在线 | 国语精品免费视频 | 日韩av一区二区三区四区 | 奇米7777狠狠狠琪琪视频 | 91精品久久久久久久99蜜桃 | 亚洲精品乱码白浆高清久久久久久 | 色五丁香 | 午夜精品福利在线 | 日本精品久久久久 | 久久久亚洲国产精品麻豆综合天堂 | 亚洲免费精品一区二区 | 日韩三级中文字幕 | 少妇高潮冒白浆 | 国产精品18久久久久久久久久久久 | 伊香蕉大综综综合久久啪 | 久久免费毛片 | 5月丁香婷婷综合 | 日韩中文字幕亚洲一区二区va在线 | 伊人久久五月天 | 国产麻豆成人传媒免费观看 | 九九视频免费在线观看 | 成年人在线电影 | 亚洲国产精品久久久 | 婷婷伊人综合 | 国产色一区| 精品国产乱码久久久久久1区2匹 | 免费看片网站91 | 99九九热只有国产精品 | 日韩精品资源 | 国产精品九九九 | 国产一区欧美日韩 | 久爱综合 | 日日爱影视 | 久久久久免费网站 | 天天爽天天碰狠狠添 | 九九九热精品免费视频观看 | 国产免费成人av | 日韩中文字幕视频在线观看 | 精品视频资源站 | 午夜视频亚洲 | 一级久久久 | 亚洲精品午夜aaa久久久 | 免费看黄的视频 | 欧美不卡视频在线 | 在线视频 91 | 亚洲 av网站 | 国产精品白浆视频 | 欧美 日韩精品 | 国产精品久久久久久久久久久久午夜片 | 亚洲日本韩国一区二区 | 国内视频1区| 久久免费精品 | 亚洲国产日韩精品 | 国产精品久久久精品 | 成人片在线播放 | 中文字幕网站视频在线 | 日本激情视频中文字幕 | 久久久av电影 | 在线黄色av | 免费看麻豆 | 免费看黄在线观看 | www.午夜视频 | 91爱爱网址 | 99在线看 | 久久手机免费观看 | 欧美精品一区二区性色 | 成人片在线播放 | 国产原创中文在线 | 黄色免费电影网站 | 国产 av 日韩 | 麻豆国产网站 | 日日操日日插 | 免费视频三区 | 粉嫩av一区二区三区入口 | 色网站在线免费 | 亚洲欧美视频在线播放 | 国产成人精品久久亚洲高清不卡 | 99久在线精品99re8热视频 | 成人午夜网 | 久久96国产精品久久99软件 | 国产精品麻豆99久久久久久 | 亚洲精品一区二区三区四区高清 | 国产综合在线观看视频 | 国产精品免费观看国产网曝瓜 | 日本一区二区三区免费观看 | 精品一区二区亚洲 | 久久国产精品影片 | 亚洲久在线 | 免费看国产一级片 | 缴情综合网五月天 | 一区二区三区高清在线观看 | 亚洲欧美视频 | a久久久久久 | 黄色亚洲大片免费在线观看 | 国产一区在线不卡 | 少妇自拍av | 亚洲成人资源在线观看 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产专区欧美专区 | 国产一区二区精品91 | 青青草在久久免费久久免费 | 精品国产一区二区三区男人吃奶 | 99视频偷窥在线精品国自产拍 | 国产精品女同一区二区三区久久夜 | 99超碰在线观看 | 免费男女羞羞的视频网站中文字幕 | 中文乱码视频在线观看 | 激情久久婷婷 | 国产精品 日韩精品 | 日韩av成人 | 亚洲天天做| 天天爽天天碰狠狠添 | 中文字幕免费高清av | 亚洲成人免费在线观看 | 欧美亚洲成人xxx | 成人在线观看免费视频 | 最新91在线视频 | 国产精品久久久久9999 | 欧美成人tv| 精品视频免费播放 | 人人插人人做 | 久久99久久99精品免观看软件 | 国产黄色播放 | 国产成人福利在线观看 | 五月婷婷久久丁香 | 免费人做人爱www的视 | 亚洲天堂网在线播放 | 成年人视频在线观看免费 | 久久中文字幕在线视频 | 欧美激情一区不卡 | 91探花在线 | 黄网站大全 | 国产91在线观 | 亚洲精品日韩一区二区电影 | 免费韩国av | 亚洲一区二区观看 | 国产99区| 精品久久久影院 | 日韩在线观看你懂的 | 国产精品一区二区在线观看免费 | 高清不卡一区二区三区 | 国产亚洲一区二区在线观看 | 伊人久久婷婷 | 中文字幕第一 | 欧美性精品 | 免费观看一级 | 激情综合国产 | 日韩精品在线免费观看 | 天天草天天干天天射 | 国产无吗一区二区三区在线欢 | 欧美精品在线一区二区 | 欧美大片aaa | 伊人一级| 国产精品ⅴa有声小说 | 91免费在线| 国产高清av | 欧美与欧洲交xxxx免费观看 | 免费大片黄在线 | 99久久精品电影 | 亚洲在线看 | 欧美一二区视频 | 精品免费观看 | 美女网站黄在线观看 | 国产视频精品久久 | 狠狠狠狠狠狠天天爱 | 丁香婷婷色综合亚洲电影 | 欧美性久久久久久 | 午夜精品一区二区三区可下载 | 天天摸日日操 | 国产精品免费久久久久久久久久中文 | 一区二区伦理电影 | 久久九九影视网 | 久久成人精品电影 | 69久久夜色精品国产69 | 亚洲成年人av| 中文字幕中文字幕中文字幕 | 99久热在线精品视频观看 | aaaaaa毛片| 亚洲五月激情 | 久草在线91 | 波多野结衣电影一区二区 | 蜜桃传媒一区二区 | www日| 88av网站| 国产欧美精品一区二区三区 | 久久精精品视频 | 人人艹人人 | 成 人 黄 色视频免费播放 | 国产999精品久久久 免费a网站 | 91精品啪在线观看国产 | 亚洲高清久久久 | 97国产大学生情侣白嫩酒店 | 在线观看视频99 | 午夜精品电影一区二区在线 | 国产精品久久久久久久99 | 97网在线观看 | www蜜桃视频 | 五月婷婷一区二区三区 | 国产资源站 | 久久久久夜色 | 中文字幕av播放 | 午夜av在线播放 | 天天摸天天操天天舔 | 91精品国产综合久久婷婷香蕉 | 日日操日日干 | 在线免费中文字幕 | 久久精品中文字幕免费mv | 黄色免费在线看 | 日日操网| 日韩av视屏 | 成人福利在线观看 | 亚洲精品久久久久久久蜜桃 | 香蕉网在线观看 | 五月婷在线 | 精品无人国产偷自产在线 | 欧美国产精品一区二区 | 亚州中文av | 国产亚洲精品福利 | 在线观看视频你懂 | 在线看国产视频 | 国产精品一区二区在线 | 人人舔人人爱 | 国产真实精品久久二三区 | 国产精品 国内视频 | 欧美黑人xxxx猛性大交 | 精品欧美一区二区精品久久 | 日韩欧美一区二区在线 | 中文字幕亚洲字幕 | 国产手机在线 | 在线黄色国产电影 | 色久网| 激情综合五月天 | www.av在线.com| 成人试看120秒 | 色干干 | 久久久久北条麻妃免费看 | 国产黄网站在线观看 | 日韩超碰 | 色噜噜日韩精品欧美一区二区 | 久久免费一 | 在线视频观看你懂的 | 18国产精品白浆在线观看免费 | av网在线观看 | 在线观看电影av | 中文字幕高清有码 | 久草在线看片 | 成人欧美一区二区三区在线观看 | 国产精品视频大全 | 成人国产精品一区 | 五月婷婷免费 | 亚洲精品啊啊啊 | 亚洲精品视频在线观看免费 | 亚洲精品激情 | 国产一区二区三区在线免费观看 | 视频在线国产 | 激情av一区二区 | 国产 日韩 欧美 自拍 | 五月婷婷六月综合 | 麻豆免费视频 | 超碰97在线看 | 国产黄色片在线 | 最近中文字幕在线播放 | 亚洲精品视频免费看 | av在线精品 | 91亚洲精品久久久蜜桃网站 | 精品天堂av| 91精品国产一区二区三区 | 日本中文字幕网站 | 国产三级视频 | 日韩免费二区 | 欧美精品一区二区三区一线天视频 | 国产91精品看黄网站 | 日韩欧美视频免费在线观看 | 久久在线看 | 国产一区在线视频播放 | 国产在线1区| 国产精品一区电影 | 久久天天躁夜夜躁狠狠85麻豆 | 日韩试看 | 久久99久久久久久 | 成人午夜影视 | 色哟哟国产精品 | 国产精品色婷婷 | 欧美精品久久久久久久免费 | 免费观看丰满少妇做爰 | 最近日本字幕mv免费观看在线 | 日韩有码在线播放 | 日本特黄一级片 | 久久久精品国产免费观看一区二区 | 久久久久中文字幕 | 在线日韩视频 | 国产黄色片网站 | 免费在线观看av | 狠狠干狠狠插 | 18做爰免费视频网站 | 99热这里只有精品8 久久综合毛片 | 日韩免费区 | 97视频免费| 久草免费福利在线观看 | 在线观看国产 | 日韩高清国产精品 | 国产精品视频不卡 | 操综合 | 日韩欧美在线综合网 | 99精品在线免费观看 | 国产色资源| 91九色免费视频 | 九色精品在线 | 91视频91色| 国产手机视频 | 在线观看日本高清mv视频 | 福利一区二区三区四区 | 免费网站黄色 | 久久精品国产第一区二区三区 | 国内丰满少妇猛烈精品播 | 国产精品高清在线观看 | 成人久久国产 | 久久99精品久久只有精品 | 久久综合毛片 | 国产区欧美 | 91av视频在线观看免费 | 国产一级视频免费看 | 国产中的精品av小宝探花 | 在线观看视频福利 | 国产超碰在线观看 | 中文字幕日韩在线播放 | 视频国产精品 | 亚洲欧美日韩在线看 | 91精品对白一区国产伦 | 久久久电影网站 | 精品人妖videos欧美人妖 | 国产精品久久片 | 91在线视频免费观看 | 一本一道久久a久久综合蜜桃 | 国产精品99久久久久久人免费 | 91色一区二区三区 | 久久久蜜桃| 国产香蕉视频在线观看 | 天天综合操| 久久天天躁夜夜躁狠狠85麻豆 | 婷婷综合在线 | 免费看搞黄视频网站 | 国内久久久久 | 欧美日韩一区二区久久 | 亚洲欧美日本一区二区三区 | 国产精品国产三级国产不产一地 | 亚州av一区 | 在线看片视频 | 97在线视频免费观看 | 中文av网站 | 91视频久久久久 | 人人澡人人爽欧一区 | 欧美色精品天天在线观看视频 | 毛片永久免费 | 亚洲精品一区中文字幕乱码 | 久草电影免费在线观看 | 在线看片一区 | 国产亚洲精品美女久久 | 在线看一区二区 | 9999国产| 国产亚洲综合性久久久影院 | 夜又临在线观看 | 国产高清免费在线观看 | 少妇bbbb搡bbbb桶 | 日韩美女高潮 | 精品国精品自拍自在线 | 久久狠狠干 | 国产a精品 | 色综合网在线 | 国产一区二区高清视频 | 成年人电影免费在线观看 | av动态图片 | 国产群p | 欧美精品中文在线免费观看 | 久久成人一区二区 | 激情综合亚洲精品 | 友田真希x88av | 婷婷国产精品 | 伊人成人激情 | 中文字幕高清视频 | 97视频在线免费 | 国产一级做a爱片久久毛片a | 香蕉97视频观看在线观看 | 中文字幕人成不卡一区 | 国产男女免费完整视频 | 波多野结衣在线中文字幕 | 欧美精品天堂 | 五月精品 | 波多野结衣亚洲一区二区 | 在线视频中文字幕一区 | 欧美肥妇free | 色国产在线 | 国产色黄网站 | 2018好看的中文在线观看 | 毛片99| 久久99精品国产91久久来源 | 久久兔费看a级 | 97视频精品| 色丁香婷婷 | 欧美亚洲国产日韩 | 久久99亚洲热视 | 九九视频免费观看视频精品 | 久久伊人热 | 日韩免费在线观看视频 | 精品影院 | 国产一二三区av | 免费日韩 精品中文字幕视频在线 | 久久婷婷综合激情 | 香蕉网站在线观看 | 国产精久久久久久久 | 日韩欧美在线视频一区二区 | 久久午夜免费视频 | 亚洲人av免费网站 | 伊人色综合网 | 在线网址你懂得 | 在线看黄网站 | 成人一区二区三区在线 | 女人魂免费观看 | 特级黄色片免费看 | 久久久久亚洲精品成人网小说 | 日韩理论视频 | 在线观看国产成人av片 | 少妇视频一区 | 精品在线观看视频 | 免费av 在线 | 在线观看亚洲国产精品 | 人人澡人人草 | 成人福利在线观看 | 在线观看电影av | 日韩高清国产精品 | 久草视频首页 | 日本公妇色中文字幕 | 午夜丁香视频在线观看 | 在线成人中文字幕 | 中文字幕文字幕一区二区 | 久久久久久久久精 | 精品电影一区 | 婷婷丁香九月 | 午夜精品久久久久久久久久 | 曰韩在线| 国产精品va最新国产精品视频 | 香蕉视频在线免费 | 一区三区视频在线观看 | 成人一区二区在线观看 | 天天爱天天草 | 色婷婷福利视频 | 欧美日韩国产在线精品 | 亚洲欧美日韩在线看 | 国产高清日韩欧美 | 婷婷国产v亚洲v欧美久久 | 日韩av美女| 欧美天堂久久 | 中文字幕人成人 | 久久视频在线视频 | 欧美色插 | 开心综合网 | 国产一区成人在线 | 国产99爱| 91丨九色丨蝌蚪丰满 | 欧美精品小视频 | 色婷婷综合在线 | 美女网站在线观看 | 日本性高潮视频 | 最新影院 | 亚洲日本在线一区 | 免费精品国产va自在自线 | 91麻豆文化传媒在线观看 | 久久免费电影网 | 综合激情网... | 色综合天天天天做夜夜夜夜做 | 国产色视频网站 | 成年人免费电影在线观看 | 国产99久久久国产精品 | 黄色一及电影 | 欧美日韩一区二区在线 | 丁香视频全集免费观看 | 在线观看国产日韩欧美 | 亚洲成人精品 | 久久人人精| 黄a在线观看 | av在线成人 | av超碰免费在线 | 精品免费99久久 | 日韩欧美综合视频 | 日本在线中文在线 | 99久久婷婷国产精品综合 | 伊人天天狠天天添日日拍 | 国产在线2020 | 欧美久久久影院 | 欧美日韩亚洲一 | 探花视频免费在线观看 | 国产麻豆视频网站 | 天天激情天天干 | 久久精品国产精品 | 亚洲va韩国va欧美va精四季 | 日本黄色免费在线观看 | 九九热视频在线播放 | 久久久精品日本 | 日日夜夜免费精品 | 在线观看视频国产 | 特级毛片爽www免费版 | 色欧美成人精品a∨在线观看 | 欧美精品久久久久久久久免 | 日韩精品一区二区不卡 | 天天干天天干天天色 | 国产精品99久久久精品 | 国产精品美女久久久免费 | 午夜精品电影 | 国产精品久久久久久久久久新婚 | 天天操偷偷干 | 国产精品视频专区 | 香蕉一区 | av成人资源 | 96视频在线| 91污污 | 91精彩视频在线观看 | 91成人在线免费观看 | 免费在线播放视频 | 亚洲精品在线视频网站 | 高潮久久久久久久久 | 欧美伦理一区二区三区 | 成人在线免费视频 | 日本精品一区二区在线观看 | 中文字幕中文字幕在线中文字幕三区 | 99在线看| 亚洲激色| 国产在线a不卡 | 91精品国产亚洲 | 特级大胆西西4444www | 狠狠狠色狠狠色综合 | 国产999视频在线观看 | 免费观看午夜视频 | 亚洲精品一区中文字幕乱码 | 丁香婷婷综合激情五月色 | 91视频免费国产 | 欧美日本高清视频 | 五月激情综合婷婷 | 婷婷在线视频 | 五月天婷婷在线观看视频 | 国产黄色大全 | 色综合久久久 | 九九国产精品视频 | 国产视频精品视频 | 婷婷国产精品 | 最近日本中文字幕a | 久久午夜网 | av东方在线 | 日韩午夜视频在线观看 | 99国产成+人+综合+亚洲 欧美 | 天天爱天天干天天爽 | 成人午夜久久 | 亚洲欧美一区二区三区孕妇写真 | 日韩欧美高清在线观看 | 国产成人亚洲在线观看 | 欧美色图视频一区 | 欧美成人免费在线 | 久久免费精品视频 | 久久草精品| 国偷自产视频一区二区久 | 一区二区三区在线电影 | 看片黄网站 | 精品在线观看一区二区 | 在线观看国产高清视频 | 国产精品九九久久久久久久 | 久久国产精品免费一区二区三区 | av免费在线网 | 成人av影院在线观看 | 日韩精品久久久免费观看夜色 | 又湿又紧又大又爽a视频国产 | 91精品亚洲影视在线观看 | 国产高清视频在线 | 国产精品白浆 | 亚洲电影久久 | 成人黄色片在线播放 | 性色av免费在线观看 | 国产日韩精品视频 | 日韩精品一区二区三区在线视频 | 欧美不卡在线 | 久久99热精品 | 99精品视频在线观看播放 | 四虎天堂| 成年人在线免费看视频 | www激情com| 丁香九月激情 | 久久只精品99品免费久23小说 | 日韩中文字幕免费看 | 久操视频在线观看 | 国产日本三级 | 亚洲日本在线一区 | 亚洲视频高清 | 欧美日韩在线观看一区二区 | 亚洲精品久久久蜜臀下载官网 | 一本色道久久精品 | 精产嫩模国品一二三区 | 视频一区久久 | 日韩福利在线观看 | 午夜精品电影一区二区在线 | 国产精品va视频 | 日本一区二区不卡高清 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 中文字幕在线影院 | 久久午夜国产精品 | 天天色天天爱天天射综合 | 天天射天天拍 | 人人澡人 | 久草在线免费资源站 | 91一区啪爱嗯打偷拍欧美 | 亚洲日日射 | 亚洲一区精品二人人爽久久 | 波多野结衣精品在线 | 中文字幕av全部资源www中文字幕在线观看 | 九九精品在线观看 | 久久毛片高清国产 | 一区视频在线 | 精品国产乱子伦一区二区 | 日本在线视频一区二区三区 | 久久国产精品久久久 | 精品视频在线播放 | 国产97在线看 | 成人免费在线播放 | 天天天色综合a | 不卡精品| 久久99久久99精品中文字幕 | 操操操日日日干干干 | 日韩视频三区 | 成人免费网视频 | 国产a国产 | 中文字幕婷婷 | 天天干天天干天天色 | 欧美大片第1页 | 久久综合之合合综合久久 | 97在线视| 久久99精品国产麻豆宅宅 | 色婷婷久久久 | 伊人狠狠操 | 久久一区二区免费视频 | 91成人精品一区在线播放 | 一区二区三区在线播放 | 在线不卡的av | 天天碰天天操视频 | av中文字幕在线观看网站 | 一区二区三区免费网站 | 天天操夜操 | 国产精品美女在线观看 | 久久这里只有精品久久 | av网站有哪些 | 干干日日| 欧美做受xxx | 精品一区二区免费 | 国产精品一区二区免费 | 久久香蕉国产 | 欧美一级免费在线 | 国产精品va最新国产精品视频 | 国产91电影在线观看 | 9在线观看免费高清完整版 玖玖爱免费视频 | 亚洲精品欧美视频 | 五月开心婷婷网 | 久久综合五月天婷婷伊人 | 免费在线看成人av | 911国产精品 | 91在线观看视频 | 久久狠狠一本精品综合网 | 日韩av快播电影网 | 国产精品嫩草影院9 | 色婷婷综合视频在线观看 | 又湿又紧又大又爽a视频国产 | 狠狠色香婷婷久久亚洲精品 | 亚洲精品国产区 | 夜夜狠狠 | 韩国一区二区三区视频 | 91成人精品一区在线播放69 | 国内精品久久久久影院一蜜桃 | av丝袜在线| 婷婷天天色 | 久久久久欧美精品 | 久久黄色影视 | 亚洲国产欧美一区二区三区丁香婷 | 中文字幕91在线 | 国产美女在线免费观看 | .国产精品成人自产拍在线观看6 | 香蕉久久久久 | 精品国产一区二区三区久久久 | 久久久久国产精品免费 | 日韩精品视频在线免费观看 | 91福利区一区二区三区 | 久久精品一区二区国产 | 波多野结衣电影一区 | 97电影在线 | 欧美嫩草影院 | 国产成人三级一区二区在线观看一 | 国产免费黄视频在线观看 | 久久精品99久久久久久 | 91毛片在线| a天堂最新版中文在线地址 久久99久久精品国产 | 久久精品第一页 | 久久久久成 | 久久视频这里有久久精品视频11 | 狠狠色噜噜狠狠 | 18久久久久 | 草久久久 | 久久久综合精品 | 99精品视频网站 | 免费观看性生交大片3 | 日韩精品一区二区三区免费观看视频 | 最近中文字幕在线中文高清版 | 中文av不卡 | 97国产精品免费 | 日韩高清在线一区 | 欧美精品免费在线观看 | 久久国产视频网站 | 亚洲视频网站在线观看 | 美国人与动物xxxx | 中文av影院 | 91视频首页 | 五月天中文字幕mv在线 | 黄色一级免费电影 | 国产精选在线观看 | 黄色动态图xx | 成人羞羞免费 | 久久久久欠精品国产毛片国产毛生 | 国产色网站| 99久久免费看 | 欧美成人性战久久 | 欧美aaa级片 | 99视频网址 | 国产91精品久久久久久 | 婷婷丁香av | 亚洲国产一区二区精品专区 | 国产精品18久久久 | 色偷偷人人澡久久超碰69 | 久久久精品午夜 | 成人精品国产免费网站 | 国产精品永久久久久久久www | 国产精品久久久久久久久久ktv | 国产成人精品一区二区三区 | 国产综合香蕉五月婷在线 | 久久久免费精品国产一区二区 | 伊人国产在线播放 | 久久最新| 久久这里只有精品9 | 亚洲成人黄色在线 | 青草视频在线播放 | 国产一区二区在线免费观看 | 久草视频国产 | 国产精品美女999 | 特级西西444www大胆高清无视频 | 色播五月婷婷 | 一区二区精品在线观看 | 亚洲日本va午夜在线电影 | 精品一区久久 | 人人舔人人爱 | 亚洲欧美日韩国产 | a级黄色片视频 | 国内精品久久影院 | 中文字幕免费观看 | 中文字幕av日韩 | 亚洲激情综合网 | 精品欧美一区二区在线观看 | 久久综合成人 | 中文字幕资源在线 | 国产精品久久久久久欧美 | 久久在线一区 | 丝袜网站在线观看 | 国模一区二区三区四区 | 欧美日产在线观看 | 欧美黄污视频 | 少妇18xxxx性xxxx片 | 欧美日韩1区 | 色a4yy| 99在线视频免费观看 | 操一草| 国产一区二区不卡视频 | 久久综合之合合综合久久 | 91热精品视频 | 欧美一区免费在线观看 | 久久欧美综合 | 中文字幕在线中文 | 国产精品美女久久久久久久久 | 国产精品一区二区三区99 | 久久精品国产免费观看 | 久久人人精品 | 欧美一级免费黄色片 | 久草精品在线播放 | 人人讲下载 | 免费精品视频在线 | 欧美一级xxxx | 国内精品久久天天躁人人爽 | 国内偷拍精品视频 | 三级av在线播放 | 92精品国产成人观看免费 | 玖玖玖在线观看 | 日韩av影视在线观看 | 91女子私密保健养生少妇 | 免费高清男女打扑克视频 | 狠狠躁日日躁狂躁夜夜躁av | 亚洲日b视频 | 日韩欧美高清在线观看 | 99色99| 欧美动漫一区二区三区 | 成人h电影 | 日韩在线一区二区免费 | 日韩深夜在线观看 | 国产专区在线视频 | 成人久久综合 | 精品亚洲免a | 久久久久国产一区二区三区 | 国产一级一片免费播放放 | 国产精品麻豆视频 | 久久久久久久久久毛片 | 国产成人久久77777精品 | 怡红院av | 日韩最新理论电影 | 国产护士在线 | 中文字幕在线电影 | 欧美国产日韩激情 | 国产精品99爱 | 久久综合狠狠综合久久激情 | 正在播放国产一区 | 日韩高清片 |