加粗样式## 2.3 软件构架(Software Architecture)
学习内容:
1. 自动驾驶软件系统的基础结构
2. 标准的软件组成
a) Environment Perception(环境感知)
b) Environment Mapping(环境绘图)
c) Motion Planning(运动规划)
d) Controller(车辆控制)
e) System Supervisor(监控系统)
软件构架:
- 环境感知(Environment Perception)
识别无人车当前所处的位置
对用于驾驶任务环境的重要元素进行分类与定位,元素包括:其他汽车、行人、自行车、道路/标记、标线等影响驾驶行为的物体。 - 环境绘图(Environment Mapping)
创建一组地图用于定位无人车周围环境的对象,从避免碰撞到运动跟踪和运动计划 - 运动规划(Motion Planning)
根据自于感知模块和绘图模块提供信息,做出采取哪种行动、驶向哪里的决定。目的是输出安全、高效和舒适的规划路径,使车辆向目标移动。 - 车辆控制(Controller)
控制器模块得到路径并确定最佳转向角,油门位置,制动踏板位置和档位设置,以精确地遵循规划路径。 - 监控系统(System Supervisor)
监控软件堆栈的所有部分
硬件输出
警示驾驶人系统中存在的问题
目的:确保所有系统都能按预期工作
环境感知
空间中的自我定位
定位模块接受多个信息流,如当前的GPS位置,IMU测量单元和车轮测距,并将上述信息进行整合,以输出准确的车辆定位。
为了获得更高的准确度,一些定位模块还包括了LIDAR和相机的数据。
对环境的重要元素进行分类和定位
检测环境中的动态目标:动态对象检测模块使用一组摄像机输入以及LIDAR点云来创建场景中动态对象周围的3D边界框。3D边界对物体编码类、类型以及物体的确切位置、方向和大小。一旦检测到,跟踪模块随时间跟踪动态对象。跟踪器模块不仅提供动态物体的当前位置,还提供其通过环境路径的历史。路径的历史记录与路线图一起使用,以便预测所有动态物体的未来路径。这通常由预测模块处理,预测模块组合所有信息,关于动态物体和当前位置的,从而预测所有动态物体的路径。
检测环境中的静态目标:静态对象检测模块还依赖于相机 输入和LIDAR数据的组合来识别场景中的重要静态对象。这些重要数据包括无人驾驶车辆的当前车道以及如信号和交通信号灯等监管要素的位置。
环境映射
占据栅格图(Occupancy Grid Map)
占据网格图是所有静态对象的地图,在车辆周围环境中。LIDAR主要用于构建占据栅格图。首先将一组过滤器应用于LIDAR数据,以使得可以用于占据栅格。例如,移除掉可以移动的表面点和动态对象点。占据栅格图将环境表示为一组网格单元并将每个单元被占用的概率相关联。这使我们可以处理测量数据中的不确定性并随时间改善地图。
定位图(Localization Map)
由LIDAR或相机数据构建的定位图由定位模块使用以改进状态估计。在驾驶中,将传感器数据与该地图进行比较以确定汽车相对于定位图的运动。然后将该运动与其他本体感受式传感器的信息组合以准确地定位车辆。
细节道路图(Detailed Road Map)
细节道路图提供了路段的地图,其表示无人驾驶车当前驾驶的驾驶环境。该地图捕捉信号和车道标记,可以用于运动规划中。该地图是传统结合了预先记录的数据和由感知栈收集到的从当前静态环境的输入的信息。
**环境绘图(Environmental Map)和感知模块(Environment Perception)**相互作用以显着提高这两个模块的性能。例如,感知模块提供静态环境信息,可以用于更新细节道路图,细节道路图也能用于给预测模块创建更加准确的动态物体预测。
运动规划
无人驾驶车的运动规划是一项具有挑战性的任务,在单一的集成过程中很难解决。相反,如今大多数无人驾驶车都使用分解将问题分成若干抽象层.
Mission Planner(任务规划):
在最高级别,任务规划部分处理长期计划,并在驾驶任务的整个范围内定义任务,从当前位置通过道路网络到达最终目的地。为了找到完整的线路,任务计划部分确定最佳路线序列,用于连接起点和终点之间,然后将其传递到下一层。
Behavior Planner(行为规划):
行为规划部分是这下一级,用以解决短期规划问题。行为规划部分负责建立一套安全行为行动和动作去执行,在任务路径行进过程中。行为规划部分决策的一个例子是,车辆是否应该合并到相邻车道中,在给定期望速度和附近车辆的行为预测下。除了决策的操作之外,行为规划部分还提供了一组约束来执行每一个动作,例如在切换之前保持在当前通道中的时间。
Local Planner(局部规划):
最后,局部规划部分执行即时或反应规划,并负责定义要驾驶的特定路径和速度曲线。局部规划部分必须是平稳、安全和有效地,在考虑环境和机动所施加的所有当前限制中。为了创建这样的规划,局部规划部分结合所有信息,如行为规划部分、占据栅格图、车辆操作限制以及环境中其他动态物体的信息。局部规划器的输出是一条规划的轨迹,其是在未来的小段时间内组合的期望路径和速度分布。
车辆控制
典型的车辆控制器如何采用给定的轨迹并将其转换为一组精确的驱动命令以供车辆应用。典型的控制器将控制问题分为纵向控制(Velocity Controller)和横向控制(Steering Controller)。横向控制器输出转角,用于计划轨迹,而纵向控制器调节油门、齿轮和驻车系统来获得准确速度。两个控制器计算当前误差并跟踪局部规划的性能,并调节当前驱动命令从而最小化前进误差。
监控系统
系统监控模块是用以持续监控无人驾驶车内的各个方面,并在子系统发生故障给予警告。有两个部分,硬件管理程序(Hardware Supervisor)和软件管理程序(Software Supervisor)。硬件监控器持续监控所有硬件组件,以检查是否存在任何故障,如传感器损坏,测量丢失或信息质量下降。硬件监控器的另一个职责是连续分析任何与硬件输出,不能够匹配无人驾驶车编程范围内的输出。例如,其中一个摄像头传感器被纸袋挡住,下雪时对LIDAR点云数据破坏。软件监控器负责验证软件栈,以确保所有元素正常运行,按照正确的频率,并且提供完整的输出。软件监控器还负责分析所有模块的输出之间的不一致性。