【无人驾驶autoware 项目实战】任务规划mission_planning
本文介绍了无人驾驶Autoware项目中关于路径规划的详细内容。文章主要分为三个主要方案:laneplanner(基于矢量地图的车道级规划)、freespaceplanner(基于动态障碍物的全局路径规划)和opglobalplanner(基于矢量地图的全局路径生成)。每个方案都描述了其功能模块、算法原理及代码实现,并强调了它们在不同场景下的应用特点。文章还提到了前言部分对全局路径规划任务的介绍及其在复杂场景中的应用情况。整体上展示了Autoware项目中多样的路径规划方法及其在无人驾驶中的实际应用价值。
文章目录
-
前言
-
一、功能
-
二、输入
-
- 【ADAS 矢量地图】
-
三、输出
-
- 【base waypoints】
route planner
route planner
重点
路线规划系统
* 方案二、freespace_planner(使用costmap,astar做全局点到点规划)
* * (1)规划原理流程介绍
* (2)规划代码解析及注释
* * (1)astar算法的前置决策astar_navi
* (2)astar算法的实现astar_search
* (3)局部代价地图生成 costmap_generator
* 方案三、op_global_planner(使用vector_map)
- 总结
- 参考资料
前言

无人驾驶Autoware的相关内容包括教程及博客,请您关注以下专栏:<>]
无人车&无人机导航合集
<>
无人驾驶autoware 项目实战
无人驾驶autoware 项目实战
无人驾驶autoware 项目实战
无人驾驶autoware 项目实战
提示:以下是本篇文章正文内容

一、功能
在整体范围内设定起始点位置和目标点位置,并利用交叉路口进行整体规划以生成一条完整的静态路线图。当分配完成整体路径规划时,在本地立即开始执行本地运动规划算法以确保连续导航过程。
autoware的任务规划方案具有半自动性特征,在更为复杂的场景下(如停车操作及恢复工作错误),驾驶员需对路径进行监控
.
.
二、输入
【ADAS 矢量地图】
基于高分辨率点云数据集构建的视觉感知图和人工标注的语义标注图(通常由公司专门进行),实际上相当于提供了一个包含航线lane、交通灯等静态地理信息的.csv文件
.
三、输出
【base waypoints】
全局航线,全局航线本来就是包含在了ADAS 矢量地图的csv文件中的
.
.
四、算法流程实现
【route planner】
该系统通过路径规划算法计算出从起点到终点的整体路径,并经过优化后确定的一系列十字路口位置作为最终输出结果发布。这些结果是由道路网络中的一系列十字路口节点构成的集合体,在整体交通管理中主要沿这条路线方向行进。值得注意的是,在整个规划过程中,默认情况下每条路线方向设有多个车道线供车辆通行。
【lane planner】
车道规划工作将基于route_planner提供的十字路口数据进行,并旨在确定全局路径所包含的所有lane单元,并生成到达目标位置所需的一系列waypoint坐标集合。每个lane单元则由一系列waypoint点构成
【waypoint_planner】
负责生成到达目的地的多个waypoint节点,并标有防盗标记–盒子君hzj。它不仅会发布单一的目标路径点,还能够提供其他潜在的目的地选择.同时,该系统还能够根据实时数据动态调整规划方案,确保路径的安全性和可行性.而lane_planner则主要专注于在固定场景下进行静态路径规划,无法实时响应动态变化的需求.
【waypoint_maker】
该功能类似于实现了路径记录的功能模块。
waypoint_maker 至少支持存储与读取人工生成的waypoint文件。
在实际行驶中启动定位装置以收集到车辆的位置数据与行驶速度数据是必要的。
将这些位置数据与速度数据整合后形成完整的轨迹文件。
随后可以通过导入该本地文件来提供给其他规划系统使用。
方案一、lane_planner(使用vector_map)
车道级规划–全局静态轨迹规划
车道级规划–全局静态轨迹规划
单车道层面–整体静态路径安排
(1)规划原理介绍

