本文主要是介绍一 . autoware主体框架概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
整体框架
Sensor(传感器)
Camera
- PointGrey (FLIR) Grasshopper 3 (USB/GigE)
- PointGrey (FLIR) Flea 2/3 (USB/GigE)
- PointGrey (FLIR) Blackfly (USB3/GigE)
- Baumer VLG-22C (USB3/GigE)
- Baumer VCXU-24C (USB3/GigE)
- Allied Vision Camera Mako G-319C (PoE GigE)
- Generic UVC Webcam (USB2/3)
支持多个摄像头传感器,但应针对个别目的单独配置它们。Autoware 将每个摄像头分开,用于物体检测和交通灯识别等目的。 本质上,Autoware 不支持将多个图像连接成一个大图像。
Lidar
- VELODYNE HDL-64E (S1/S2/S3)
- VELODYNE HDL-32E
- VELODYNE VLP-32C
- VELODYNE VLP-16
- VELODYNE VLP-16 Lite
- VELODYNE VLP-16 Hi-Res
- HOKUYO YVT-35LX (3D-URG)
- HOKUYO UTM-30LX (TOP-URG)
- SICK LMS511
- PIONEER 3D LiDAR (yet to be released)
可以通过 TF 将上述 LiDAR 扫描仪的多个单元组合起来,提供丰富的融合点云数据,以实现更精确的目标检测、跟踪和定位。
Radar
- Delphi ESR
Autoware 感知主要基于LiDAR 扫描仪。 Milliwave 雷达驱动器也可用于远距离目标跟踪。
IMU
- Memsic VG440
- Xsens MTi-300
- MicroStrain 3DM-GX5-15
- Novatel IGM S1 IMU
目前,Autoware 的高级用户不看好IMU,因为由 3D地图和里程表增强的基于SLAM的定位在不使用IMU的情况下足够可靠。但是,我们认为 IMU 在某些场景中仍然有用,因此 Autoware 支持 IMU 驱动程序和数据集成到本地化模块中。
GPS/GNSS
- Javad DELTA-3
- MITSUBISHI AQLOC (only available in Japan)
- Trimble NetR9
- Leica Viva GS25
- Applanix APX-15 UAV
GPS/GNSS 接收器通常通过串行接口生成符合 NMEA 的句子(文本字符串),Autoware 完全支持这些句子。 因此,我们相信只要设备符合 NMEA 标准,几乎所有 GPS/GNSS 产品都将与 Autoware 兼容,并与现有的 nmea2tfpose 节点兼容。
Computing/Perception(感知)
Autoware的感知能力由Localization、Detection和Prediction组成。 定位是通过 3D 地图和 SLAM 算法结合 GNSS 和 IMU 传感器实现的。 检测使用具有传感器融合算法和深度神经网络的摄像头和 LiDAR。 预测基于定位和检测的结果。
Localization(定位)
- Lidar_localizer(激光定位): 使用来自 LiDAR 的扫描数据和之前建好3D地图信息匹配,计算出 ego(自车) 车辆在全局坐标中的 (x, y, z, roll, pitch, yaw) 位置。 推荐使用正态分布变换 (NDT) 算法进行激光点云与3D地图的匹配,同时也支持最近邻迭代(ICP) 算法。
- gnss_localizer: 将来自 GNSS 接收器的 NMEA 消息转换为 (x, y, z, roll, pitch, yaw) 位置。 这个结果可以单独作为自车的位置,同时也可以用来初始化和补充lidar_localizer的结果。
- dead_reckoner: 主要使用 IMU 传感器来预测自车的下一帧位置,并对lidar_localizer 和 gnss_localizer 的结果进行插值。
Detection(检测)
- lidar_detector: 从激光雷达读取点云数据,并实现基于LiDAR的障碍物检测功能。 障碍物检测是基于欧几里得聚类算法,该算法在地面上方找到 LiDAR 扫描(点云)的聚类。 为了对集群进行分类,还支持基于 DNN 的算法,例如 VoxelNet 和 LMNet。
- vision_detector: 从摄像头读取图像数据,并提供基于图像的物体检测功能。 主要算法包括 R-CNN、SSD 和 Yolo,它们旨在执行单个 DNN 以实现实时性能。 支持多种检测类别,例如汽车和乘客。
- vision_tracker: 为vision_detector 的结果提供了跟踪功能。该算法基于超像素,通过fusion_tools将图像平面上的跟踪结果投影并与3D空间中的lidar_detector的结果相结合。
- fusion_detector(前融合):获取激光雷达的点云数据和来自相机的图像数据,并在3D空间中实现更精确的对象检测。 在融合数据之前需要校准激光扫描仪和相机的位置。当前的实现基于 MV3D 算法,与原始算法相比,网络略有扩展。
- fusion_tools(后融合):融合了lidar_detector 和vision_tracker 的检测结果。 将vision_detector 识别的类信息添加到lidar_detector 检测到的点云簇中。
- object_tracker(跟踪器): 预测由上述包检测和识别的对象的运动。 跟踪的结果可以进一步用于物体行为的预测和物体速度的估计。 跟踪算法基于卡尔曼滤波器,同时也支持粒子滤波器。
Prediction(预测)
- object_predictor(障碍物运动轨迹预测): 使用上述对象跟踪的结果来预测移动对象(例如汽车和乘客)的未来轨迹。
- collision_predictor(碰撞检测): 使用 object_predictor 的结果来预测自车辆是否涉及与移动物体的可能碰撞。 除了目标跟踪的结果之外,还需要路径点轨迹和自我车辆的速度信息作为输入数据。
- cutin_predictor: 使用与collision_predictor 相同的信息来预测邻居汽车是否切入了本车的前方。
Computing/Decision(决策)
Autoware 的决策模块连接了感知和规划模块。 Autoware根据感知结果决定驾驶行为,以有限状态机为代表,从而选择合适的规划函数。 当前的决策方法是基于规则的系统。
Intelligence
- decision_maker(决策): 订阅大量与感知结果、地图信息和当前状态相关的主题,以便发布下一时刻的状态主题。 这种状态变化将激活适当的规划功能。
State
- state_machine(状态机):在预定义的规则内更改状态,与决策者进行协调。
Computing/Planning(规划)
Autoware 中的最后一个计算模块是规划模块。 该模块的作用是根据感知和决策模块的结果制定全局任务和局部运动的计划。 全局任务通常在自车启动或重新启动时确定,而局部运动根据状态变化进行更新。 例如,如果 Autoware 的状态设置为“停止”,则自车的速度计划在具有安全余量的物体前或停止线处变为零。 另一个例子是,如果 Autoware 的状态设置为“避障”,则自车的轨迹计划绕过障碍物。
Mission(全局规划)
- route_planner: 搜索到目的地的全局路线。 路线由道路网络中的一组交叉点表示。
- Lane_planner: 确定要与 route_planner 发布的路线一起使用的车道。 车道由一组路点表示,即多个路点,每个路点对应一个车道,由这个包发布。
- waypoint_planner: 也可以用于生成一组到达目的地的航点。 这个包与lane_planner 的不同之处在于它发布一个单一的航点而不是一个航点数组。
- waypoint_maker: 是一个实用工具,用于保存和加载手工制作的航点。 要将航点保存到指定文件,您可以在激活定位时手动驾驶车辆,Autoware 会记录行驶路径的航点和速度信息。 稍后可以从指定的文件中加载记录的航点,以使运动规划模块订阅它们以遵循该路径。
Motion(局部规划)
- Velocity_planner(速度规划): 更新从lane_planner、waypoints_planner 或waypoints_maker* 订阅的航点上的速度计划,以便针对周围车辆和道路特征(例如停止线和交通灯)减速/加速。请注意,嵌入在给定航点中的速度信息是静态的,而此包根据驾驶场景更新速度计划。
- astar_planner(A* 搜索算法): 实现了 Hybrid-State A* 搜索算法,该算法生成从当前位置到指定位置的可行轨迹。该软件包可用于在给定航路点上避障和急转弯,以及在停车场等自由空间中进行路由。
- adas_lattice_planner:实现了 State Lattice 规划算法,该算法根据样条曲线、预定义的参数表和 ADAS Map(也称为 Vector Map)信息在当前位置之前生成多个可行轨迹。该软件包主要用于避障和变道。
- waypoint_follower:实现了 Pure Pursuit 算法,该算法生成一组扭曲的速度和角速度(或只是角度),以通过匀速圆周运动将自车移动到给定航路点上的目标航路点。此包应与velocity_planner、astar_planner 和/或adas_lattice_planner 结合使用。发布的速度和角速度(或仅角度)的扭曲集将由车辆控制器或线控接口读取,最后自主车辆被自主控制。
参考:
https://github.com/Autoware-AI/autoware.ai/wiki/Overview
这篇关于一 . autoware主体框架概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!