Autoware 学习

news2024/11/23 12:14:47

Autoware不同版本介绍
Autoware官方说明文档:https://autowarefoundation.github.io/autoware-documentation/main
使用ROS2和Autoware的自动驾驶汽车免费在线进阶课 译 https://bbs.huaweicloud.com/blogs/detail/283058

Autoware.AI

第一个基于 ROS 1 发布的 Autoware 发行版,该存储库包含各种软件包,涵盖自动驾驶技术的不同方面 - 传感、驱动、定位、映射、感知和规划。由于多种原因,很难提高 Autoware.AI 的功能,已于2022年底停止维护。想要使用autoware.ai的功能,建议切换到Autoware.core/universe。 autoware.1.10版本后,标定工具箱需要另外安装。现已推出轻量级标定工具,不依赖于autoware环境,即不需要下载安装编译整个autoware环境,可独立运行。

主要支持ubuntu14.04-indigo、Ubuntu16.04-kinetic、ubuntu18.04-melodic。

AI版本是基于ROS1.0实现的,十分适合于自动驾驶初学者,也适合有快速验证科研需求的高校实验室。

Autoware自称是世界上第一个自动驾驶all-in-one的开源软件,基于Apache2协议,在ROS机器人操作系统基础上开发而来,用于仿真实验。在github开源,从2016年12月发布1.0.0版本开始,到1.12.0alpha版本,维护者将其迁移到了gitlab上,而后在github上又将Autoware.AI部分替代原先Autoware版本,所以可以把现在github上的的Autoware.AI视为原Autoware的继任者。

历史版本简要回顾:

v1.2.0 支持ROS Kinetic版本,用于激光雷达追踪的kalman滤波,基于yolo_v2视觉跟踪,增加imu驱动,为NDT定位增加IMU和里程计选项,点云距离滤波,rosbag数据预处理;

v1.3.0 增加基于A*算法的避障,GPU的欧式聚类,基于DNN的交通灯识别;

v1.4.0 增加点云的地面滤波;

v1.5.0 增加Web-Ui,多斑马线检测器,ENet图像语义分割,开始支持aarch64架构,支持NVIDIA DrivePX2,为A*路径规划算法增加虚拟障碍物仿真;

v1.6.0 增加GPU-NDT匹配算法,可以控制一些机动车了,新的Rviz模型,增加了ray地面滤波(也就是多线激光雷达的点云地面滤波),增强了DecisionMarker,基于规则控制机动车,存在激光雷达旋转时NDT匹配算法不工作的问题;

v1.7.0 支持定位多种交通标志,支持IDS-imaging相机,支持北阳2D雷达,增加了多雷达标定工具,相机-雷达联合标定工具,支持Velodyne的32线激光雷达,支持AVT相机,基于MxNet的信号灯识别,增加yolo-v3检测器,增加了车辆状态节点和话题,NDT匹配算法的安全监视器,基于IMM-UKF-PDA的多目标跟踪算法,路径点速度重规划工具;

v1.8.0 开始有相应的demo视频公布在油管;新功能:视觉检测与点云检测的信息融合(YOLOV3)和数据融合(点云着色),为Nvidia Drive PX2和其他aach64架构提供交叉编译,支持西克Sick的LD-MRS激光雷达,点云地图的网格划分,现在可以限制NDT建图算法的最大扫描距离了;一些提升:欧式聚类区分点云更精确,最多支持8个激光雷达,加速point2image(应该是用了OpenMP提速)

v1.9.0 开始逐步弃用ROS indigo版本,基于简单的运动估计来估计物体运动,点云地图中静态目标的过滤(应该是和预建地图做差分),L-shape拟合稳定跟踪多辆车,速腾雷达驱动,无需英伟达的sdk也可以交叉编译

v1.10.0 不再支持ROS indigo,可以过滤掉离自身车辆较远的点云,增加FLIR ADK相机驱动,Ouster激光雷达驱动

v1.11.0 catkin不再支持编译源码,改用colcon;点云快速编码用于目标检测,百度的CNN用于点云分割,基于点云的外形/姿态估计;改进的混合A*算法和代价图;

v1.12.0 v1.13.0 v1.14.0都未有说明

Autoware.Auto

基于 ROS 2 发布的第二个 Autoware 发行版。从 Autoware.AI 开发中吸取的经验教训,Autoware.Auto 采用了不同的开发过程来开发 ROS 2 版本的 Autoware,避免了简单地将 Autoware.AI 从 ROS 1 移植到 ROS 2。取而代之的是,用适当的工程实践将代码库从头开始重写的。 auto版本对新工程师的门槛太高,且进行大规模的架构更改非常困难。 暂时没有找到属于auto版本的标定模块。

