【Apollo 6.0项目实战】Perception模块
文章目录
- 前言
- Apollo 6.0软件框架
- 一、视觉感知
- 二、激光雷达感知
- 三、LGSVL 传感器感知
- 3.1 3D Ground Truth sensor
- 3.2 Signal sensor
- 3.3 视频演示
- 参考
前言
环境:
- Ubuntu 20.04
- Apollo 6.0
- LGSVL仿真器
Apollo 6.0软件框架
- Perception——感知模块识别自动驾驶汽车周围的环境。感知模块内部包含两个重要的子模块:障碍物检测和交通灯检测。
- Prediction——预测模块用来预测与感知障碍物未来的运动轨迹。
- Routing——路由模块告诉自动驾驶汽车通过全局路径到达目的地。
- Planning——规划模块规划自动驾驶汽车要采取的时空轨迹。
- Control——控制模块通过产生油门、刹车和转向等控制命令来执行计划的时空轨迹。
- CanBus —— CanBus 是将控制命令传递给车辆硬件的接口。它还将机箱信息传递给软件系统。
- HD-Map——该模块类似于库。它不是发布和订阅消息,而是经常用作查询引擎支持,以提供关于道路的特定结构化信息。
- Localization——定位模块利用各种信息源(如 GPS、LiDAR 和 IMU)来估计自动驾驶汽车的位置。
- HMI ——Apollo 中的人机界面或 DreamView 是用于查看车辆状态、测试其他模块和实时控制车辆功能的模块。
- Monitor——车辆中所有模块的监控系统,包括硬件。
- Guardian——新的安全模块,用于干预监控检测到的失败和action center相应的功能。 执行操作中心功能并进行干预的新安全模块应监控检测故障。
- Storytelling——隔离和管理复杂场景的新模块,创建可触发多个模块操作的Story。所有其他模块都可以订阅此特定模块。
本文讲解的是如何在 LGSVL仿真器中测试自动驾驶车辆的感知能力,包括视觉感知、激光雷达感知以及多传感器的感知融合,主要目的是初步了解到 Apollo 感知模块整体结构以及各个模块的主要组成部分,对各感知模块的输入输出有比较清晰的认识。
一、视觉感知
目前关于视觉部分红绿灯检测和障碍物检测的模块化测试没成功,之后再进行补充。可以先看之后的激光雷达感知和 LGSVL 传感器感知。(#-.-)
二、激光雷达感知
进入 svlsimulator 官网给自己的无人车添加激光雷达传感器,调整传感器的位置。
可以参考如下的车辆JSON配置:
"name": "Lidar Sensor","parent": null,"pluginId": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff","sortKey": 9,"plugin": {"isFavored": true,"isShared": false,"isOwned": false,"accessInfo": {"userAccessType": "favored","owner": {"id": "0d888b00-fa53-47c1-882a-b68391268a11","firstName": "SVL","lastName": "Content"}},"supportedSimulatorVersions": ["2021.3","2021.2","2021.2.2","2021.1","2021.1.1"],"id": "b30d0478-8c7b-4687-bfc2-b3cdb3f5faff","name": "Lidar Sensor","type": "LidarSensor","category": "sensor","ownerId": "0d888b00-fa53-47c1-882a-b68391268a11","accessType": "public","description": "This sensor returns a point cloud after 1 revolution.\nSee https://www.svlsimulator.com/docs/simulation-content/sensors-list/#lidar for more details.","copyright": "LG Electronics Inc.","licenseName": "LG Content","imageUrl": "/api/v1/assets/download/preview/dd44a969-c038-4966-a39f-a445ab3b6c00","status": "active","owner": {"id": "0d888b00-fa53-47c1-882a-b68391268a11","firstName": "SVL","lastName": "Content"},"shareRequests": []},"type": "LidarSensor"
注意:我添加的是128线激光雷达,话题名称为 /apollo/sensor/lidar128/compensator/PointCloud2,参考坐标名称为 velodyne128。如果使用其他线束的激光雷达,需要修改 /apollo/modules/perception/production/dag/目录下的dag_streaming_perception.dag 文件和 /apollo/modules/perception/production/conf/perception/lidar目录下的velodyne128_detection_conf.pb.txt 文件。
例如 23 行修改成与 LGSVL 上 Lidar 输出的相同话题名称。
vim modules/perception/production/dag/dag_streaming_perception.dag
修改第1行以及第5行与 LGSVL 中的设置保持一致。
vim modules/perception/production/conf/perception/lidar/velodyne128_detection_conf.pb.txt
完成激光雷达的设置后,启动Apollo Docker容器和 LGSVL 仿真器,打开Dreamview http://localhost:8888/,在上方选择对应的模式、车型以及地图(根据自己的仿真环境选择相应的地图)。
在Module Controller标签页启动Perception模块。
正常情况下的显示如下,可以看到感知模块对点云进行了处理,最终实现目标的识别。
三、LGSVL 传感器感知
Apollo 视觉感知模块输入输出如下图所示:
Apollo 激光雷达感知模块输入输出如下图所示:
多传感器融合后感知模块的输入输出如下图所示:
对比上面三张图可以看出,检测红绿灯模块的输出话题为 /apollo/perception/traffic_light,检测障碍物模块的输出话题为 /apollo/perception/obstacles (具有航向、速度和分类信息的三维障碍物轨迹)和 /perception/inner/PrefusedObjects (输出给融合模块的障碍物信息)。
LGSVL 仿真器提供了3D Ground Truth sensor 和 Signal sensor,分别用作障碍物检测(输出话题为/apollo/perception/obstacles)和交通灯检测(输出话题为/apollo/perception/traffic_light),换句话说,如果添加以上两种传感器,就可以完全绕过 Apollo 的感知模块,直接获取到红绿灯检测的信息和障碍物信息。 当然,这也就没必要给车辆添加激光雷达、相机和毫米波雷达等传感器(如果是需要显示图像、点云信息的话还是得添加相关的传感器),同理Perception 和 Traffic light 模块也就没有启动的必要。
3.1 3D Ground Truth sensor
3D Ground Truth sensor替换 Apollo 的对象检测模块。输出话题 /apollo/perception/obstacles 。
3.2 Signal sensor
Signal sensor 替换 Apollo 的红绿灯检测模块。输出话题为 /apollo/perception/traffic_light 。
3.3 视频演示
【自动驾驶】Apollo 6.0 与 LGSVL 联合仿真(3)
参考
【1】Apollo视觉感知能力介绍
【2】Apollo激光雷达感知介绍
【3】Apollo感知融合能力介绍
【4】LGSVL 仿真器官方文档
【Apollo 6.0项目实战】Perception模块相关推荐
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-11项目日志解决方案
本文目录 1. Net下日志记录 2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类
本文目录 1. 前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...
- vue3.0项目实战 - ElementUI框架版
系列文章目录 第一章 论vue3.0和vue2.0区别之编程方式及例子详解 第二章 同一台电脑 实现 vue-cli2和vue-cli3同时并存 及 常见命令 第三章 vue3.0项目实战 - Ele ...
- OAuth2.0项目实战干货(亚马逊平台对接)
消息队列的对比-Auth2.0项目实战-亚马逊平台对接 一 OAuth2.0介绍 二 开发背景 三 Auth2.0项目实战***干货 Auth2.0数据流 亚马逊平台: 作为外部第三方平台 内部应用平 ...
- Xamarin.Forms 5.0 项目实战发布!
活动介绍 本次活动主要是 .NET Xamarin.Forms 移动端项目开发实战教程, 与以往相同, 本次的收入(其它部分会另行说明) 将用于社区公益活动, 不限于: 公益性质的个人/组织机构捐赠 ...
- QX项目实战-2.模块分类以及配置读取
QX项目主要实现对文本源数据的解析入库,以及对其后修改过程建立质量控制和追溯流程,以求信息更正管理.数据源自动更新等功能和特性. 初步设想是把系统粗分为预处理.处理.生产和质量控制四个部分.各部分功能 ...
- Asp.NET Core2.0 项目实战入门视频课程_完整版
END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...
- vue2.0项目实战(3)使用axios发送请求
在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...
- Django 2.0 项目实战 (2): 查看与编辑用户个人资料,扩展Django自带后台User Admin
在我们上一篇文章中我们扩展了Django自带的User模型并实现了用户的登录与注册.在本文里,我们将会开发两个功能页面,一个允许用户登录后查看自己的个人信息,一个允许用户编辑个人资料,并在编辑成功后返 ...
最新文章
- vs2010,vs2012注释快捷键
- java emptylist_Java中Collections的emptyList、EMPTY_LIST详解
- 网站故障排查常用命令
- 51CTO学院三周年-最受学员喜爱讲师评选大赛
- java包的概念及作用
- JavaScript 笔记Day1
- IntelliJ IDEA 2021.2 正式发布
- 寒江的网站基本优化观点
- outlook如何设置qq邮箱服务器,qq邮箱关联outlook
- 电商购物评论的情感分析
- dbca 命令行静默方式创建Oracle RAC
- Shiro 第十七章 OAuth2集成
- 随机数——Random
- 品质网络的迭变之路,以及运营商的未来之匙
- (字节跳动公司中山大学合作)IOS科研实训个人报告
- 华为云早报 谷歌亚马逊抢食美军100亿美元云计划
- 日均调用量超13亿次,阿里达摩院研发全球首个实时翻译直播-1
- minio的安装及使用
- 树莓派4安装Ubuntu20.04
- 淘淘商城第32讲——CMS内容管理系统的搭建