文章目录

  • 前言
    • 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模块相关推荐

  1. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-11项目日志解决方案

    本文目录 1. Net下日志记录 2. NLog的使用     2.1 添加nuget引用NLog.Web.AspNetCore     2.2 配置文件设置     2.3 依赖配置及调用     ...

  2. net core体系-web应用程序-4asp.net core2.0 项目实战(1)-10项目各种全局帮助类

    本文目录 1.  前沿 2.CacheHelper基于Microsoft.Extensions.Caching.Memory封装 3.XmlHelper快速操作xml文档 4.Serializatio ...

  3. vue3.0项目实战 - ElementUI框架版

    系列文章目录 第一章 论vue3.0和vue2.0区别之编程方式及例子详解 第二章 同一台电脑 实现 vue-cli2和vue-cli3同时并存 及 常见命令 第三章 vue3.0项目实战 - Ele ...

  4. OAuth2.0项目实战干货(亚马逊平台对接)

    消息队列的对比-Auth2.0项目实战-亚马逊平台对接 一 OAuth2.0介绍 二 开发背景 三 Auth2.0项目实战***干货 Auth2.0数据流 亚马逊平台: 作为外部第三方平台 内部应用平 ...

  5. Xamarin.Forms 5.0 项目实战发布!

    活动介绍 本次活动主要是 .NET Xamarin.Forms 移动端项目开发实战教程, 与以往相同, 本次的收入(其它部分会另行说明) 将用于社区公益活动, 不限于: 公益性质的个人/组织机构捐赠 ...

  6. QX项目实战-2.模块分类以及配置读取

    QX项目主要实现对文本源数据的解析入库,以及对其后修改过程建立质量控制和追溯流程,以求信息更正管理.数据源自动更新等功能和特性. 初步设想是把系统粗分为预处理.处理.生产和质量控制四个部分.各部分功能 ...

  7. Asp.NET Core2.0 项目实战入门视频课程_完整版

    END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...

  8. vue2.0项目实战(3)使用axios发送请求

    在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...

  9. Django 2.0 项目实战 (2): 查看与编辑用户个人资料,扩展Django自带后台User Admin

    在我们上一篇文章中我们扩展了Django自带的User模型并实现了用户的登录与注册.在本文里,我们将会开发两个功能页面,一个允许用户登录后查看自己的个人信息,一个允许用户编辑个人资料,并在编辑成功后返 ...

最新文章

  1. vs2010,vs2012注释快捷键
  2. java emptylist_Java中Collections的emptyList、EMPTY_LIST详解
  3. 网站故障排查常用命令
  4. 51CTO学院三周年-最受学员喜爱讲师评选大赛
  5. java包的概念及作用
  6. JavaScript 笔记Day1
  7. IntelliJ IDEA 2021.2 正式发布
  8. 寒江的网站基本优化观点
  9. outlook如何设置qq邮箱服务器,qq邮箱关联outlook
  10. 电商购物评论的情感分析
  11. dbca 命令行静默方式创建Oracle RAC
  12. Shiro 第十七章 OAuth2集成
  13. 随机数——Random
  14. 品质网络的迭变之路,以及运营商的未来之匙
  15. (字节跳动公司中山大学合作)IOS科研实训个人报告
  16. 华为云早报 谷歌亚马逊抢食美军100亿美元云计划
  17. 日均调用量超13亿次,阿里达摩院研发全球首个实时翻译直播-1
  18. minio的安装及使用
  19. 树莓派4安装Ubuntu20.04
  20. 淘淘商城第32讲——CMS内容管理系统的搭建

热门文章

  1. 制作产品原型时要注意什么?
  2. 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
  3. 新手入门matlab之线性系统频域分析
  4. bootstrap按钮组btn-group
  5. 二阶系统的单位阶跃响应_数学推导
  6. python turtle画彩虹的代码_Python turtle画图库画姓名实例
  7. Python Scapy发送数据包
  8. 关于仿古砖的历史,你知道多少?
  9. R按比例大小画2个以上的数据的Venn图
  10. 如何在Google文档中添加文本框