引言
Autoware Universe 是一个开源的自动驾驶软件平台,它集成了多种高级功能,包括路径规划、感知、定位和控制等。这个平台不仅适用于实际尺寸的自动驾驶车辆,也被广泛应用于微缩自动驾驶智慧交通沙盘模型中。在智能网联车路协同交通沙盘微缩环境下,Autoware Universe可以模拟真实世界中的各种驾驶场景,从而提供一个安全且可控的实验环境,用于测试和验证自动驾驶技术。
特别地,使用智能网联车路协同自动驾驶小车和智慧交通沙盘,可以实现对Autoware Universe中“可通行区域”识别和感知的学习与应用。可通行区域的感知对于自动驾驶车辆来说至关重要,因为它定义了车辆可以安全行驶的空间。通过在模拟环境中实践这一概念,研究人员和学生可以深入理解自动驾驶车辆是如何在各种道路条件和交通场景下安全导航的。
智能网联车路协同自动驾驶交通沙盘为学习和实验提供了一个独特的平台。它允许开发者和研究人员在不涉及真实交通环境风险的情况下,探索和理解自动驾驶技术。例如,通过智能网联车路协同自动驾驶微缩沙盘,可以模拟城市道路、复杂交叉路口和各种交通场景,从而测试和改进Autoware Universe中的可通行区域检测算法。这种模拟不仅加深了对理论的理解,而且提供了一个实践和展示自动驾驶技术的有效方式。
可通行区域的定义
可通行区域(Drivable Area) 是自动驾驶技术中的一个核心概念,它指的是车辆可以安全行驶的区域。在Autoware Universe的行为路径规划模块中,这个概念尤为重要,因为它直接影响了车辆的路径规划和决策过程。
定义
可通行区域通常是基于车辆当前所在的环境(如道路、车道、交通标志和周围的障碍物)来确定的。它包括了车辆可以安全通行而不会与其他车辆、行人或障碍物发生冲突的路面部分。
在行为路径规划模块中的角色
在Autoware Universe中,行为路径规划模块使用多种算法和传感器数据来生成可通行区域。这个过程涉及分析车道的几何形状、交通规则、周围环境等,从而生成一个既安全又高效的驾驶路径。
结合智能网联交通沙盘和微缩自动驾驶小车
在智能网联交通沙盘和微缩自动驾驶小车的应用场景中,可通行区域的概念变得尤为重要。这些微缩模型提供了一个独特的平台,用于教学和科研,使学生和研究人员能够直观地了解自动驾驶车辆是如何感知和解释其周围环境的。
-
教学意义:通过在微缩智能网联车路协同自动驾驶沙盘中模拟真实的道路环境,学生可以直观地看到车辆如何识别可通行区域,以及这些区域是如何影响车辆的行驶决策的。
-
科研应用:研究人员可以利用这些模型来测试和优化自动驾驶算法,特别是在可通行区域的识别和路径规划方面。
-
模拟复杂场景:交通微缩沙盘和自动驾驶小车能够模拟出现实世界中的各种复杂交通情况,包括各种静态和动态障碍物,为自动驾驶技术的发展提供实验和验证的平台。
通过这些应用,学生和研究人员不仅能够深入了解自动驾驶车辆的工作原理,还能够探索和发现新的算法和技术,推动自动驾驶技术的发展。
重要性与目的
在智能网联交通沙盘和微缩自动驾驶小车的教学和科研中,"可通行区域"(Drivable Area)的概念扮演着至关重要的角色。这个概念直接关系到自动驾驶车辆在复杂环境中的安全性和有效性,特别是在模拟的微缩城市环境中。
安全驾驶的关键
-
路径规划的基础:可通行区域为自动驾驶车辆提供了一个明确的、安全的行驶范围。它帮助车辆识别哪些区域是安全的,哪些区域可能存在潜在风险,如行人、其他车辆或障碍物。
-
降低碰撞风险:通过明确定义车辆可以安全行驶的区域,可通行区域显著降低了与其他车辆或障碍物碰撞的可能性。
-
响应动态变化:在实时变化的交通环境中,可通行区域的动态调整能够使车辆快速响应道路状况的变化,如临时施工区或紧急情况。
教学与科研的意义
-
实验与验证:在智能网联交通沙盘环境中,研究人员和学生可以使用微缩自动驾驶小车来实验和验证可通行区域的识别技术。这种微缩模型提供了一个安全且可控的环境,用于测试和优化自动驾驶算法。
-
理论与实践的结合:通过在沙盘环境中模拟真实世界的交通情况,学生可以更好地理解自动驾驶技术的理论,并将这些理论应用于实践。
-
创新与探索:在这种模拟环境中,可以自由地测试新的想法和方法,推动自动驾驶领域的技术创新和学术研究。
-
数据收集与分析:微缩自动驾驶小车可以在模拟环境中收集大量数据,供研究人员分析和优化可通行区域识别算法。
可通行区域的识别不仅对自动驾驶车辆的安全运行至关重要,而且在智能网联交通沙盘和微缩自动驾驶小车的教学和科研中具有重大意义。它为学生和研究人员提供了一个实际的平台,用于探索、实验和验证自动驾驶技术,特别是在复杂的城市环境中。通过这些实践,可以加深对自动驾驶车辆行为的理解,推动自动驾驶技术的发展。
生成过程与假设
在Autoware Universe中,可通行区域(Drivable Area)的生成过程和假设是该平台路径规划算法的核心组成部分。这些假设和过程定义了车辆可以安全行驶的区域,并对如何识别和处理这些区域提供了指导。以下是详细描述:
生成过程
可驾驶车道生成:在生成可行驶区域之前,需要对可行驶车道进行分类。在每个模块(、 Lane Follow
、 Avoidance
、 Lane Change
Goal Planner
Pull Out
等)中选择可驾驶车道,因此有关选择可驾驶车道的更多详细信息可以在每个模块的文档中找到。我们使用以下结构来定义可行驶车道。
struct DrivalbleLanes
{
lanelet::ConstLanelet right_lanelet; // right most lane
lanelet::ConstLanelet left_lanelet; // left most lane
lanelet::ConstLanelets middle_lanelets; // middle lanes
};
排序的可驾驶车道的图像如下图所示。
请注意,可行驶车道的顺序变为
drivable_lanes = {DrivableLane1, DrivableLanes2, DrivableLanes3, DrivableLanes4, DrivableLanes5}
Drivable Area Generation:generateDrivableArea
函数负责生成可通行区域。该函数根据当前的车道信息以及车辆的位置和行驶路径,确定哪些区域是安全的。
使用按车辆通过顺序排列的可驾驶车道创建可驾驶区域。我们从最左边的车道的左边边界和最 right_bound
右边车道的右边边界创建 left_bound
。创建的可驾驶区域的图像将是以下蓝线。请注意,可驾驶区域在 Path
和 PathWithLaneId
消息中定义为
std::vector<geometry_msgs::msg::Point> left_bound;
std::vector<geometry_msgs::msg::Point> right_bound;
右界和左界的每个点在绝对坐标系中都有一个位置。
可驾驶区域扩展:
静态膨胀:每个模块都可以通过参数定义的值静态扩展目标通道的左右边界。这使得大型车辆能够通过狭窄的弯道。这个过程的形象可以描述为
请注意,我们只扩展最右边车道的右边界和最左边车道的左边界。
动态扩展 可行驶区域也可以根据根据路径曲率和自我车辆属性计算得出的最小宽度动态扩展。如果还启用了静态扩展,则动态扩展将在静态扩展之后完成,以便同时应用两个扩展。
无动态扩展 具有动态扩展功能
接下来,我们详细介绍了用于扩展可行驶区域边界的算法。
1 计算和平滑路径曲率
为了避免动态扩展的可行驶区域的突然变化,我们首先尝试尽可能多地重用先前的路径及其计算的曲率。先前的路径点和曲率将重复使用,直到与新路径偏离超过 reuse_max_deviation
参数的第一个先前路径点。在此阶段,路径也根据 进行重采样, resampled_interval
并根据 max_arc_length
进行裁剪。使用得到的预处理路径点和先前的曲率,使用 3 点方法计算新路径点的曲率,并使用具有窗口大小 curvature_average_window
的移动窗口平均值进行平滑处理。
2 对于每个路径点,计算最接近的边界线段和最小可行驶区域宽度
将每个路径点投影在原始左右可行驶区域边界上,以计算其对应的边界指数、与边界的原始距离以及投影点。此外,对于每个路径点,最小可行驶区域宽度使用以下公式计算:其中 是最小可行驶区域宽度,是自我的前悬,是自我的轴距, 是自我的宽度, 是路径曲率。该方程源自 Lim, H.、Kim, C. 和 Jo, A. 的工作,“基于模型预测控制的大曲率道路上自主大型客车横向控制”
3 根据矢量图的动态对象和线串计算每个边界点的最大扩展距离(可选)#
对于每个可行驶区域边界点,我们将其最大扩展距离计算为它与最近“障碍物”的距离(类型 avoid_linestrings.type
为 的地图线串或动态对象轮廓线,如果 dynamic_objects.avoid
设置为 true
)。如果不是 max_expansion_distance
0.0
,则在此处使用小于到最近障碍物的距离。
4 计算每个边界点应从路径上推开多少#
对于每个边界点,将计算一个移位距离。使得相应的左右边界点之间的最终宽度尽可能接近步骤 2 中计算的最小宽度,但单个移位距离保持在先前计算的最大扩展距离以下。
5 将边界点移至步骤 4 中计算的值,并删除结果边界中的所有环#
最后,每个边界点通过步骤 4 中计算的距离远离路径。一旦所有点都移动了,环就会从边界上移除,我们得到最终的扩展可驾驶区域。
可视化最大可行驶区域(调试)#
有时,开发人员可能会在两个地图之间得到不同的结果,这些结果在目视检查期间可能看起来相同。
例如,在同一区域,一个人可以进行回避,而另一个人则不能。这可能与由于用户不合规的矢量地图设计而导致的最大可行驶面积问题有关。
为了调试问题,可以可视化最大可行驶区域边界。
最大可行驶区域可以通过添加标记来 /planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/maximum_drivable_area
可视化
带有阴影道路标记区域的扩展#
如果在车道地图中定义了阴影线道路标记区域,则该区域可用作可驾驶区域。由于该区域表示为 Lanelet2 的多边形格式,因此需要几个步骤才能正确展开。
动态调整:根据车辆的当前位置和预期行驶路径,可通行区域的大小和形状会动态调整。这确保了车辆在变化的道路和交通条件下有一个明确和安全的行驶区域。
假设
-
当前行为模式的相关性:生成的可通行区域基于车辆的当前行为模式。例如,在“跟随车道”模式下,可通行区域通常不包括相邻车道。
-
车道排列顺序:在生成可通行区域时,车道需要按照车辆通过的顺序排列。这有助于确保生成的区域反映了车辆的实际行驶路径。
-
覆盖范围:左右边界应该覆盖路径的前端和尾端,以确保生成的区域是连续和完整的。
参数配置
可通行区域的生成受多种参数影响,这些参数包括静态和动态扩展的设定。例如,车道前进长度、车道后退长度、车道边距和图像分辨率等,都是可配置的,以适应不同的驾驶场景。
名字 | 类型 | 描述 | 持久性 |
---|---|---|---|
~/debug/avoidance_debug_message_array /avoidance_debug_message_array | tier4_planning_msgs::msg::AvoidanceDebugMsgArray | 调试消息以避免。无法生成通知用户回避原因路径。 | volatile |
~/debug/lane_change_debug_message_array /lane_change_debug_message_array | tier4_planning_msgs::msg::LaneChangeDebugMsgArray | 变道的调试消息。在变道过程中通知用户不安全的原因 | volatile |
~/debug/maximum_drivable_area | visualization_msgs::msg::MarkerArray | 显示最大静态行驶面积。 | volatile |
~/debug/turn_signal_info | visualization_msgs::msg::MarkerArray | TBA | volatile |
~/debug/bound | visualization_msgs::msg::MarkerArray | 静态可行驶区域的调试 | volatile |
~/planning/path_candidate/* ~/path_candidate/* | autoware_auto_planning_msgs::msg::Path | 批准前的路径。 | volatile |
~/planning/path_reference/* path_reference/* | autoware_auto_planning_msgs::msg::Path | 每个模块生成的引用路径。 | volatile |
算法内部工作
生成可通行区域的算法涉及复杂的计算,如路径曲率的计算和边界的动态扩展。这些算法根据车辆的动态位置和环境条件调整可通行区域,确保车辆始终在安全区域内行驶。
可驾驶区域用于确定自我车辆可以行驶的区域。静态可行驶区域扩展的主要目标是通过生成一个仅包含车辆当前行为所需空间的区域来确保安全行驶,同时排除非必要区域。例如,当 avoidance
模块运行时,可驾驶区域包括绕过障碍物所需的额外空间,并且它通过不将避让路径延伸到车道区域之外来限制行为。
动态可驾驶区域逻辑
大型车辆需要更多的空间,这有时会导致它们偏离当前车道。一个典型的例子是公共汽车在拐角处转弯。在这种情况下,依靠静态可驾驶区域是不够的,因为静态方法依赖于高清地图提供的车道信息。为了克服静态方法的局限性,动态可行驶区域扩展算法实时调整自动驾驶车辆的可导航空间。它通过重用先前计算的路径数据来节省计算能力,仅在车辆位置发生重大变化时更新。该系统评估适应车辆转弯半径和其他动态因素所需的最小车道宽度。然后,它计算可驾驶区域边界的最佳扩展,以确保有足够的空间进行安全操纵,同时考虑车辆的路径曲率。这些边界可以扩展或收缩的速率被调节,以保持车辆导航的稳定性。该算法旨在最大限度地利用可驾驶空间,同时避开固定障碍物并遵守法定驾驶限制。最后,它应用这些边界调整并平滑路径曲率计算,以确保在整个车辆运行过程中保持安全且合法合规的通航路径。
实际应用
在智能网联沙盘模拟环境中,通过微缩自动驾驶小车学习识别和感知可通行区域是一种创新的应用。这不仅有助于研究和教育目的,也展示了在实际道路环境中应用这些技术的潜力。
-
模拟环境中的测试:在智能网联交通沙盘中,微缩自动驾驶小车可以用于测试和验证可通行区域识别算法的有效性。这种模拟环境为研究提供了一个安全、可控的测试场所。
-
算法优化和验证:通过在沙盘模拟环境中的应用,开发者可以收集数据,分析可通行区域识别算法的表现,并据此进行优化和调整。
-
教育和培训:沙盘环境为学生和研究人员提供了一个实用的平台,用于学习自动驾驶技术,特别是在可通行区域识别和路径规划方面。
总结
总体而言,可通行区域在自动驾驶技术中具有重要意义,特别是在模拟环境中的应用,如智能网联沙盘场景。通过这种方式,可以在安全受控的环境中测试和验证自动驾驶算法,为实际道路应用提供了坚实的基础。