Autoware结构概览

2023-10-24 01:30
文章标签 结构 概览 autoware

本文主要是介绍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_plannerwaypoints_plannerwaypoints_maker 订阅的waypoints 更新速度计划,实现加速或减速,以应对周围的车辆和路况信息( 例如停车线和红绿灯)。请注意,内嵌在给定的waypoints中的速度信息是静态的,而此程序包会根据驾驶场景更新速度计划
  • astar_planner实现了*混合状态A 搜索算法,该算法生成从当前位置到指定位置的可行路线。该软件包可用于避开障碍物,并在给定的waypoints 上急转弯,以及在空旷空间(free space)(例如停车场)中进行路线规划。
  • adas_lattice_planner实现了状态格规划算法,该算法基于样条曲线预先定义的参数表ADAS映射(也称为矢量映射)信息,在当前位置生成多个可行的路线。该软件包主要用于避障和变道(lane)。
  • waypoint_follower实现了Pure Pursuit算法,该算法生成一系列组合的速度和角速度(或正角),车辆做匀速圆周运动,将车辆从给定的waypoints移动到目标的waypoints。该软件包应与velocity_plannerastar_planneradas_lattice_planner结合使用。所发布的速度和角速度(或正角)组合的集合将由车辆控制器或线控接口读取,最终实现车辆的自动控制。

3.执行 Actuation

  • Autoware已安装在许多有线车辆上并经过测试。
  • Autoware的计算输出是一组速度,角速度,车轮角度和曲率。这些信息作为命令,通过车辆接口发送到线控器。线控器需要控制转向和油门。

这篇关于Autoware结构概览的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm