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(预测)

…详情请参照古月居

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nacos 2.x 系列【12】配置加密插件

文章目录 1. 前言2. 安装插件2.1 编译2.2 客户端2.3 服务端 3. 测试 1. 前言 为保证用户敏感配置数据的安全,Nacos提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。 前提条件: 版本:老版本暂时不兼容&…

【最新区块链论文录用资讯】CCF A—INFOCOM 2024 共17篇

Conference:IEEE International Conference on Computer Communications CCF level:CCF A Categories:计算机网络 Year:2024 Num:17 A Generic Blockchain-based Steganography Framework with High Capacity via …

openssh升级

原因:因为低版本出现了漏洞 过程: 此时,root不能登录。 修改/etc/pam.d/login 第2行前面加上#,保存退出 /etc/pam.d/remote 第2行前面加上#,保存退出 此时root可以通过telnet登录了 二、升级openssl和openssh 【L…

校园周边美食探索及分享平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园周边美食探索及分享平台设计实现

目录 一. 前言 二. 功能模块 2.1. 前台首页功能模块 2.2. 用户功能模块 2.3. 管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0…

深入分析 Android Activity (十一)

文章目录 深入分析 Android Activity (十一)1. Activity 的内存管理和优化1.1 内存泄漏的常见原因1.2 避免内存泄漏的方法1.3 内存泄漏检测工具 2. Activity 的配置变更处理2.1 处理配置变更2.2 保存和恢复状态2.3 使用 ViewModel 3. Activity 的测试3.1 单元测试3.2 UI 测试 4…

数据结构(三)栈 队列 数组

2024年5月26日一稿(王道P78) 栈 基本概念 基本操作 顺序存储结构 基本操作 共享栈 链式存储结构 队列 基本概念 顺序存储结构 循环队列 链式存储结构 基本操作 双端队列 栈和队列的应用 括号匹配 表达式求值 递归 层次遍历 计算机系统 数组和特殊矩阵…

绘唐app官方版绘唐3AI工具

绘唐app官方版绘唐3AI工具 激活授权方式:https://qvfbz6lhqnd.feishu.cn/wiki/CcaewIWnSiAFgokOwLycwi0Encf 绘唐app是一款基于人工智能和摄影技术的应用程序,旨在帮助用户将照片转化为唐朝画风的艺术作品。 该应用程序使用先进的图像处理算法&#xf…

上海亚商投顾:沪指冲高回落 电力、电网产业链持续爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,深成指、创业板指均跌超1%。电力、电网股再度爆发,众智科技、郴电国…

「西安邀请媒体参会」媒体宣发专访报道

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 一、媒体邀约目标 为提升活动的知名度和影响力,我们计划邀请西安地区的主流媒体、行业媒体以及网络媒体参与活动,并进行现场报道和专访。通过媒体的力量&#xff…

【云原生 | 59】Docker中通过docker-compose部署ELK

目录 1、组件介绍 2 、项目环境 2.1 各个环境版本 2.2 Docker-Compose变量配置 2.3 Docker-Compose服务配置 3、在Services中声明了四个服务 3.1 ElasticSearch服务 3.2 Logstash服务 3.3 Kibana服务 3.4 Filebeat服务 4、使用方法 4.1 方法一 4.2 方法二 5、启动…

解读makefile中的延迟变量与即时变量

在 Makefile 中,有两种类型的变量:即时变量(immediate variable)和延迟变量(deferred variable)。 它们在 Makefile 的执行过程中具有不同的特性和行为。 即时变量(Immediate Variable&#x…

(C11) 泛型表达式

文章目录 ⭐语法⭐举例🚩判断对象类型🚩判断指针🚩函数重载🚩嵌套使用 END ⭐语法 Ref: 泛型选择 (C11 起) - cppreference.com 关键词: Genericdefault _Generic(控制表达式 , 关联列表) (C11 起) 关联列表 类型名:…

深度学习中文笔记.pdf

深度学习和机器学习应该如何入门呢?这是很多初学者经常提的问题,针对这个问题,相信很多过来人都会推荐吴恩达的在线课程。不过,由于是英文版本,就将很多人挡在了门外。 于是,在国内,以黄海广博士…

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

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

Qt for android : libusb在android中使用

简介 如何在Qt for Android中使用libusb, 其实libusb的文档里面都写的很清楚, 这里只是稍微做下整理。 libusb libusb github源码 libusb release的版本, 有编译好的静态 步骤 1. 下载libusb libusb v1.0.027 源码包 2. 整理提取libusb android使用源…

构建高效稳定的运维服务体系:技术架构解析与最佳实践

在当今数字化时代,运维服务对于企业的稳定运行和业务发展至关重要。本文将深入探讨运维服务的技术架构,介绍如何构建高效稳定的运维服务体系,并分享最佳实践。 ### 1. 概述 运维服务的技术架构是支撑整个运维体系的核心,它涵盖了…

数字孪生技术助力智慧园区建设

随着城市化进程的加速和科技创新的推动,城市面临着诸多挑战和机遇。如何提升城市的竞争力和可持续性,是一个亟待解决的问题。在这个背景下,智慧园区作为一种新型的城市发展模式,引起了越来越多的关注和探索。 什么是智慧园区&…

如何将天猫内容保存为PDF格式?详细步骤与实战解析

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:保存天猫内容的重要性 二、环境准备与工具安装 1. 安装必要的Python包…

[数据集][目标检测]红外车辆检测数据集VOC+YOLO格式13979张类别

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

Ownips+Coze海外社媒数据分析实战指南

目录 一、引言二、ISP代理简介三、应用实践——基于Ownips和coze的社媒智能分析助手3.1、Twitter趋势数据采集3.1.1、Twitter趋势数据接口分析3.1.2、Ownips原生住宅ISP选取与配置3.1.3、数据采集 3.2、基于Ownips和Coze的社媒智能助手3.2.1、Ownips数据采集插件集成3.2.2、创建…