| 系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加TODO:写完再整理
 
 前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对**【autoware的决策规划模块】**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 
 提示:以下是本篇文章正文内容 一、决策规划算法概述规划算法的分类
  (1)曲线插值拟合的方法【这个一般可以通过库或者移植源码实现】(2)轨迹优化平滑的方法【这个涉及优化理论】
 (3)图搜索的方法
 (4)增量采样的方法
 车辆的安全行为的逻辑决策比较复杂的!使用的就是HFSM的分层决策状态机 ..
 二、决策规划模块功能介绍
 1.规划常用任务(场景很多,要一个一个场景的突破去做) 1.地图中点到点的全局路径规划(道路级别)2.在行进过程中的局部路径规划(轨迹级别)(1)根据红绿灯信号的车辆启停(2)前方障碍物的减速、避障、停止
 (3)换道
 (4)跟车
 (5)危险情况的紧急制动
 转弯、倒车、换道、巡航、避障都是决策给出信息的,同时感知、地图、定位也有辅助 三、决策规划方案介绍【四个demo】
 1.巡航换道停障lane_planner的规划方案【结构型道路–车道级规划–全局规划】【lane_planner、waypoint_maker两个功能包的配合–实现从车道的角度进行规划】 (1)功能包原理介绍 【lane_planner、waypoint_maker两个功能包的配合–实现从车道的角度进行规划】
 lane_planner功能包对应的节点 lane_navi
lane_rule
lane_select
lane_stop
 waypoint_maker功能包对应的节点 waypoints_loader
waypoints_make_publish
 lane_planner的功能是输出一条整体的全局路径/base_waypoints 给定的全局路径的获取方式可以通过lane_planner中的lane_navi解析vector_map得到,也可以通过waypoints_make中的waypoints_loader把path.txt解析出来,还可以通过Astar等全局规划出来的waypoints得到 得到/lane_waypoints_array就是我们之前规划得全局轨迹,可以仅有一条也可以有多条(主要看vector_map和path.txt提供了几条可供选择的候选路路径) waypoints_make中的waypoints_make_publish把/lane_waypoints_array话题可视化到rviz中 lane_planner中的lane_rule根据红绿灯情况输出各种速度不同的路径轨迹,其中/red_waypoints_array的速度为0,/green_waypoints_array为正常的速度,/traffic_waypoints_array为交规指定的最终执行速度 lane_select根据vector_map地图中的左右转信息决定车辆换道,走那一条路线 经过上述一系列操作,最终输出一条可执行的base_waypoints,base_waypoints就是最终执行的全局路径,局部路径都是基于这条base_waypoints进行的 . (2)功能包代码解析及注释【重点】【rqt_graph可以查看核对一下的】我把注释后的代码上传到给github了
 ..
 2.避障waypoint_planner(astar)规划方案【结构型道路–车道级规划+轨迹级规划】(A*是负责基于栅格地图的规划探索) (1)功能包原理介绍 要启动astar进行局部规划,仅仅需要把astar的标志位置为true就可以了(在对应的launch文件中)
 在之前lane_planner规划的全局路径**/base_waypoints的基础上,使用waypoint_planner中的astar算法进行局部避障,输出一条安全的路径/safety_waypoints**其中,astar_search是算法的实现,astar_avoid是针对astar的一些前置决策
 /safety_waypoints可用于车辆控制模块
 waypoint_planner功能包对应的节点 astar_avoid
astar_search
 . (2)功能包代码解析及注释【重点】【rqt_graph可以查看核对一下的】我把注释后的代码上传到给github了
 .
 .
 3.避障open_planner规划方案【结构型道路–轨迹级规划】(open_planner是基于语义地图和占据地图进行采样的局部规划优化)
  (1)功能包原理流程介绍 (1)轨迹生成/op_trajectory_generator
 注意的是,是参考vector_map中的多条/lane_waypoints_array进行生成轨迹的
 .(2)轨迹代价评分/op_trajectory_Evaluator
 在open_planner中会根据全局路径生成多个候选路径,每条路径通过代价函数进行评分具有代价,选择代价最低的来走,红色线的是不可行驶的,open_planner是实时运行的
 
  (2)功能包代码解析及注释【重点】open_planner的原理
  ..
 4.避障freespace_planner(astar)规划方案–手动指定目标点goal【非结构化道路–轨迹级规划】【生成代价地图实现】 (1)功能包原理流程介绍 根据vector的/point_lane和雷达感知的障碍物,生成一张代价地图costmap【属于地图生成的范畴】
 costmap_gennerator输出一张分割的占据栅格地图,同时freespace_planner功能包中的astar_navi是针对astar的一些前置决策,astar_search是算法的具体实现 最终输出多条可执行的路径/lane_waypoints_array
  . (2)功能包代码解析及注释【重点】freespace_planner功能包的节点 astar_avoid
astar_navi
astar_search
 (1)astar算法的前置决策astar_avoid这种决策是通过if-else进行的简单逻辑决策,有planning\stop\replan等几种状态
 根据障碍物obsta的位置确定规划的终点target(可设置多个目标点goal进行尝试),起点可以通过当前定位得到
 (2)astar算法的前置决策astar_naviastar_navi比较简单,原来的版本是一直进行局部规划的,改过的版本是仅仅进行局部规划一次的!,改动逻辑就好
 (3)astar算法的实现astar_search
  . 
 总结如果和实现一直进行局部规划–改一改lane_navi逻辑就好了! 规划一般直接用到的是代价地图costmap,还有矢量地图vector_map,但是这两种地图都是从点云地图和高精度度地图中提取出来的 参考资料综述论文
  |