主要支持ubuntu18.04-dashing、ubuntu20.04-foxy、galactic。

Auto版本基于ROS2.0实现的,是Autoware在商业落地部署的一次尝试,提出了一套全自动泊车的解决方案,代码量较少,但架构布局十分优美,非常适合商用的二次开发。
在这里插入图片描述

Autoware.core/universe

基于ROS2,Autoware Core 继承了 Autoware.Auto 的原始策略,包含基本的运行时和技术组件,可满足自动驾驶系统所需的传感、计算和驱动等基本功能和能力。Universe 模块是 Core 模块的扩展,可由技术开发人员提供,以增强传感、计算和驱动的功能和能力。 需要另外安装Calibrtion Tools标定工具,且使用标定工具时,需要编译整个autoware环境。

主要支持ubuntu20.04-galactic、ubuntu22.04-humble。
Universe版本是目前Tier IV公司仍在开发维护的版本,功能十分齐全,性能比较稳定。
在这里插入图片描述

在这里插入图片描述

架构

在这里插入图片描述

在这里插入图片描述

代码结构
├── autoware #主要源代码
├── car_demo #主要与仿真相关
├── citysim #主要与仿真相关
├── drivers #不需要太关注,主要与上车测试相关
└── vendor #不需要太关注,主要与上车测试相关
├── autoware
│ ├── common #通用功能
│ ├── core_perception #感知定位
│ ├── core_planning #规划控制
│ ├── documentation #
│ ├── messages #较重要,定义接口
│ ├── simulation #仿真可视化
│ ├── utilities #通用工具
│ └── visualization #仿真可视化
修改launch文件也要编译,因为用的是install里的launch文件
调试时node加上output

在这里插入图片描述

古月居 博客 https://www.guyuehome.com/46964在这里插入图片描述

1、localization(自定位)

lidar_localizer使用来自LiDAR的扫描数据和预先安装的3D地图信息,计算车辆在全球坐标中的自我定位(x,y,z,侧倾,俯仰,偏航)位置。对于与3D地图匹配的LiDAR扫描,我们建议使用正态分布变换(NDT)算法,同时还支持ICP算法。
gnss_localizer将NMEA消息从GNSS接收器转换到(x,y,z,roll,pitch,yaw)位置。该结果可以单独用作自我车辆的位置,也可以用于初始化和补充lidar_localizer的结果。
dead_reckoner主要使用IMU传感器预测自我车辆的下一帧位置,并内插lidar_localizer和gnss_localizer的结果。

2、detection(检测)

lidar_detector从3D激光扫描仪读取点云数据,并提供基于LiDAR的物体检测功能。基本性能来自欧几里德聚类算法,该算法在地面上方找到LiDAR扫描(点云)的聚类。为了对集群进行分类,还支持基于DNN的算法,例如VoxelNet和LMNet。
vision_detector从相机读取图像数据,并提供基于图像的对象检测功能。主要算法包括R-CNN,SSD和Yolo,它们被设计为执行单个DNN以实现实时性能。支持多种检测类型,例如汽车和乘客。
vision_tracker提供了对vision_detector结果的跟踪功能。该算法基于 Beyond Pixels。投影图像平面上的跟踪结果,并通过fusion_tools将其与3D空间中的lidar_detector的结果组合在一起。
fusion_detector可以从激光扫描仪读取点云数据,也可以从相机读取图像数据,并在3D空间中实现更精确的目标检测。激光扫描仪和照相机的位置必须事先校准。当前的实现基于MV3D算法,与原始算法相比,该网络具有较小的扩展性。
fusion_tools结合了lidar_detector和vision_tracker的结果。由vision_detector标识的类信息将添加到由lidar_detector检测到的点云集群中。
object_tracker预测由以上程序包检测和识别的对象的运动。跟踪的结果可以进一步用于物体行为的预测和物体速度的估计。跟踪算法基于卡尔曼滤波器。另一个变体也支持粒子过滤器。

3、prediction(预测)

object_predictor使用上述对象跟踪的结果来预测运动对象(例如汽车和乘客)的未来轨迹。
crash_predictor使用object_predictor的结果来预测自我车辆是否与运动中的物体发生碰撞。除了对象跟踪的结果之外,还需要自我车辆的航路轨迹和速度信息作为输入数据。
cutin_predictor使用与collision_predictor相同的信息来预测相邻车辆是否在自我车辆的前方切入。

4、Decision(决策)

