【Autoware】框架结构
智能驾驶核心Autoware智能驾驶核心主要是依赖感知、规划、控制。其次需要传感器、地图、定位模块进行辅助。功能层基础层Planning规划Missing Planning全局路径规划决定起点到终点的路线和普通的地图应用道路规划一样但是侧重于道路可执行性依赖高精地图。Scenario Planning场景规划复杂的交通场景分为路径级决策、速度级决策、车道保持。最核心最复杂的模块核心实现是行为树。Autoware行为树依赖BehaviorTree开源库。主要是做决策所以涉及的算法主要是状态评估、预测、决策、代价计算、规则约束等。Motion Planning运动规划生成可执行的平滑轨迹。涉及路径规划、轨迹平滑、速度规划、轨迹优化等几个步骤。路径规划局部路径生成、避障路径规划搜索算法A*、RRT*、Dijkstra轨迹平滑路径点插值、曲线拟合曲线拟合算法B-Spline、五次多项式、样条插值速度规划速度剖面生成、加减速规划、限速处理速度剖面算法梯形速度规划、S曲线、Jerk-limited轨迹优化动力学约束优化、障碍约束优化、舒适性优化约束优化算法QP优化、MPC、贝塞尔曲线优化Control控制控制架构输出到ECU有两种方式横向、纵向分别输出转向和速度综合控制器统一优化后输出控制算法类型PID算法固定的数学公式通过调节参数进行应用适配。解决状态跟踪的问题例如速度跟踪、位置跟踪、温度控制等。MPC算法提供一个控制框架的算法类别。在约束条件下实时预测未来行为例如自动驾驶在避障时的最有路径跟踪等。LQR算法固定的数学公式基于Riccati方程设计代价矩阵进行应用适配。调节状态平衡点例如最有轨迹跟踪、姿态稳定控制、精确运动控制等。Perception感知主要分两类自身状态感知、环境感知自身感知IMU、RTK/GPS、轮速计、里程计等。不需要复杂的算法状态获取环境感知Camera、LiDAR、Radar等。需要计算机算法进行信息提取基于两类基本算法提供的原始信息在进行传感器级的融合感知。主要工作感知信息的准确性和稳定性。Map地图主要的地图数据结构Lanelet2高精地图主要用于全局规划、车道级导航静态PCD点云地图点云主要用于定位、环境感知静态Occupancy Grid局部避障主要用于运动规划动态静态地图建图Lanelet2需要离线导入PCD利用SLAM算法现场建图动态地图建图Occupancy Grid通过传感器识别障碍物通过栅格的方式标注障碍物位置。实际工作时所有的地图坐标系重合不同地图提供不同的信息协作工作。统一使用UTM坐标系通过TF变换系统进行坐标转换。Localization定位核心是多传感器融合确定车辆再地图中的精确位置和姿态。涉及的传感器包括RTK、IMU、LiDAR、轮速计等。主要技术是基于卡尔曼滤波算法的融合感知。卡尔曼滤波算法的目标是从带有噪声的观测数据中最优地估计系统的真实状态。核心思想是预测未来状态实时更新修正预测数据根据卡尔曼增益决定预测和观测的权重通过协方差矩阵跟踪估计的不确定性还更新预测权重。Sensing传感传感器类型LiDAR、Cameara、Radar、IMU、RTK等。主要的职责原始数据采集这里包括驱动集成或SDK集成最终目的就是获取传感器原始数据数据预处理去噪、下采样、矫正、坐标变换等时间同步时间戳对齐数据质量评估评估传感器数据的可靠性数据标准化发布生成ROS标准消息格式发布系统管理智能驾驶核心模块只是整个分布式系统的一个主要功能所有的计算机系统都离不开系统级的管理Autoware里的系统管理包括任务调度、状态监控、故障诊断、日志管理、启动、安全等等。子模块State Management系统状态管理负责状态机的管理核心组件包括AutowareStateMachine、StateTransitionManagerTask Scheduler任务调度模块负责任务的优先级管理和调度执行核心组建包括TaskScheduler、TaskPriorityQueueFault Diagnosis故障诊断模块负责系统故障的检测和处理核心组件包括FaultDetector、FaultHandler、FaultLoggerSafety Monitoring安全监控模块负责保障车辆安全核心组件包括SafetyMonitor、EmergencyHandlerLog Management日志管理模块负责管理系统日志核心组件包括LogManager、LogUploaderLaunch Management启动管理模块管理系统启动和关闭核心组件包括LaunchManager、HealthCheckerParameter Management参数管理模块管理系统参数核心组件ParameterServer、ParameterValidator相关节点launch_manager启动管理节点职责依次拉起各个模块。模块启动顺序Sensing Localization Map Perception Planning Control System Management HMIautoware_state_machine状态机职责负责系统状态的管理和切换。话题/system/state发布系统状态服务/system/transition状态转换服务autoware_task_scheduler任务调度职责任务队列管理按优先级调度任务。话题/system/tasksystem_monitor系统监控职责监控各个模块的运行状态。话题/system/health发布系统健康状态fault_diagnosis_node故障诊断职责检测传感器、模块、通信等故障。话题/system/fault故障信息发布safety_monitor_node安全监控职责负责安全检测及紧急情况下触发停车。话题/system/safety_event发布安全事件