Autoware 技术代码解读(三)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。通过链接注册并联系客服,可以获得20元代金券(相当于6-7H的免费GPU资源)。欢迎大家体验一下~

0. 引言

在这里插入图片描述

Autoware的整体框架和模块主要包括感知和规划两大部分。其中autoware.ai是ros1,安装可以参照古月老师的博客《Autoware.ai的安装、配置与测试(Docker & 源码编译)》,autoware.auto是ros2版本,安装可以参照古月老师的博客《Autoware.auto的安装、配置与测试(Docker版)》。现在的autoware已经改动很大了,放在了autoware.universe中。Autoware分为Autoware.core 和Autoware.universe 两个版本,其中Autoware.core 是稳定版,Autoware.universe 是开发者版本。

在这里插入图片描述

感知包括定位模块,检测模块,预测模块定位模块使用3D map和SLAM算法来实现,辅助以GNSS和IMU传感器。检测模块使用摄像头和激光雷达,结合传感器融合算法和深度学习网络进行目标检测。预测模块使用定位和检测的结果来预测跟踪目标。

规划模块主要是基于感知的输出结果,进行全局路径规划和局部路径规划。全局路径规划在车辆启动或重启的时候被确定,局部路径根据车辆的状态进行实时更新。例如,如果车辆在障碍物前或停止线前,车辆状态变为“stop”,那么车辆的速度就被规划为0。如果车辆遇到一个障碍物且状态为“avoid”,那么局部跟踪路径就会被重新规划绕过障碍物。主要模块如下所示,通过这个图我们可以一点点剖析整个代码的逻辑结构:

在这里插入图片描述

1. Localization(定位)

  • ekf_localizer 扩展卡尔曼滤波定位器通过将二维车辆动力学模型与输入的自我姿态和自我扭矩信息进行整合,估计出鲁棒且噪音较小的机器人姿态和扭矩。该算法专门为快速移动的机器人设计,例如自动驾驶系统。
  • gyro_odometer 是一个通过结合惯性测量单元和车辆速度来估计扭矩的软件包。
  • initial_pose_button_panel 是一个用来向定位模块发送请求,计算当前自车位姿的软件包。
  • localization_error_monitor 是一个用于诊断定位错误的软件包,通过监测定位结果的不确定性来实现。
  • ndt_scan_matcher 是一个使用NDT扫描匹配方法进行位置估计的软件包。
  • pose_initializer 是一个用来向ekf_localizer发送初始姿态的包。它接收来自GNSS/用户的粗略估计的初始姿态。将姿态传递给ndt_scan_matcher,并通过服务从ndt_scan_matcher获取计算出的自我姿态。最后,它将初始姿态发布到ekf_localizer。该节点依赖于地图高度拟合库。
  • pose_instability_detector 包括一个节点,旨在监测 /localization/kinematic_state 的稳定性,该主题是扩展卡尔曼滤波器(EKF)的输出。
  • pose2twist 节点从输入的姿态历史中计算出速度。除了计算出的twist之外,该节点还输出线性-x和角度-z分量作为浮点消息,以简化调试工作。
  • stop_filter 当这个功能不存在时,每个节点都使用不同的标准来确定车辆是否停止,导致一些节点在停车模式下运行,而另一些节点继续以驾驶模式运行。
  • tree_structured_parzen_estimator 是一个用于黑盒优化的软件包
  • twist2accel 该软件包负责利用ekf_localizer的输出来估计加速度。它使用低通滤波器来减轻噪音
  • YabLoc 是基于视觉的定位系统,配备矢量地图。它通过将从图像中提取的道路标线与矢量地图进行匹配来估计位置。不需要使用点云地图和激光雷达技术。YabLoc 能够使未配备激光雷达的车辆在无点云地图的环境中进行定位。

