本文背景
Apollo是无人驾驶相关的开源框架,GitHub地址为https://github.com/ApolloAuto/apollo,在决策部分主要具有Perception(感知),Prediction(预测),Routing(路由寻径),Planning(轨迹规划),Control(控制)。由于最近在看Routing相关的代码,所以主要针对Routing内容的一个个人总结。
本文是对Routing策略算法中的navigator模块的介绍。
Navigator介绍
在Routing模块中,当所有条件就绪时,就会使用高精地图搜索指定路径,其中在Routing代码中搜索路径的代码为
navigator_ptr_->SearchRoute(fixed_request, &routing_response)
该代码的主要目标是在收到request请求后调用navigator指针中的SearchRoute方法,如果成功找到路径,就把结果赋值给routing_response;如果失败就返回错误。所以SearchRoute是navigator中关键的方法,本文也主要会针对该方法做一个介绍。
数据结构及所有函数介绍
ShowRequestInfo: 展示请求的详细信息,主要展示waypoint以及blacklist
GetWayNodes:将request中的node以及node的s加入
SetErrorCode:报错信息
PrintDebugData:debug信息
Navigator:构造函数,查看是否已经准备好导航
IsReady:就绪标记函数
Clear:清除拓扑图管理数据
Init:初始化函数
MergeRoute:路径结合
SearchRouteByStrategy:利用Strategy中的算法来做路径规划,这里用的是Astar
SearchRoute:搜索路径,如果有路径就返回True,并赋值,如果没有就返回False
主要函数详解
主要函数包含有Search