lane_planner和waypoint_maker两个功能包的协同工作——通过从车道规划的角度出发进行规划设计
lane_planner功能包对应的节点
lane_navi
lane_rule
lane_select
lane_stop
AI助手
waypoint_maker功能包对应的节点
waypoints_loader
waypoints_make_publish
AI助手
lane_planner的功能是输出一条整体的全局路径/base_waypoints
vector_map工具支持生成全局路径规划指令的方式不仅限于lane_navi模块的解码操作,在waypoints_make模块中也可以配置path.txt文件的内容以完成路径解析功能;此外,A*算法等全局规划方案也能为该系统提供可靠的路径生成能力(其他方法)
通过调用函数获取/lane_waypoints_array即可确定为之前的全局轨迹信息(其中该变量可能是一条也可能有多个候选路径供选择)
在waypoints_make类中的waypoints_make_publish成员用于将/lane_waypoints_array话题讨论显示在Rviz界面中。
lane_planner中的lane_rule 基于红绿灯状态生成多种不同速度的路径轨迹。其中red_waypoints_array的所有移动节点均静止;green_waypoints_array则按照常规速率运行;而traffic_waypoints_array则严格遵守交通法规确定的速度参数。
lane_planner中的lane_select 基于vector_map地图中的转向指示负责车辆换道决策,并选择合适的路线
完成了一系列操作后,在线生成一条可执行的有效base\_waypoints。该base\_waypoints即为全局路径的核心规划线段;其余局部路径均以此base\_waypoints为基础展开
.
(2)规划代码解析及注释【重点】
rqt_graph可以查看核对一下的
rqt_graph可以查看核对一下的
rqt_graph便于检查
rqt_graph便于检查
(1)lane_navi
功能:
解析vector_map的路点信息
AI助手
(2)lane_rule
功能:
根据红绿灯情况输出各种速度不同的路径轨迹,
其中
/red_waypoints_array的速度为0,
/green_waypoints_array为正常的速度,
/traffic_waypoints_array为交规指定的最终执行速度
AI助手
(3)lane_select
功能:
接受多条路径
1.计算所有路径的当前位置的最近傍点
1.最近傍点的车道和现在行驶的路线设定
1.检测当前路径的左右路径
1.将当前路径最近傍点的车道变更标志作为该路径的车道变更标志保持
1.寻找最近邻右转或左转的标志点,生成艾尔米内插的路线,将该点和预定变更车道的车道的目标点定义为车道变更用的路径
1.不变更车道时,将当前路径、最近傍点、车道变更标志分别publish
1.更改车道时,分别对车道变更用的路径、与之相对的最近傍点、车道变更标志进行publish
AI助手
发布/订阅的信息
Subscribed Topics
- traffic_waypoints_array (waypoint_follower/LaneArray)
- current_pose (geometry_msgs/PoseStamped)
- current_velocity (geometry_msgs/TwistStamped)
- state (std_msgs/String)
- config/lane_select (runtime_manager/ConfigLaneSelect)
1. Published Topics
- base_waypoints (waypoint_follower/lane)
- closest_waypoint (std_msgs/Int32)
- change_flag (std_msgs/Int32)
- lane_select_marker (visualization_msgs/MarkerArray) : for debug
AI助手
修改的参数:
- Distance threshold to neighbor lanes<br>
表示检测当前路径周围有效车道时的阈值。距离这个阈值远的车道不识别为车道。
- Lane Change Interval After Lane Merge
表示进行了车道变更后跑了几米再能变更车道的值。
- Lane Change Target Ratio
将预定变更车道的车道上的目标点定义成与速度(m/s)成比例的距离时使用的值。
目标点探索的起点是在预定变更车道的车道上,有右转或左转的车道变更标志的点的最近傍点。
- Lane Change Target Minimum
表示到预定变更车道上的目标点为止的最低距离。
目标点探索的起点是在预定变更车道的车道上,有右转或左转的车道变更标志的点的最近傍点。
- Vector Length of Hermite Curve
表示用电子表格曲线补充时矢量的大小。
AI助手
(4)lane_stop
功能:
实现在vector_map的红绿灯下停车
AI助手
.
.
方案二、freespace_planner(使用costmap,astar做全局点到点规划)
Freespace planner软件包包含用于规划存在静态和动态障碍物的空间中的航路点的全局路径规划组件。
手动指定目标点goal【全局动态轨迹级规划【动态生成代价地图实现】
(1)规划原理流程介绍

