草庐IT

L4自动驾驶中感知系统遇到的挑战及解决方案

DataFunTalk 2023-03-28 原文

导读: 本次分享的大纲——

  • Perception Introduction
  • Sensor Setup & Sensor Fusion
  • Perception Onboard System
  • Perception Technical Challenges

--

01 Perception Introduction

Perception系统是以多种sensor的数据,以及高精度地图的信息作为输入,经过一系列的计算及处理,对自动驾驶车的周围的环境精确感知。能够为下游模块提供丰富的信息,包括障碍物的位置、形状、类别及速度信息,也包括对一些特殊场景的语义理解(包括施工区域,交通信号灯及交通路牌等)。

Perception系统包括多个方面及子系统:

  • 传感器:传感器的安装,视场角,探测距离,数据吞吐、标定精度,时间同步。因为用到的传感器比较多,时间同步的解决方案这里会起到非常重要的作用。
  • 目标检测及分类:为了保证车辆百分百的安全,能够达到近似百分之百的召回率及非常高的准确率;这里会涉及到深度学习方面的工作,包括3D点云及2D Image上的物体检测及多传感器融合方面等。
  • 多目标追踪:跟进多帧的信息计算并预测障碍物的运动轨迹。
  • 场景理解,包括交通信号灯,路牌,施工区域,以及特殊类别,比如校车,警车。
  • 机器学习分布式训练基础架构及相关的Evaluation评价系统。
  • 数据:大量的标注数据,这里包括3D点云数据及2D的图片数据等。

目前传感器主要分为3个类别:

  • Lidar激光雷达;
  • Camera相机;
  • Radar毫米波雷达。

这张图相当于Perception物体检测的输出,能够检测车辆周围的障碍物,包括车辆、行人、自行车等,同时结合高精度地图,会对周边的Background信息进行输出。

图中绿颜色的是一辆车,橙色的是一辆摩托车,黄颜色的是一个行人,灰颜色是一些背景如植被信息。

结合多帧的信息,对运动的行人和车辆的速度,方向,进行精确的输出。

--

02 Sensor Setup & Sensor Fusion

以上是Perception系统从输入到输出的一个大概介绍。接下来总体介绍Pony.ai第三代车辆的传感器安装方案以及传感器融合的解决方案。

目前我们的整个传感器安装的解决方案,是能够覆盖360度,范围200米的感知距离。从不同传感器的安装,不同角度来看,首先用到了3个激光雷达,顶部和两侧。激光雷达有100米的感知距离。同时通过4个广角的摄像头来覆盖相机360度的视野。远处的视野通过前向的毫米波雷达以及长焦的相机,将感知距离扩到200米的范围。这套传感器配置能保证我们的自动驾驶车辆在居民区、商业区、工业区这样的场景进行自动驾驶。

18年9月份世界人工智能大会上推出的第3代的传感器配置方案。

前边的相机两个广角,一个长焦。使得可以看到更远距离的信号灯的信息,两百米内红绿灯的状态。

上面介绍了整个传感器的安装方案。下面主要介绍下多传感器融合的解决方案。

第一个要解决的问题是把不同的传感器的数据标定到同一个坐标系里。包括相机的内参标定,Lidar到相机的外参标定,雷达到GPS的外参标定。

传感器融合重要的前提是要能把标定精度提高到非常高的一个精度,不管是做结果层面的传感器融合,还是元数据层面的传感器融合,是一个必要的基础。

这张图可以看到,我们将3D的激光点云投射到影像上,可以看到传感器标定的精度还是挺高的。

整个标定的工作基本上已经做到完全自动化的方式。不同传感器标定的方案:

首先是相机内参的标定,内参的标定平台对每一个相机能够在两到三分钟之内做到传感器的标定。

这个图是相机到激光雷达的外参标定,激光雷达是360度旋转的方式,每旋转一周是100毫秒。相机是某一瞬时曝光的问题,所以涉及到时间同步的一个方式,通过Lidar来触发相机曝光。比如说我们有4个相机,能够通过激光雷达去保证时间同步。

3D和2D彼此互补,二者更好的融合能够对感知会有更精确的输出。

--

03 Perception Onboard

上面大概介绍了整个perception的sensor的setup,以及sensor fusion做法。接下来介绍车载的Perception Onboard的架构是什么样的,以及解决方案是什么。

这是整个Perception Onboard的架构。首先用LiDAR,Camera,Radar三种sensor数据通过时间同步,所有的时间误差控制在50毫秒以内。结合sensor的数据,进行frame wise的detection及classification等计算,最后利用多frame信息进行多目标跟踪,最后将相关结果输出。这里涉及到Sensor Fusion, Deep Learning相关的技术细节,这里不做过多的讨论。

  • 整个Perception 系统的解决方案要保证这5点:
  • 首先是安全,保证近乎百分之百的detection 的recall
  • Precision要求非常高,如果低于某个阈值,造成False Positive,车辆在自动驾驶状态下会非常不舒适
  • 尽量输出所有对行车有帮助的信息,包括路牌,交通信号灯及其它场景理解的信息
  • 保证高效的运行,能够近实时的处理大量的sensor的数据
  • scalability可扩展性也很重要,deep learning 依赖大量数据,整个模型的泛化能力如何都是非常重要的。能够让我们的model和一些新的算法能够去适配更多的城市和更多的国家。

--

04 Perception Technical Challenges

下面分享有挑战性的一些场景:

第一部分:precision和recall的balance;

第二部分:长尾场景。

这是晚高峰的十字路口的繁忙场景,有大量行人摩托车穿过十字路口。

通过3D点云数据能够看到的对应的原始数据。

雨天的问题。自动驾驶系统在一些特殊的或者恶劣的天气条件下,处理是非常难的。

比如,激光雷达是能打到水花的。图中白色的是对水花的filter。如果不能对水花进行准确的识别和过滤,会对自动驾驶车辆造成麻烦。这里看到我们目前系统的处理结果,结合Lidar & Camera的数据,对水花有很高的识别率。

长尾的问题

这个是我们在路测时,遇到的两种洒水车。左边是向上喷的雾炮,右边是向两侧喷的洒水车。人类司机可以很容易超过洒水车,但是对于感知系统来说,需要花很多的时间去处理和识别这类场景和车辆,最后让自动驾驶车辆在遇到类似场景获得更好的体感。

小物体的检测

意想不到的事件,路测时比如流浪的小猫小狗的突然出现,我们期望感知系统能够对小物体能够有准确的召回。

对红绿灯来说会更有挑战。会一直遇到新的场景。因为在不同的城市或国家会遇到各种各样的红绿灯。

逆光的问题,或者突然从桥洞下边出来相机曝光的问题。通过动态的去调整相机曝光等方式去解决。

这个也是红绿灯的场景,红绿灯上有倒计时,我们需要识别出倒计时,能够让自动驾驶车辆遇到黄灯时,乘车体验更好。

雨天摄像头的防水问题,也是处理极端气候条件下所必须具备的。

红绿灯进进度条的识别,绿等快变黄要减速。


今天的分享就到这里,谢谢大家。
本文首发于微信公众号“DataFunTalk”
本文由博客一文多发平台 OpenWrite 发布!

有关L4自动驾驶中感知系统遇到的挑战及解决方案的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  3. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  4. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  5. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  6. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  9. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  10. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

随机推荐