2. Detection(识别)

  • bytetrack 核心算法名为ByteTrack,主要旨在进行多目标跟踪。由于该算法将几乎所有检测框(包括得分较低的框)进行关联,预计使用该算法可以减少假阴性的数量。
  • compare_map_segmentation 是一个节点,通过使用地图信息(例如pcd、高程图或从map_loader接口中分割地图点云)来过滤输入点云中的地面点。
  • crosswalk_traffic_light_estimator 是一个模块,它从高清地图和检测到的车辆交通信号中估计行人交通信号。
  • detected_object_feature_remover 是一个用于将话题类型从DetectedObjectWithFeatureArray转换为DetectedObjects的软件包
  • detected_object_validation 这个软件包的目的是消除检测到的物体中明显的误报。
  • detection_by_tracker 该软件包将跟踪的物体反馈给检测模块,以保持其稳定性并持续检测物体
  • elevation_map_loader 该软件包提供了用于比较地图分割的高程图
  • euclidean_cluster 欧几里德聚类是一种将点云分成较小部分以分类对象的软件包。该软件包包含两种聚类方法:欧几里德聚类和基于体素网格的欧几里德聚类。
  • front_vehicle_velocity_estimator 这个软件包包含了一个用于离线感知模块分析的前车速度估计。该软件包可以将来自激光雷达点云的速度估计附加到3D检测中的速度信息上
  • ground_segmentation 是一个节点,它从输入点云中移除地面点
  • heatmap_visualizer 是一个用于在BEV空间上可视化检测到的3D物体位置热图的软件包。该软件包用于对检测器进行定性评估和趋势分析,也就是说,例如,热图显示“该检测器在我们车辆附近表现良好,但在远处表现不佳”。
  • image_projection_based_fusion 是一个用于融合图像和3D点云或障碍物(边界框、聚类或分割)中检测到的障碍物的软件包。
  • lidar_apollo_instance_segmentation 该节点基于基于CNN的模型和障碍物聚类方法,将来自激光雷达传感器的3D点云数据分割为障碍物,例如汽车、卡车、自行车和行人。
  • lidar_apollo_segmentation_tvm && lidar_apollo_segmentation_tvm_nodes 一种替代欧几里得聚类的方法。该节点利用神经网络从点云中检测和标记前景障碍物(例如汽车、摩托车、行人)
  • lidar_centerpoint_tvm &&lidar_centerpoint 是一个用于检测动态三维物体的软件包
  • multi_object_tracker 检测结果通过时间序列进行处理。主要目的是为了提供ID和估计速度
  • object_merger 是一个用于通过数据关联合并来自两种方法的检测到的物体的软件包。
  • object_range_splitter 是一个用于根据物体与原点的距离将检测到的物体分成两个消息的软件包。
  • occupancy_grid_map_outlier_filter 这个节点是基于占据栅格地图的异常值过滤器。根据占据栅格地图的实现方式,它可以被称为时间序列中的异常值过滤器,因为占据栅格地图表达了时间序列中的占据概率。
  • probabilistic_occupancy_grid_map 该软件包输出障碍物存在的概率,以占据栅格地图的形式呈现
  • radar_fusion_to_detected_object 该软件包包含一个用于雷达检测到的物体和3D检测到的物体的传感器融合模块。融合节点可以在成功匹配雷达数据时,将速度信息附加到3D检测结果上。跟踪模块使用速度信息来增强跟踪结果,而规划模块则使用它来执行自适应巡航控制等动作。
  • radar_tracks_msgs_converter 这个软件包将从radar_msgs/msg/RadarTracks转换为autoware_auto_perception_msgs/msg/DetectedObject和autoware_auto_perception_msgs/msg/TrackedObject。
  • shape_estimation 该节点根据标签计算出一个精确的物体形状(边界框、圆柱体、凸包),以适应点云聚类。
  • tensorrt_yolo && tensorrt_yolox 该软件包基于YOLO(You only look once)模型,可以在图像上检测目标物体(如汽车、卡车、自行车和行人)的2D边界框
  • traffic_light_classifier 是一个用于使用交通灯周围的裁剪图像进行交通灯标签分类的软件包。该软件包包含两个分类器模型:cnn_classifier和hsv_classifier。
  • traffic_light_map_based_detector 基于地图的交通信号灯检测器根据高清地图计算出图像中交通信号灯的位置。可以通过参数输入校准和振动误差,并且检测到的感兴趣区域的大小将根据误差而变化。
  • traffic_light_selector 该软件包接收多个交通信号灯状态,并输出一个用于规划组件的单个交通信号灯状态。
  • traffic_light_ssd_fine_detector 这是一个使用MobileNetV2和SSDLite进行交通信号灯检测的软件包。
  • traffic_light_visualization 是一个包含两个可视化节点的软件包:traffic_light_map_visualizer是一个节点,它在rviz上以标记的形式显示交通灯的颜色状态和位置。traffic_light_roi_visualizer是一个节点,它在输入图像上绘制交通灯识别节点的结果(交通灯状态、位置和分类概率),如下图所示,并将其发布出去。

3. Prediction(预测)

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/843951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​一款开源的.NET程序集反编译、编辑和调试神器

前言 说到.NET相关的反编译工具大家脑海里第一个想到的工具是什么?ILSpy、dnSpy、还是dotPeek?咱们今天的主要内容是讲讲dnSpyEx(dnSpyEx是dnSpy项目的非官方Fork维护版本)这个开源的.NET程序集反编译、编辑和调试工具该如何使用…

Burnout Drift Multiplayer(多人赛车游戏模板)

Burnout Drift Multiplayer是一个完整的项目,已在PC、Android、iOS和WebGL上发布的Burnout Drift系列中使用。 [包括最新版本的Realistic Car Controller Pro] PC、WebGL和Android演示 包括Burnout Drift系列的所有功能。您只需几分钟即可轻松添加自己的车辆、场景和配乐。 警…

Windows 下载安装Apache