生成costmap的步骤
感知部分
感知部分
生成costmap的具体流程
在cost上进行astar图搜索的步骤
基于成本图进行A*图搜索的步骤
最终输出多条可执行的路径/lane_waypoints_array
用法:获取 lane\_waypoints\_array 后会被允许继续运行 lane\_planner (通过这种方式可以获得一条轨迹信息,在车辆尚未抵达 vector\_map 对应位置的结构化道路时进行自主行驶)
当然这个规划去本身是针对未建立vecor_map的自由场景的

.
(2)规划代码解析及注释
freespace_planner功能包的节点
astar_navi
astar_search
AI助手
(1)astar算法的前置决策astar_navi
该程序利用astar_search包中的混合A*算法实现全局路径规划。该节点定期完成规划任务,并输出定位结果...。
订阅信息Subscriptions:
* /base_waypoints [autoware_msgs/Lane]
* /closest_waypoint [std_msgs/Int32]
* /current_pose [geometry_msgs/PoseStamped]
* /current_velocity [geometry_msgs/TwistStamped]
* /semantics/costmap_generator/occupancy_grid [nav_msgs/OccupancyGrid]
* /obstacle_waypoint [std_msgs/Int32]
* /tf [tf2_msgs/TFMessage]
* /tf_static [tf2_msgs/TFMessage]
AI助手
请注意:astar_navi相对简单,在旧版本中一直致力于局部规划工作,在经过修改后的版本仅执行一次局部规划操作。
.
.
(2)astar算法的实现astar_search

您是否了解Autoware基于实际应用需求对astar算法进行优化的情况?这些算法普遍被改进过。
astar并不是用pose进行搜寻的,而是用pose转index进行搜索的
astar搜索autoware进行的改进,在expand中规定了搜索的扩展方向!
.
.
(3)局部代价地图生成 costmap_generator
功能:
costmap_generator功能包读取“PointCloud”和/或“DetectedObjectArray”两个话题,
并创建“OccupencyGrid”和“GridMap”两种地图是可选的。
AI助手
订阅的话题:
The variable /points_no_ground, of type sensor_msgs::PointCloud2, originates from either the ground-removal filter or the map-based filter. It consists of processed points that have had the ground data removed.
/prediction/moving_predictor/objects
"/vector_map: provided by the VectorMap publisher. "/tf`` for obtaining the transformation between the vector map (map_frame) and the sensor (sensor_frame`).
The output costmap, known as /semantics/costmap (grid_map::GridMap), represents the algorithm's assessment of movement costs in a grid-based environment, with values ranging from 0.0 to 1.0.
The node type /semantics/costmap_generator/occupancy_grid represents the product nav_msgs::OccupancyGrid, which provides percentage values ranging from 0 to 100.
以new_manual_astar_planner.launch为基础, 采用astar算法规划地形与道路网络数据文件(txt/csv格式)
.
.
方案三、op_global_planner(使用vector_map)
根据给定的起点和目标点,在地图上规划出完整的路径。该算法在其规划过程仅考虑距离因素的同时,也具备处理其他复杂情况的能力。它支持autoware矢量地图vector_map,并特别进行了优化设计。
Input:
加载vector map,从Rviz设置开始/目标,并保存到csv文件,如果禁用rviz参数,将从位于csv文件加载开始/目标。
* /initialpose [geometry_msgs::PoseWithCovarianceStamped]
* /move_base_simple/goal [geometry_msgs::PoseStamped]
* /current_pose [geometry_msgs::PoseStamped]
* /current_velocity [geometry_msgs::TwistStamped]
* /vector_map_info/*
AI助手
Outputs:
* /lane_waypoints_array [autoware_msgs::LaneArray]
* /global_waypoints_rviz [visualization_msgs::MarkerArray]
* /op_destinations_rviz [visualization_msgs::MarkerArray]
* /vector_map_center_lines_rviz [visualization_msgs::MarkerArray]
AI助手
在起点至目标的整体路径规划中,在设置有多个目标的情况下,在车辆达到终点位置时 系统会自动重新规划一个新的目标