Autoware的决策模块在感知和计划模块中间。根据感知的结果,Autoware决策一个由有限状态机表示的驾驶行为,以便可以选择适当的计划功能。当前的决策方法是基于规则的系统。

4.1 Intelligence
Decision_maker订阅了大量与感知结果、地图信息和当前状态有关的topic,以便发布下一刻的状态topic。状态更改将激活适当的planning功能。
4.2 state
state_machine预先定义的规则范围内改变状态,编排decision_maker。

5、planning(规划)

Autoware中的最后一个计算是计划模块。该模块的作用是根据感知和决策模块的结果制定全局任务和局部(时间)运动的规划。通常,在执行自我车辆启动或重新启动时确定全局任务,而根据状态变化更新局部运动。例如,如果将Autoware的状态设置为“停止”,则计划将自我车辆的速度设置为在具有安全裕度的物体前面或在停止线处变为零。另一个示例是,如果将自动软件的状态设置为“避免”,则计划自我车辆的轨迹绕过障碍物。计划模块中包含的主要软件包如下。

5.1 mission
route_planner搜索到目的地的全局路线。路线由路网中的一组交叉路口表示。
lane_planner确定要使用哪些车道以及route_planner发布的路线。车道由一组路标表示,即,多个路标(每个路标对应于一个车道)由此程序包发布。
waypoint_planner可以替代地用于生成到目的地的一组路标。该程序包与lane_planner的不同之处在于,它发布的是单条路线的中间点,而不是中间点的数组。
waypoint_maker是保存和加载手工waypoint的实用工具。要将航路点保存到指定的文件,您可以在激活localization后手动驾驶车辆,并且Autoware会使用速度信息记录行驶路径的waypoint。以后可以从指定的文件中加载已记录的waypoint,以使运动规划模块订阅它们以遵循该路径。
5.2 motion
velocity_planner更新从lane_planner,waypoints_planner或waypoints_maker *订阅的waypoint的速度计划,以加快/加速周围车辆和道路要素( 例如停车线和交通信号灯)的速度。请注意,嵌入在给定航路点中的速度信息是静态的,而此程序包会根据驾驶场景更新速度计划。
astar_planner实现了混合状态A *搜索算法,该算法生成从当前位置到指定位置的可行轨迹。该软件包可用于避开障碍物和在给定的waypoint上急转弯,以及在诸如停车场等自由空间中进行选路。
adas_lattice_planner实现了状态格规划算法,该算法基于样条曲线,预定义的参数表和ADAS map(也称为矢量地图)信息在当前位置之前生成多个可行轨迹。该软件包主要用于避障和变道。
waypoint_follower实现了Pure Pursuit算法,该算法生成一组扭曲的速度和角速度(或正角度),以通过匀速圆周运动将自我车辆移动到给定航路点上的目标waypoint。该软件包应与velocity_planner,astar_planner和/或adas_lattice_planner结合使用。所发布的速度和角速度(或角度)的扭曲集合将由车辆控制器或线控界面读取,并且最终自动控制自主车辆。

autoware实车实战之一:如何快速适配环境、让自己的小车跑起来

https://blog.csdn.net/qq_38861347/article/details/126741386

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

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

相关文章

linux的CP指令

实现 CP 指令 src 源文件 des 目标文件 执行流程: 打开源文件( src ) open 打开目标文件( des ) open 写入目标文件 write 读取 src 文件到缓存数组 read 关闭目标文件和源文件 close ./a.out src.c de…

用Vue3和Plotly.js打造一个交互式3D图

本文由ScriptEcho平台提供技术支持 项目地址:传送门 3D交互式曲面图绘制 应用场景 本代码适用于需要绘制3D交互式曲面图的场景,如科学数据可视化、地理数据展示、医疗成像等领域。 基本功能 此代码基于Plotly.js库,实现了以下基本功能&…

如何打造安全DNS以保障业务可用?一文解读

DNS自1987年被实施以来,已成为网络通信中最重要的核心基础设施,同时也是企业对外提供数字服务的关键。没有正常安全的DNS服务,企业经营也就无从谈起。在DNS攻击逐年上升且容易被忽略的现代应用时代,如何打造安全DNS?本…

嘉立创学习

1.两个设置,一般用左边那个 2.焊盘分类 基本焊盘 热风盘:也叫花焊盘(负片) 隔离焊盘:外面那圈黑色,用作隔离(负片) 钢网层:(锡膏) 阻焊层&…

达索系统智能制造巡展路演重庆站圆满结束

2024 年 6 月 21 日,达索系统智能制造巡展路演重庆站成功举办。 会议背景 近年,在人工智能、数字孪生,物联网等新兴技术的推动下,智能制造已然成为中国制造业转型升级的“新质生产力”,它让传统制造业脱胎换骨的同时…

