本文主要是介绍Autoware结构概览,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1.传感器 Sensing
- Camera
- LiDAR
- RADAR
- IMU
- GPS/GNSS
- 2.计算 Computing
- 2.1 感知 Perception
- 1)定位 Localization
- 2)检测 Detection
- 3)预测 Prediction
- 2.2 决策 Decision
- 1)Intelligence
- 2)State
- 2.3 计划 Planning
- 1)Mission
- 2)Motion
- 3.执行 Actuation
1.传感器 Sensing
Camera
LiDAR
RADAR
IMU
GPS/GNSS
2.计算 Computing
2.1 感知 Perception
Autoware的感知能力由定位、检测、预测组成。
通过结合GNSS和IMU传感器的3D地图和SLAM算法来实现定位。
检测中,使用具有传感器融合算法和深度神经网络的摄像机、LiDAR。
预测基于定位和检测的结果。
1)定位 Localization
- lidar_localizer使用来自LiDAR的扫描数据和预先安装的3D地图信息,计算车辆在全局坐标中的(x,y,z,roll,pitch,yaw)位置。
- gnss_localizer将NMEA消息从GNSS接收器转换到(x,y,z,roll,pitch,yaw)位置,此结果可以作为车辆的位置,也可以用于初始化和补充lidar_localizer的结果。
- dead_reckoner主要使用IMU传感器预测车辆的下一帧位置,并插入lidar_localizer和gnss_localizer的结果中。
2)检测 Detection
- lidar_detector从3D激光扫描仪读取point cloud数据,并提供基于LiDAR的物体检测功能。该功能主要来自Euclidean Clustering算法,可在地面上找到LiDAR扫描(point cloud)的集群。为了对集群进行分类,还支持基于DNN的算法,例如VoxelNet和LMNet。
- vision_detector从摄像机中读取图像数据,并提供基于图像的物体检测功能。为了执行单个DNN以达到实时性能,主要的算法有:R-CNN,SSD和Yolo。支持多种类型检测,例如车辆和乘客。
- vision_tracker提供了对vision_detector结果的跟踪功能。该算法基于超越像素Beyond Pixels。将跟踪结果投影在平面图像中,并通过fusion_tools与lidar_detector在3D空间中的结果结合。
- fusion_detector可以从激光扫描仪中读取point cloud数据,也可以从摄像机中读取图像数据,并在3D空间中实现更精确的目标检测。激光扫描仪和摄像机的位置必须事先校准。当前的实现基于MV3D算法,与原始算法相比,具有较小的网络扩展性。
- fusion_tools结合了lidar_detector和vision_tracker的结果。由vision_detector标识的分类信息,将添加到由lidar_detector检测到的point cloud集群中。
- object_tracker预测由以上程序包检测和识别到的物体的运动。跟踪的结果可以进一步用于预测物体的行为和估计物体的速度。跟踪算法基于Kalman Filters算法。另一个变体也支持Particle Filters。
3)预测 Prediction
- object_predictor使用上述对象跟踪的结果来预测运动物体未来的轨迹,例如汽车和乘客。
- **collision_predictor **使用object_predictor的结果,来预测车辆是否会与运动中的物体发生碰撞。除了物体的跟踪结果外,还需要车辆的运动轨迹和速度信息作为输入数据。
- cutin_predictor使用与collision_predictor相同的信息来预测相邻车辆是否在自己车辆的前面切入。
2.2 决策 Decision
Autoware的决策模块跨越了感知模块和计划模块。根据感知的结果,Autoware做出驾驶行为的决策,驾驶车辆的状态必须是有限的,以便可以选择合适的计划。当前的决策方法是基于规则的系统。
1)Intelligence
- Decision_maker订阅了与大量感知perception的结果、地图信息、当前状态有关的topic,以便发布下一时刻状态的topic。状态改变时,将激活合适的planning功能。
2)State
- state_machine在预先定义的规则下,与decision_maker一起改变车辆状态。
2.3 计划 Planning
该模块的作用是根据感知模块perception和决策模块decision的结果制定全局任务和局部(temporal)运动的计划。通常在车辆启动或重启时确定全局任务,同时会根据状态变化更新局部运动。例如,如果将Autoware的状态设置为“停止”,则车辆的速度将会在物体的安全距离或在停止线处变为零。另一个例子,如果将Autoware的状态设置为“avoid”,则车辆的运动轨迹将会绕过障碍物。
1)Mission
- route_planner搜索到目的地的全局路线,路线由路线网络中的一组交叉路口表示。
- lane_planner根据route_planner发布的路线,确定要使用哪些lanes。lanes由一组waypoints表示,即多个waypoints(每个waypoints对应一条lane),由此程序包发布。
- waypoint_planner也可以用于生成到目的地的一组waypoints。该程序包与lane_planner的不同之处在于,它发布的是waypoints的单个路线stroke,而不是waypoints的数组。
- waypoint_maker是一种实用工具,用于保存和加载手动添加的waypoints。要将waypoints保存到指定文件,您可以在激活定位(localization ) 后手动驾驶车辆,并且Autoware会根据速度信息记录行驶路径上的waypoints。以后可以从指定文件中加载这些已记录的waypoints,使计划模块中的motion订阅它们来follow该路径。
2)Motion
- velocity_planner根据从lane_planner或waypoints_planner或waypoints_maker 订阅的waypoints 更新速度计划,实现加速或减速,以应对周围的车辆和路况信息( 例如停车线和红绿灯)。请注意,内嵌在给定的waypoints中的速度信息是静态的,而此程序包会根据驾驶场景更新速度计划。
- astar_planner实现了*混合状态A 搜索算法,该算法生成从当前位置到指定位置的可行路线。该软件包可用于避开障碍物,并在给定的waypoints 上急转弯,以及在空旷空间(free space)(例如停车场)中进行路线规划。
- adas_lattice_planner实现了状态格规划算法,该算法基于样条曲线、预先定义的参数表和ADAS映射(也称为矢量映射)信息,在当前位置生成多个可行的路线。该软件包主要用于避障和变道(lane)。
- waypoint_follower实现了Pure Pursuit算法,该算法生成一系列组合的速度和角速度(或正角),车辆做匀速圆周运动,将车辆从给定的waypoints移动到目标的waypoints。该软件包应与velocity_planner,astar_planner和adas_lattice_planner结合使用。所发布的速度和角速度(或正角)组合的集合将由车辆控制器或线控接口读取,最终实现车辆的自动控制。
3.执行 Actuation
- Autoware已安装在许多有线车辆上并经过测试。
- Autoware的计算输出是一组速度,角速度,车轮角度和曲率。这些信息作为命令,通过车辆接口发送到线控器。线控器需要控制转向和油门。
这篇关于Autoware结构概览的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!