Autoware 技术代码解读(三)

news2024/10/6 8:39:02

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.coloradmin.cn/o/1711785.html

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

相关文章

物联网应用系统与网关

一. 传感器底板相关设计 1. 传感器设计 立创EDA传感器设计举例。 2. 传感器实物图 3. 传感器测试举例 测试激光测距传感器 二. 网关相关设计 1. LORA,NBIOT等设计 2. LORA,NBIOT等实物图 3. ZigBee测试 ZigBee测试 4. NBIoT测试 NBIoT自制模块的测试…

LAMP集群分布式实验报告

前景: 1.技术成熟度和稳定性: LAMP架构(Linux、Apache、MySQL、PHP)自1998年提出以来,经过长时间的发展和完善,已经成为非常成熟和稳定的Web开发平台。其中,Linux操作系统因其高度的灵活性和稳…

​LabVIEW超声波检测

LabVIEW超声波检测 在现代工业生产和科学研究中,超声检测技术因其无损性、高效率和可靠性而被广泛应用于材料和结构的缺陷检测。然而,传统的超声检测仪器往往依赖于操作者的经验和技能,其检测过程不够智能化,且检测结果的解读具有…

【产品运营】对接上游电商平台需要了解什么?

围绕卖家和平台的运营模式等维度,ISV对接平台可以划分为业务域、开放能力域和产品能力域。 ISV对接平台的最终目地是打通多方数据传输,解决卖家日常运营中的场景起到类似于业务中台的作用。因此我们可以围绕卖家和平台的运营模式等维度划分为&#xff1a…

电脑下载了caj却打不开文献?使用CAJ阅读器,支持caj转word

如果电脑下载了CAJ文件却打不开文献,这通常是因为没有安装合适的阅读器。CAJ文件是中国知网的一种专用全文阅读格式,需要使用专门的CAJ阅读器(CAJViewer)来打开和阅读。 首先:使用CAJ阅读器 请确保你已经正确安装了CA…

迈的普拉姆利普绘图:深入解析与实战应用

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:matplotlib绘图的基本原理 代码案例 二、深入了解:matplo…

IDEA2023.2单击Setting提示报错:Cannot get children Easy Code

1、单击Setting,不能弹出对话框 2、打开IDE Internal Errors发生错误 原因: 报错信息 "Cannot get children Easy Code" 通常指的是 IntelliJ IDEA 在尝试访问或操作 Easy Code 插件的子设置时遇到了问题。 主要检查是有网络(断断…

【面试干货】约瑟夫问题

【面试干货】约瑟夫问题 1、实现思想2、代码实现 💖The Begin💖点点关注,收藏不迷路💖 约瑟夫问题 是一个经典的数学问题,描述如下:编号为1, 2, …, n的n个人按顺时针方向围坐一圈,从第1个人开始…

【测试】PostMan介绍_安装

1、介绍 1.1简介 Postman是一款非常流行的API调试工具,用于构建和使用 API 的 API 平台。Postman 简化了 API 生命周期的每个步骤并简化了协作它能够模拟用户发起的各类HTTP请求,将请求数据发送至服务端,并获取对应的响应结果。通过Postman…

单元测试框架Pytest的基本操作

Pytest基本操作 1. 详解1.1 命名规则:1.2 自定义查找规则:1.3 3种运行方式1.4 执行顺序2. 断言2.1 定义2.2 断言的规则3. mark3.1 mark的作用3.2 mark的标记方式3.3 注册标签名3.4 skip跳过标记4. pytest的参数化5. pytest的夹具(fixture测试夹具)5.1. 作用5.2. 夹具应用场…

李廉洋:5.29黄金早盘2365-2345区间,今日行情走势分析及策略。

黄金消息面分析:当前美国存在一个令人担忧且未被充分关注的问题:房地产行业低迷、高利率和抵押贷款利率、租金高涨以及美联储的紧缩政策构成了一个恶性循环。由于高房价和高抵押贷款利率,美国住房经济活动远低于两年前的水平。为了让该行业好…

pytorch-池化层

目录 1. pooling池化层1.1 down sample2.2 Max pooling1.3 Avg pooling1.3 pooling pytorch实现 2. up sample上采样2.1 up sample2.2 pytorch实现 3. ReLU 1. pooling池化层 1.1 down sample 见下图,隔行隔列采样 2.2 Max pooling 下图采用2x2的filter&#x…

阿里云和AWS的CDN产品对比分析

在现代互联网时代,内容分发网络(CDN)已成为确保网站和应用程序高性能和可用性的关键基础设施。作为两家领先的云服务提供商,阿里云和Amazon Web Services(AWS)都提供了成熟的CDN解决方案,帮助企业优化网络传输和提升用户体验。我们九河云一直致力于阿里云和AWS云相关业务&#…

防火墙技术基础篇:基于Ensp配置防火墙NAT server(服务器映射)

配置防火墙NAT server(服务器映射) 什么是NAT Server (服务器映射) NAT(Network Address Translation,网络地址转换)是一种允许多个设备共享一个公共IP地址的技术。NAT Server,也称为服务器映射,是NAT技术中的一种应…

【Java EE】网络原理——HTTP响应

目录 1.认识“状态码”(status code) 1.1 200 OK 1.2 404 Not Found 1.3 403 Forbodden 1.4 Method Not Allowed 1.5 Internal Sever Error 1.6 504 Gsteway Timeout 1.7 Move temporarily 1.8 Moved Permanently 1.9状态码小结 2.认识响应“报…

考研经验总结——复试上岸(附通信原理)

上岸啦,一志愿拟录取,初试第5、复试4,总成绩第4 文章目录 一、复试流程二、注意事项三、简历模板3.1 基本信息3.2 报考情况3.3 校内实践3.4 荣誉奖励3.5 项目经验3.6 自我介绍 四、通信原理五、最后的总结 一、复试流程 1、 复试流程 准备复…

Tomcat端口配置和网页浏览

安装完成Tomcat后,到安装目录里看到内容如下: 各文件夹作用 bin:可执行文件(启动文件startup.bat、关闭文件shutdown.bat)conf:配置文件(修改端口号:server.xml,建议将s…

动手学深度学习4.5 权重衰减-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:权重衰退_哔哩哔哩_bilibili 本节教材地址:4.5. 权重衰减 — 动手学深度学习 2.0.0 do…

读后感:《SQL数据分析实战》运营SQL实用手册

学习SQL,先有用起来,有了使用价值,之后才是去了解它的原理,让使用更加顺畅。 在大部分业务场景中,通过SQL可以快速的实现数据处理与统计。《SQL数据分析实战》区别于其他工具书,它并没有介绍SQL是什么&…

电脑卡顿---WINDOWS任何关闭应用开机自启动

打开windows11的控制面板,点击应用,点击启动 如下图圈出来的地方就是开机自启动的开关按键。