autoware概述以及主要框架各个模块的介绍

2023-10-24 01:30

本文主要是介绍autoware概述以及主要框架各个模块的介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

一、autoware主体框架

autoware主要包括sensing、computing(perception、decision、planning)、actuation等几个部分,如下图所示。

  1. 其中sensing模块对应的是各类传感器对真实世界中各类数据的采样,例如camera采样图像、LiDAR采样激光点云等,采样数据属于未处理的原始数据,需要输入到computing模块进行计算处理
  2. computing模块主要是为了对传感器采样的原始数据进行加工处理,最后以为实现安全高效的导航为目的,将规划结果输出给actuation模块。其中computing模块主要分为三个小模块
    1. perception(感知模块),这部分要处理localization(通过车辆当前采集传感器数据和已有地图进行自身定位,ps若无地图需要通过SLAM构建地图),然后detection模块负责检测周围与车辆有场景交互的非自身个体(车辆、行人等),prediction模块会对检测初得物体进行未来预测估计,以便提前规划防止碰撞。
    2. decision(决策模块),根据之前感知的结果,Autoware决策一个由有限状态机表示的驾驶行为,以便可以选择适当的计划功能。当前的决策方法是基于规则的系统。
    3. planning(规划模块),主要是根据决策和起始点和目标点,采用mission和motion模块可以计算出一条kinodynamic的路径
  3. actuation模块,表示驱动器模块,如YMC驱动器等,接收planning模块出来的规划结果,经历驱动器实现驱动控制。

其各个模块都有对应不同的ros节点,如下图所示

二、各个模块节点的功能简介

1、localization(自定位)

  • lidar_localizer使用来自LiDAR的扫描数据和预先安装的3D地图信息,计算车辆在全球坐标中的自我定位(x,y,z,侧倾,俯仰,偏航)位置。对于与3D地图匹配的LiDAR扫描,我们建议使用正态分布变换(NDT)算法,同时还支持ICP算法。
  • gnss_localizer将NMEA消息从GNSS接收器转换到(x,y,z,roll,pitch,yaw)位置。该结果可以单独用作自我车辆的位置,也可以用于初始化和补充lidar_localizer的结果。
  • dead_reckoner主要使用IMU传感器预测自我车辆的下一帧位置,并内插lidar_localizergnss_localizer的结果。

2、detection(检测)

  • lidar_detector从3D激光扫描仪读取点云数据,并提供基于LiDAR的物体检测功能。基本性能来自欧几里德聚类算法,该算法在地面上方找到LiDAR扫描(点云)的聚类。为了对集群进行分类,还支持基于DNN的算法,例如VoxelNet和LMNet。
  • vision_detector从相机读取图像数据,并提供基于图像的对象检测功能。主要算法包括R-CNN,SSD和Yolo,它们被设计为执行单个DNN以实现实时性能。支持多种检测类型,例如汽车和乘客。
  • vision_tracker提供了对vision_detector结果的跟踪功能。该算法基于 Beyond Pixels。投影图像平面上的跟踪结果,并通过fusion_tools将其与3D空间中的lidar_detector的结果组合在一起。
  • fusion_detector可以从激光扫描仪读取点云数据,也可以从相机读取图像数据,并在3D空间中实现更精确的目标检测。激光扫描仪和照相机的位置必须事先校准。当前的实现基于MV3D算法,与原始算法相比,该网络具有较小的扩展性。
  • fusion_tools结合了lidar_detectorvision_tracker的结果。由vision_detector标识的类信息将添加到由lidar_detector检测到的点云集群中。
  • object_tracker预测由以上程序包检测和识别的对象的运动。跟踪的结果可以进一步用于物体行为的预测和物体速度的估计。跟踪算法基于卡尔曼滤波器。另一个变体也支持粒子过滤器。