vue2axios的使用

1.安装axios npm i axios 2.配置代理服务器 1.在config.js中配置单个代理服务器 // 开启代理服务器 需要重新启动项目devServer: {proxy: http://localhost:5000}配置简单,请求资源时直接发给前端(8080)即可;但不能配置多个代理…

经验分享之会员 SaaS 系统

前言 2018年,这是不平凡的一年;互联网行业的中台战略、会员经济等模式如火如荼,同时也逐渐地走入我们公司每个人的视野。在南海集团的战略规划背景下,当时我所在的公司作为集团的研发中心,承担了对会员 SaaS 系统的建…

【漏洞复现】金和OA 任意文件上传

【产品介绍】 金和OA协同办公管理系统C6软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效…

人脑计算机技术与Neuroplatform:未来计算的革命性进展

引言 想象一下,你在某个清晨醒来,准备开始一天的工作,而实际上你的大脑正作为一台生物计算机的核心,处理着大量复杂的信息。这并非科幻电影的情节,而是人脑计算机技术即将带来的现实。本文将深入探讨FinalSpark公司的…

探索PHP中的函数

在PHP编程中,函数是一个非常重要的概念。函数可以帮助我们将代码组织成可重复使用的块,从而提高代码的可读性和可维护性。本文将介绍PHP中的函数,包括函数的定义、参数传递、返回值、内置函数和自定义函数等内容,帮助读者更好地理…

ONLYOFFICE 8.1 桌面编辑器测评:引领数字化办公新潮流

目录 前言 下载安装 新功能概述 1.PDF 编辑器的改进 2. 演示文稿中的幻灯片版式 3.语言支持的改进 4. 隐藏“连接到云”板块 5. 页面颜色设置和配色方案 界面设计:简洁大方,操作便捷 性能评测:稳定流畅,高效运行 办公环…

算法题--华为od机试考试(整数对最小和、素数之积、找城市)

目录 整数对最小和 题目描述 注意 输出描述 示例1 输入 输出 说明 解析 答案 素数之积 题目描述 输入描述 输出描述 示例1 输入 输出 说明 示例2 输入 输出 说明 解析 找城市 题目描述 输入 输出 示例1 输入 输出 示例2 输入 输出 说明 解析…

Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好

macOS系统虽然以稳定、安全系数高等优点著称,但因其封闭性,不能对NTFS格式磁盘写入数据常被人们诟病。优质的解决方案是使用磁盘管理软件Paragon NTFS for Mac(点击获取激活码)和Tuxera NTFS(点击获取激活码&#xff0…

基于Java的蛋糕预定系统【附源码+LW】

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也日益突出,人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法,但这种管理方法存…

FreeRTOS信号量和互斥量

信息量 简介 信号量是一种解决同步问题的机制,可以实现对共享资源的有序访问。 前面介绍的队列(queue)可以用于传输数据:在任务之间、任务和中断之间。 消息队列用于传输多个数据,但是有时候我们只需要传递状态,这个状态值需要用…

关于bim数字孪生threejs中使用glb文件大小优化及加载慢的说明(笔记)

在用three.js开发的时候发现,稍微大一点的glb或者fbx文件加载的时候很慢很卡 一直不理解这个卡和慢取决于哪些条件,下面来详细说一下 1、关于模型 不是越大加载越卡顿,而是却决于三角面数量,当累计三角面数量达到3000万时会出现明…

基于SSM的大学生家教管理系统【附源码+LW】

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本大学生家教平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

Linux随记(十)

一、harborv2.6.4 --> harbor-offline-installer-v2.11.0-rc3 --> v2.9.4 – 随记 漏洞信息: CVE-2023-20902timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below, Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an atta…

shell编程实战

1.1 shell脚本编程的步骤 需求分析:确定功能 命令测试:确定脚本需要的关键命令 编辑脚本 测试脚本 1.2 操作 1.2.1 实验一 1.需求描述 (1)统计网络中的服务器的mac 注:ARP,地址解析协议 注: (2)检查哪些主机开…

乐队谱在哪里找 乐队功能谱怎么做 Guitar Pro8激活码 吉他谱软件

学习乐队谱对于音乐爱好者来说是一种极具乐趣和挑战的体验。无论是追溯经典曲目还是与其他乐手合作,乐队谱都是实现音乐梦想的必备工具。然而,要找到适合练习的乐队谱并制作出符合乐队演奏需求的功能谱并不容易,需要借助一些方法和工具。下面…