一、官网下载 1、打开Apache官网http://httpd.apache.org,点击Download。 2、选择Windows版本,点击链接。 3、选择对应版本选择下载。 二、安装、设置 1、将下载好的解压。 2、依次打开Apache24-conf-httpd.conf,用记事本打开 1)、修改路径 2)、修改…

mysql去除重复数据

需求描述 doc表有很多重复的title,想去除掉重复的记录 表结构 CREATE TABLE doc (id INT PRIMARY KEY,title VARCHAR(255),content TEXT );去重SQL -- 创建临时表 CREATE TEMPORARY TABLE temp_doc AS SELECT * FROM doc WHERE 10;-- 插入唯一的记录(每个title最…

[数据集][目标检测]红外兔子检测数据集VOC+YOLO格式96张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):96 标注数量(xml文件个数):96 标注数量(txt文件个数):96 标注类别数…

Redis 源码学习记录:散列 (dict)

散列 Redis 源码版本:Redis-6.0.9,本篇文章的代码均在 dict.h / dict.c 文件中。 散列类型可以存储一组无需的键值对,他特别适用于存储一个对象数据。 字典 Redis 通常使用字典结构体存储用户散列数据。字典是 Redis 的重要数据结构。除了散…

java大学城水电管理系统源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学城水电管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 大学城水电管理系统的…

PHP对接百度语音识别技术

PHP对接百度语音识别技术 引言 在目前的各种应用场景中,语音识别技术已经越来越常用,并且其应用场景正在不断扩大。 百度提供的语音识别服务允许用户通过简单的接口调用,将语音内容转换为文本。 本文将通过PHP语言集成百度的语音识别服务…

批量视频剪辑神器:高效提取随机秒数画面,轻松实现视频素材精准筛选!

在数字化时代,视频内容已成为我们生活中不可或缺的一部分。无论是个人创作者还是专业团队,都需要对视频素材进行高效处理。然而,面对大量的视频文件,如何快速提取出我们所需的画面片段,却成为了一个令人头疼的问题。今…

【源码】【海外客服】简洁版海外客服系统/在线客服系统/即时聊天通讯源码

1,此版本采用前台一人或多人与后台一人(管理员)进行会话模式 2,此版本前后台只能发送文字和图片(图片是选择后自动发送) 3,前后台根据IP来识别不同的会话者 4,前台发起会话后&…

大数据——Spark

1.Spark MLlib概述 MLlib是Spark的机器学习(Machine Learning)库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模。 MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等&#xff0…

学习Uni-app开发小程序Day20

今天学习了:页面的渐变背景、使用deep修改子组件样式、全屏页面absolute定位布局和fit-content内容宽度、遮罩层状态转换及日期格式化、uni-popup弹窗层制作弹出信息 页面的渐变背景 需要设置页面背景,使用的是多个页面,这样就可以把背景做…

开源自定义表单系统源码 一键生成表单工具 可自由DIY表单模型+二开

分享一款开源自定义表单系统源码,能够实现99%各行业的报名、预约、加盟申请、调查等应用,而且同时多开创建多个表单,支持自定义各种字段模型,市面上需要的表单模型都含了,随便自定义啦,含完整的代码包和详细…

经典文献阅读之--SMERF(通过标清导航地图增强车道感知和拓扑理解)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G…

数组-捡石子小游戏

一、题目描述 二、解题思路 刚开始拿到题目的时候在想是不是需要把所有情况枚举出来,其实思考一下能看出规律: 1.如果有1、2、3颗石子,小牛一定可以赢; 2.再来看4颗石子的时候,小牛A可以拿1~3颗,但是无论小…

探索电商ERP平台的功能架构:实现高效运营的关键

在当今数字化时代,电子商务已经成为了商业运营的主流模式之一。为了应对日益激烈的市场竞争,企业需要借助先进的技术工具来提高运营效率和管理能力。在这篇博客中,我们将深入探讨电商ERP平台的功能架构,揭示其如何成为实现高效运营…

JVM学习-字节码指令集(一)

概述 Java字节码对于虚拟机,好像汇编语言对于计算机,属于基本执行指令Java虚拟机的指令由一个字节长度的,代表某种特定操作含义 的数字(称为操作码Opcode)以及跟随其后的零至多个代表此操作所需参数(操作数,Operands)而构成&…

【Linux】22. 线程控制

Linux线程控制 POSIX线程库 与线程有关的函数构成了一个完整的系列&#xff0c;绝大多数函数的名字都是以“pthread_”打头的 要使用这些函数库&#xff0c;要通过引入头文<pthread.h> 链接这些线程函数库时要使用编译器命令的“-lpthread”选项 线程创建 pthread_cr…

鸿蒙开发接口UI界面:【@ohos.router (页面路由)】

页面路由 说明开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。页面路由需要在页面渲染完…

AI与空间设计的碰撞?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答9 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你解…