3、prediction(预测)

  • object_predictor使用上述对象跟踪的结果来预测运动对象(例如汽车和乘客)的未来轨迹。
  • crash_predictor使用object_predictor的结果来预测自我车辆是否与运动中的物体发生碰撞。除了对象跟踪的结果之外,还需要自我车辆的航路轨迹和速度信息作为输入数据。
  • cutin_predictor使用与collision_predictor相同的信息来预测相邻车辆是否在自我车辆的前方切入。

4、Decision(决策)

Autoware的决策模块在感知和计划模块中间。根据感知的结果,Autoware决策一个由有限状态机表示的驾驶行为,以便可以选择适当的计划功能。当前的决策方法是基于规则的系统。

4.1 Intelligence

  • Decision_maker订阅了大量与感知结果、地图信息和当前状态有关的topic,以便发布下一刻的状态topic。状态更改将激活适当的planning功能。

4.2 state

  • state_machine预先定义的规则范围内改变状态,编排decision_maker

5、planning(规划)

Autoware中的最后一个计算是计划模块。该模块的作用是根据感知和决策模块的结果制定全局任务和局部(时间)运动的规划。通常,在执行自我车辆启动或重新启动时确定全局任务,而根据状态变化更新局部运动。例如,如果将Autoware的状态设置为“停止”,则计划将自我车辆的速度设置为在具有安全裕度的物体前面或在停止线处变为零。另一个示例是,如果将自动软件的状态设置为“避免”,则计划自我车辆的轨迹绕过障碍物。计划模块中包含的主要软件包如下。

5.1 mission

  • route_planner搜索到目的地的全局路线。路线由路网中的一组交叉路口表示。
  • lane_planner确定要使用哪些车道以及route_planner发布的路线。车道由一组路标表示,即,多个路标(每个路标对应于一个车道)由此程序包发布。
  • waypoint_planner可以替代地用于生成到目的地的一组路标。该程序包与lane_planner的不同之处在于,它发布的是单条路线的中间点,而不是中间点的数组。
  • waypoint_maker是保存和加载手工waypoint的实用工具。要将航路点保存到指定的文件,您可以在激活localization后手动驾驶车辆,并且Autoware会使用速度信息记录行驶路径的waypoint。以后可以从指定的文件中加载已记录的waypoint,以使运动规划模块订阅它们以遵循该路径。

5.2 motion

  • velocity_planner更新从lane_plannerwaypoints_plannerwaypoints_maker *订阅的waypoint的速度计划,以加快/加速周围车辆和道路要素( 例如停车线和交通信号灯)的速度。请注意,嵌入在给定航路点中的速度信息是静态的,而此程序包会根据驾驶场景更新速度计划。
  • astar_planner实现了混合状态A *搜索算法,该算法生成从当前位置到指定位置的可行轨迹。该软件包可用于避开障碍物和在给定的waypoint上急转弯,以及在诸如停车场等自由空间中进行选路。
  • adas_lattice_planner实现了状态格规划算法,该算法基于样条曲线,预定义的参数表和ADAS map(也称为矢量地图)信息在当前位置之前生成多个可行轨迹。该软件包主要用于避障和变道。
  • waypoint_follower实现了Pure Pursuit算法,该算法生成一组扭曲的速度和角速度(或正角度),以通过匀速圆周运动将自我车辆移动到给定航路点上的目标waypoint。该软件包应与velocity_plannerastar_planner和/或adas_lattice_planner结合使用。所发布的速度和角速度(或角度)的扭曲集合将由车辆控制器或线控界面读取,并且最终自动控制自主车辆。

三、参考:

https://github.com/Autoware-AI/autoware.ai/wiki/Overview

这篇关于autoware概述以及主要框架各个模块的介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/271802

相关文章

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

关于@RequestParam的主要用法详解

《关于@RequestParam的主要用法详解》:本文主要介绍关于@RequestParam的主要用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 基本用法2. 默认值3. 可选参数4. 绑定到对象5. 绑定到集合或数组6. 绑定到 Map7. 处理复杂类

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(