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

相关文章

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

oracle11.2g递归查询(树形结构查询)

转自: 一 二 简单语法介绍 一、树型表结构:节点ID 上级ID 节点名称二、公式: select 节点ID,节点名称,levelfrom 表connect by prior 节点ID=上级节点IDstart with 上级节点ID=节点值 oracle官网解说 开发人员:SQL 递归: 在 Oracle Database 11g 第 2 版中查询层次结构数据的快速

Tomcat下载压缩包解压后应有如下文件结构

1、bin:存放启动和关闭Tomcat的命令的路径。 2、conf:存放Tomcat的配置,所有的Tomcat的配置都在该路径下设置。 3、lib:存放Tomcat服务器的核心类库(JAR文件),如果需要扩展Tomcat功能,也可将第三方类库复制到该路径下。 4、logs:这是一个空路径,该路径用于保存Tomcat每次运行后产生的日志。 5、temp:保存Web应用运行过程中生成的临时文件

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。 结构声明 在声明结构时,必须列出它包含的所有成员。 struct tag {member-list} variable-list ; 定义一个结构体变量x(包含

Java Web应用程序的推荐目录结构

以前没有用过maven管理过项目的依赖,最后使用上了maven,发现通过不能方式建立出来的web应用程序目录结构基本都不一样,既然每次都要到网上搜索如何建立maven管理的Web应用程序,不如自己找百度谷歌一下。 找了半天 ,感觉比较好的maven管理的web应用程序目录结构是这个: ├── pom.xml└── src├── main│ ├── java│ │ └── myg

mysql 修改表结构语句

主要还是要参考mysql的官方网站 http://dev.mysql.com/doc/refman/5.7/en/alter-table.html 简单例子: alter table_name alter column old_column_name new_column_name int unsigned;