自动驾驶合集19

# 自动驾驶与轨迹预测

轨迹预测在自动驾驶中承担着重要的角色,自动驾驶轨迹预测是指通过分析车辆行驶过程中的各种数据,预测车辆未来的行驶轨迹。作为自动驾驶的核心模块,轨迹预测的质量对于下游的规划控制至关重要。轨迹预测任务技术栈丰富,需要熟悉自动驾驶动/静态感知、高精地图、车道线、神经网络架构(CNN&GNN&Transformer)技能等,入门难度很大!

入门相关知识

1.预习的论文有没有切入顺序?

A:先看survey,problem formulation, deep learning-based methods里的sequential network,graph neural network和Evaluation。

2.行为预测是轨迹预测吗

A:是耦合的,但不一样。行为一般指目标车未来会采取什么动作,变道停车超车加速左右转直行等等。轨迹的话就是具体的具有时间信息的未来可能的位置点

3.请问Argoverse数据集里提到的数据组成中,labels and targets指的是什么呢?labels是指要预测时间段内的ground truth吗

A:我猜这里想说的是右边表格里的OBJECT_TYPE那一列。AV代表自动驾驶车自己,然后数据集往往会给每个场景指定一个或多个待预测的障碍物,一般会叫这些待预测的目标为target或者focal agent。某些数据集还会给出每个障碍物的语义标签,比如是车辆、行人还是自行车等。

Q2:车辆和行人的数据形式是一样的吗?我的意思是说,比如一个点云点代表行人,几十个点代表车辆?

A:这种轨迹数据集里面其实给的都是物体中心点的xyz坐标,行人和车辆都是

Q3:argo1和argo2的数据集都是只指定了一个被预测的障碍物吧?那在做multi-agent prediction的时候 这两个数据集是怎么用的

A:argo1是只指定了一个,argo2其实指定了多个,最多可能有二十来个的样子。但是只指定一个并不妨碍你自己的模型预测多个障碍物。

4.路径规划一般考虑低速和静态障碍物  轨迹预测结合的作用是??关键snapshot?

A:”预测“自车轨迹当成自车规划轨迹,可以参考uniad

5.轨迹预测对于车辆动力学模型的要求高吗?就是需要数学和汽车理论等来建立一个精准的车辆动力学模型么?

A:nn网络基本不需要哈,rule based的需要懂一些

6. 模模糊糊的新手小白,应该从哪里在着手拓宽一下知识面(还不会代码撰写)

A:先看综述,把思维导图整理出来,例如《Machine Learning for Autonomous Vehicle's Trajectory Prediction: A comprehensive survey, Challenges, and Future Research Directions》这篇综述去看看英文原文

7.预测和决策啥关系捏,为啥我觉得好像预测没那么重要?

A1(stu): 默认预测属于感知吧,或者决策中隐含预测,反正没有预测不行。
A2(stu): 决策该规控做,有行为规划,高级一点的就是做交互和博弈,有的公司会有单独的交互博弈组

8.目前头部公司,一般预测是属于感知大模块还是规控大模块?

A:预测是出他车轨迹,规控是出自车轨迹,这俩轨迹还互相影响,所以预测一般放规控。

Q: 一些公开的资料,比如小鹏的感知xnet会同时出预测轨迹,这时候又感觉预测的工作是放在感知大模块下,还是说两个模块都有自己的预测模块,目标不一样?

A:是会相互影响,所以有的地方预测和决策就是一个组。比如自车规划的轨迹意图去挤别的车,他车一般情况是会让道的。所以有些工作会把自车的规划当成他车模型输入的一部分。可以参考下M2I(M2I: From Factored Marginal Trajectory Prediction to Interactive Prediction). 这篇思路差不多,可以了解  PiP: Planning-informed Trajectory Prediction for Autonomous Driving

9.argoverse的这种车道中线地图,在路口里面没有车道线的地方是怎么得到的呀?

A: 人工标注的

10.用轨迹预测写论文的话,哪篇论文的代码可以做baseline?

A: hivt可以做baseline,蛮多人用的

11.现在轨迹预测基本都依赖地图,如果换一个新的地图环境,原模型是否就不适用了,要重新训练吗?

A: 有一定的泛化能力,不需要重新训练效果也还行

12.对多模态输出而言,选择最佳轨迹的时候是根据概率值最大的选吗

A(stu): 选择结果最好的

Q2:结果最好是根据什么来判定呢?是根据概率值大小还是根据和gt的距离

A: 实际在没有ground truth的情况下,你要取“最好”的轨迹,那只能选择相信预测概率值最大的那条轨迹了

Q3: 那有gt的情况下,选择最好轨迹的时候,根据和gt之间的end point或者average都可以是吗

A: 嗯嗯,看指标咋定义

轨迹预测基础模块

1.Argoverse数据集里HD-Map怎么用,能结合motion forecast作为输入,构建驾驶场景图吗,异构图又怎么理解?

A:这个课程里都有讲的,可以参照第二章,后续的第四章也会讲.  异构图和同构图的区别:同构图中,node的种类只有一种,一个node和另一个node的连接关系只有一种,例如在社交网络中,可以想象node只有‘人’这一个种类,edge只有‘认识’这一种连接。而人和人要么认识,要么不认识。但是也可能细分有人,点赞,推文。则人和人可能通过认识连接,人和推文可能通过点赞连接,人和人也可能通过点赞同一篇推文连接(meta path)。这里节点、节点之间关系的多样性表达就需要引入异构图了。异构图中,有很多种node。node之间也有很多种连接关系(edge),这些连接关系的组合则种类更多(meta-path), 而这些node之间的关系有轻重之分,不同连接关系也有轻重之分。

2.A-A交互考虑的是哪些车辆与被预测车辆的交互呢?

A:可以选择一定半径范围内的车,也可以考虑K近邻的车,你甚至可以自己提出更高级的启发式邻居筛选策略,甚至有可能可以让模型自己学出来两个车是否是邻居

Q2:还是考虑一定范围内的吧,那半径大小有什么选取的原则吗?另外,选取的这些车辆是在哪个时间步下的呢

A:半径的选择很难有标准答案,这本质上就是在问模型做预测的时候到底需要多远程的信息,有点像在选择卷积核的大小对于第二个问题,我个人的准则是,想要建模哪个时刻下物体之间的交互,就根据哪个时刻下的物体相对位置来选取邻居

Q3:这样的话对于历史时域都要建模吗?不同时间步下在一定范围内的周边车辆也会变化吧,还是说只考虑在当前时刻的周边车辆信息

A:都行啊,看你模型怎么设计

3.老师uniad端到端模型中预测部分存在什么缺陷啊?

A:只看它motion former的操作比较常规,你在很多论文里都会看到类似的SA和CA。现在sota的模型很多都比较重,比如decoder会有循环的refine

A2:做的是marginal prediction不是joint prediction;2. prediction和planning是分开来做的,没有显式考虑ego和周围agent的交互博弈;3.用的是scene-centric representation,没有考虑对称性,效果必拉

Q2:啥是marginal prediction啊

A:具体可以参考scene transformer

Q3:关于第三点,scene centric没有考虑对称性,怎么理解呢

A:建议看HiVT, QCNet, MTR++.当然对于端到端模型来说对称性的设计也不好做就是了

A2:可以理解成输入的是scene的数据,但在网络里会建模成以每个目标为中心视角去看它周边的scene,这样你就在forward里得到了每个目标以它自己为中心的编码,后续可以再考虑这些编码间的交互

4. 什么是以agent为中心?

A:每个agent有自己的local region,local region是以这个agent为中心

5.轨迹预测里yaw和heading是混用的吗

A:可以理解为车头朝向

6.argoverse地图中的has_traffic_control这个属性具体代表什么意思?

A:其实我也不知道我理解的对不对,我猜是指某个lane是否被红绿灯/stop sign/限速标志等所影响

7. 请问Laplace loss和huber loss 对于轨迹预测而言所存在的优劣势在哪里呢?如果我只预测一条车道线的话

A:两个都试一下,哪个效果好哪个就有优势。Laplace loss要效果好还是有些细节要注意的

Q2:是指参数要调的好吗

A:Laplace loss相比L1 loss其实就是多预测了一个scale参数

Q3:对的 但似乎这个我不知道有啥用 如果只预测一个轨迹的话。感觉像是多余的。我把它理解为不确定性 不知道是否正确

A:如果你从零推导过最小二乘法就会知道,MSE其实是假设了方差为常数的高斯分布的NLL。同理,L1 loss也是假设了方差为常数的Laplace分布的NLL。所以说LaplaceNLL也可以理解为方差非定值的L1 loss。这个方差是模型自己预测出来的。为了使loss更低,模型会给那些拟合得不太好的样本一个比较大的方差,而给拟合得好的样本比较小的方差

Q4:那是不是可以理解为对于非常随机的数据集【轨迹数据存在缺帧 抖动】 就不太适合Laplace 因为模型需要去拟合这个方差?需要数据集质量比较高

A:这个说法我觉得不一定成立。从效果上来看,会鼓励模型优先学习比较容易拟合的样本,再去学习难学习的样本

Q5:还想请问下这句话(Laplace loss要效果好还是有些细节要注意的)如何理解 A:主要是预测scale那里。在模型上,预测location的分支和预测scale的分支要尽量解耦,不要让他们相互干扰。预测scale的分支要保证输出结果>0,一般人会用exp作为激活函数保证非负,但是我发现用ELU +1会更好。然后其实scale的下界最好不要是0,最好让scale>0.01或者>0.1啥的。以上都是个人看法。其实我开源的代码(周梓康大佬的github开源代码)里都有这些细节,不过可能大家不一定注意到。

给出链接:https://github.com/ZikangZhou/QCNet

https://github.com/ZikangZhou/HiVT

8. 有拿VAE做轨迹预测的吗,给个链接!

https://github.com/L1aoXingyu/pytorch-beginner/tree/master/08-AutoEncoder

9. 请问大伙一个问题,就是Polyline到底是啥?另外说polyline由向量Vector组成,这些Vector是相当于节点吗?

A:Polyline就是折线,折线就是一段一段的,每一段都可以看成是一段向量

Q2:请问这个折线段和图神经网络的节点之间的边有关系吗?或者说Polyline这个折现向量相当于是图神经网络当中的节点还是边呀?

A:一根折线可以理解为一个节点。轨迹预测里面没有明确定义的边,边如何定义取决于你怎么理解这个问题。

Q3: VectorNet里面有很多个子图,每个子图下面有很多个Polyline,把Polyline当做向量的话,就相当于把Polyline这个节点变成了向量,相当于将节点进行特征向量化对吗?然后Polyline里面有多个Vector向量,就是相当于是构成这个节点的特征矩阵么?

A: 一个地图里有很多条polyline;一个Polyline就是一个子图;一个polyline由很多段比较短的向量组成,每一段向量都是子图上的一个节点

10. 有的论文,像multipath++对于地图两个点就作为一个单元,有的像vectornet是一条线作为一个单元,这两种有什么区别吗?

A: 节点的粒度不同,要说效果的话那得看具体实现;速度的话,显然粒度越粗效率越高

Q2:从效果角度看,什么时候选用哪种有没有什么原则?

A: 没有原则,都可以尝试

11.有什么可以判断score的平滑性吗? 如果一定要做的话

A: 这个需要你输入是流动的输入比如0-19和1-20帧然后比较两帧之间的对应轨迹的score的差的平方,统计下就可以了

Q2: Thomas老师有哪些指标推荐呢,我目前用一阶导数和二阶导数。但好像不是很明显,绝大多数一阶导和二阶导都集中在0附近。

A: 我感觉连续帧的对应轨迹的score的差值平方就可以了呀,比如你有连续n个输入,求和再除以n。但是scene是实时变化的,发生交互或者从非路口到路口的时候score就应该是突变的

12.hivt里的轨迹没有进行缩放吗,就比如×0.01+10这种。分布尽可能在0附近。我看有的方法就就用了,有的方法就没有。取舍该如何界定?

A:就是把数据标准化归一化呗。可能有点用 但应该不多

13.HiVT里地图的类别属性经过embedding之后为什么和数值属性是相加的,而不是concat?

A:相加和concat区别不大,而对于类别embedding和数值embedding融合来说,实际上完全等价

Q2: 完全等价应该怎么理解?

A: 两者Concat之后再过一层线性层,实际上等价于把数值embedding过一层线性层以及把类别embedding过一层线性层后,两者再相加起来.把类别embedding过一层线性层其实没啥意义,理论上这一层线性层可以跟nn.Embeddding里面的参数融合起来

14.作为用户可能更关心的是,HiVT如果要实际部署的话,最小的硬件要求是多少?

A:我不知道,但根据我了解到的信息,不知道是NV还是哪家车厂是拿HiVT来预测行人的,所以实际部署肯定是可行的

15. 基于occupancy network的预测有什么特别吗?有没有论文推荐?

A:目前基于occupancy的未来预测的方案里面最有前途的应该是这个:https://arxiv.org/abs/2308.01471

16.考虑规划轨迹的预测有什么论文推荐吗?就是预测其他障碍物的时候,考虑自车的规划轨迹?

A:这个可能公开的数据集比较困难,一般不会提供自车的规划轨迹。上古时期有一篇叫做PiP的,港科Haoran Song。我感觉那种做conditional prediction的文章都可以算是你想要的,比如M2I

17.有没有适合预测算法进行性能测试的仿真项目可以学习参考的呢

A(stu):这个论文有讨论:Choose Your Simulator Wisely A Review on Open-source Simulators for Autonomous Driving

18.请问如何估计GPU显存需要多大,如果使用Argoverse数据集的话,怎么算

A:和怎么用有关系,之前跑hivt我1070都可以,现在一般电脑应该都可以

whaosoft aiot http://143ai.com

# 巧用NeRF生成的自动驾驶仿真数据

神经辐射场(NeRF)已成为推进自动驾驶(AD)重新搜索的有前途的工具,提供可扩展的闭环模拟和数据增强功能。然而,为了信任模拟中获得的结果,需要确保AD系统以相同的方式感知真实数据和渲染数据。尽管渲染方法的性能正在提高,但许多场景在忠实重建方面仍然具有固有的挑战性。为此,我们提出了一种新的视角来解决真实数据与模拟数据之间的差距。我们不只是专注于提高渲染保真度,而是探索简单而有效的方法,在不影响真实数据性能的情况下,增强感知模型对NeRF伪影的鲁棒性。此外,我们使用最先进的神经渲染技术,首次对AD设置中的真实到模拟数据间隙进行了大规模调查。具体来说,我们在真实和模拟数据上评估了对象检测器和在线映射模型,并研究了不同预训练策略的效果。我们的结果显示,模型对模拟数据的稳健性显著提高,甚至在某些情况下提高了真实世界的性能。最后,我们深入研究了真实到模拟间隙与图像重建指标之间的相关性,将FID和LPIPS确定为强指标。

在本文中,我们提出了一种新的视角来缩小智驾系统不同感知模块的真实数据和模拟数据之间的差距。我们的目标不是提高渲染质量,而是在不降低真实数据性能的情况下,使感知模型对NeRF伪影更具鲁棒性。我们认为,这一方向是对提高NeRF性能的补充,也是实现可扩展虚拟AV测试的潜在关键。作为朝着这个方向迈出的第一步,我们表明,即使是简单的数据增强技术也会对模型对NeRF伪影的鲁棒性产生很大影响。

此外,我们对大规模AD数据集进行了首次广泛的real2sim gap研究,并评估了多个目标检测器以及在线建图模型对真实数据和最先进(SOTA)神经渲染方法数据的性能。我们的研究包括训练过程中不同数据增强技术的影响,以及推理过程中NeRF渲染的保真度。我们发现,在模型微调过程中集成这些数据显著增强了它们对模拟数据的鲁棒性,在某些情况下,甚至提高了对真实数据的性能。最后,我们研究了real2sim间隙和常见图像重建指标之间的相关性,以深入了解将NeRFs用作AD数据模拟器的重要意义。我们发现LPIPS和FID是real2sim差距的有力指标,并进一步证实了我们提出的增强降低了对较差视图合成的敏感性。

方法详解

NeRF驱动的模拟引擎可以大大加速AD功能的测试和验证,因为它们可以使用已经收集的数据探索新的虚拟场景。然而,为了使此类模拟结果可信,AD系统在暴露于渲染数据和真实数据时必须以相同的方式运行。以前,这已经通过渲染更真实的传感器数据来改进模拟来解决。在这项工作中,我们提出了一种替代和补充的方法,即我们调整AD系统,使其对真实数据和模拟数据之间的差异不那么敏感。

作为朝着这个方向迈出的第一步,我们探索了不同的微调策略如何使感知模型对渲染数据中的伪影更具鲁棒性。具体来说,在给定已经训练好的模型的情况下,我们使用图像来微调感知模型,这些图像旨在提高渲染图像的性能,同时保持真实数据的性能,见图2。除了减少real2sim差距外,这还可能降低对传感器真实性的要求,为神经渲染方法的更广泛应用开辟道路,并减少对所述方法的训练和评估的计算需求。请注意,当我们专注于感知模型时,我们的方法也可以很容易地扩展到端到端模型。

最后,我们可以想象多种方法来实现使模型更健壮的目标,例如从领域自适应和多任务学习文献中汲取灵感。然而,微调需要最小的模型特定调整,使我们能够轻松地研究一系列模型。

Image augmentations

获得对伪影增强鲁棒性的经典策略是使用图像增强。在这里,我们选择增强来表示渲染图像中存在的各种失真。更具体地说,我们添加随机高斯噪声,将图像与高斯模糊核卷积,应用类似于SimCLR中发现的光度失真,最后对图像进行下采样和上采样。增广是按顺序应用的,每个增广都有一定的概率。

Fine-tuning with mixed-in rendered images

Image-to-image translation

如前所述,渲染NeRF数据是一种昂贵的数据增强技术。此外,除了感知任务所需的数据外,它还需要顺序数据和潜在的额外标记。也就是说,为了获得可扩展的方法,我们理想地想要一种有效的策略来获得单个图像的NeRF数据。为此,我们建议使用图像对图像的方法来学习生成类NeRF图像。给定真实图像,该模型将图像转换到NeRF域,有效地引入了NeRF的典型伪影。这使我们能够在有限的计算成本下,在微调过程中大幅增加类NeRF图像的数量。我们使用渲染图像Dnerf及其相应的真实图像来训练图像到图像模型。不同增强策略的可视化示例见图3。

结果

结论

神经辐射场(NeRF)已成为模拟自动驾驶(AD)数据的一种很有前途的途径。然而,为了实用,必须了解AD系统在模拟数据上执行的行为是如何转换为真实数据的。我们的大规模调查揭示了暴露于模拟图像和真实图像的感知模型之间的性能差距。

与早期专注于提高渲染质量的方法不同,本文研究了如何改变感知模型,使其对NeRF模拟数据更具鲁棒性。我们表明,使用NeRF或类似NeRF的数据进行微调,在不牺牲真实数据性能的情况下,大大减少了对象检测和在线映射方法的real2sim间隙。此外,我们还表明,在现有的列车分布之外生成新的场景,例如模拟车道偏离,可以提高实际数据的性能。对NeRF社区内常用图像指标的研究表明,LPIPS和FID分数与感知性能表现出最强的相关性。这表明,与单纯的重建质量相比,感知相似性对感知模型具有更大的意义。

总之,我们认为NeRF模拟数据对AD有价值,尤其是当使用我们提出的方法来增强感知模型的稳健性时。此外,NeRF数据不仅有助于在模拟数据上测试AD系统,而且有助于提高感知模型在真实数据上的性能。

# 3D视觉绕不开的点云配准

作为点集合的点云有望在3D重建、工业检测和机器人操作中,在获取和生成物体的三维(3D)表面信息方面带来一场改变。最具挑战性但必不可少的过程是点云配准,即获得一个空间变换,该变换将在两个不同坐标中获取的两个点云对齐并匹配。这篇综述介绍了点云配准的概述和基本原理,对各种方法进行了系统的分类和比较,并解决了点云配准中存在的技术问题,试图为该领域以外的学术研究人员和工程师提供指导,并促进对点云配准统一愿景的讨论。

点云获取的一般方式

分为主动和被动方式,由传感器主动获取的点云为主动方式,后期通过重建的方式为被动。

从SFM到MVS的密集重建。(a) SFM。(b) SfM生成的点云示例。(c) PMVS算法流程图,一种基于patch的多视角立体算法。(d) PMVS生成的密集点云示例。

结构光重建方法:

刚性配准和非刚性配准

刚性配准假设在一个环境中,变换可以分解为旋转和平移,从而在适当的刚性变换后,一个点云被映射到另一点云,同时保持相同的形状和大小。

在非刚性配准中,建立非刚性变换以将扫描数据wrap到目标点云。非刚性变换包含反射、旋转、缩放和平移,而不是刚性配准中仅包含平移和旋转。非刚性配准的使用主要有两个原因:(1) 数据采集的非线性和校准误差会导致刚性物体扫描的低频扭曲;(2) 对随着时间改变其形状的和移动场景或目标执行配准。

刚性配准的示例:(a)两个点云:读取点云(绿色)和参考点云(红色);在不使用(b)和使用(c)刚性配准算法的情况下,点云融合到公共坐标系中。

然而,点云配准的性能被Variant Overlap、噪声和异常值、高计算成本、配准成功的各种指标受限。

配准的方法有哪些?

在过去的几十年里,人们提出了越来越多的点云配准方法,从经典的ICP算法到与深度学习技术相结合的解决方案。

1)ICP方案

ICP算法是一种迭代算法,可以在理想条件下确保配准的准确性、收敛速度和稳定性。从某种意义上说,ICP可以被视为期望最大化(EM)问题,因此它基于对应关系计算和更新新的变换,然后应用于读取数据,直到误差度量收敛。然而,这不能保证ICP达到全局最优,ICP算法可以大致分为四个步骤:如下图所示,点选择、点匹配、点拒绝和误差度量最小化。

2)基于特征的方法

正如我们在基于ICP的算法中所看到的,在变换估计之前,建立对应关系是至关重要的。如果我们获得描述两个点云之间正确关系的适当对应关系,则可以保证最终结果。因此,我们可以在扫描目标上粘贴地标,或者在后处理中手动拾取等效点对,以计算感兴趣点(拾取点)的变换,这种变换最终可以应用于读取点云。如图12(c)所示,点云加载在同一坐标系中,并绘制成不同的颜色。图12(a)和12(b)显示了在不同视点捕获的两个点云,分别从参考数据和读取数据中选择点对,配准结果如图12(d)所示。然而,这些方法对不能附着地标的测量对象既不友好,也不能应用于需要自动配准的应用。同时,为了最小化对应关系的搜索空间,并避免在基于ICP的算法中假设初始变换,引入了基于特征的配准,其中提取了研究人员设计的关键点。通常,关键点检测和对应关系建立是该方法的主要步骤。

关键点提取的常用方法包括PFH、SHOT等,设计一种算法来去除异常值和有效地基于inliers的估计变换同样很重要。

3)基于学习的方法

在使用点云作为输入的应用程序中,估计特征描述符的传统策略在很大程度上依赖于点云中目标的独特几何特性。然而,现实世界的数据往往因目标而异,可能包含平面、异常值和噪声。此外,去除的失配通常包含有用的信息,可以用于学习。基于学习的技术可以适用于对语义信息进行编码,并且可以在特定任务中推广。大多数与机器学习技术集成的配准策略比经典方法更快、更稳健,并灵活地扩展到其他任务,如物体姿态估计和物体分类。同样,基于学习的点云配准的一个关键挑战是如何提取对点云的空间变化不变、对噪声和异常值更具鲁棒性的特征。

基于学习的方法代表作为:PointNet 、PointNet++ 、PCRNet  、Deep Global Registration 、Deep Closest Point、Partial Registration Network 、Robust Point Matching 、PointNetLK 、3DRegNet。

4)具有概率密度函数的方法

基于概率密度函数(PDF)的点云配准,使得使用统计模型进行配准是一个研究得很好的问题,该方法的关键思想是用特定的概率密度函数表示数据,如高斯混合模型(GMM)和正态分布(ND)。配准任务被重新表述为对齐两个相应分布的问题,然后是测量和最小化它们之间的统计差异的目标函数。同时,由于PDF的表示,点云可以被视为一个分布,而不是许多单独的点,因此它避免了对对应关系的估计,并具有良好的抗噪声性能,但通常比基于ICP的方法慢。

5)其它方法

Fast Global Registration  。快速全局配准(FGR)为点云配准提供了一种无需初始化的快速策略。具体来说,FGR对覆盖的表面的候选匹配进行操作并且不执行对应关系更新或最近点查询,该方法的特殊之处在于,可以直接通过在表面上密集定义的鲁棒目标的单个优化来产生联合配准。然而,现有的解决点云配准的方法通常在两个点云之间产生候选或多个对应关系,然后计算和更新全局结果。此外,在快速全局配准中,在优化中会立即建立对应关系,并且不会在以下步骤中再次进行估计。因此,避免了昂贵的最近邻查找,以保持低的计算成本。结果,迭代步骤中用于每个对应关系的线性处理和用于姿态估计的线性系统是有效的。FGR在多个数据集上进行评估,如UWA基准和Stanford Bunny,与点对点和点顶线的ICP以及Go ICP等ICP变体进行比较。实验表明FGR在存在噪声的情况下表现出色!

四点一致集算法:4点全等集(4PCS)提供了用于读取数据的初始变换,而不需要起始位置假设。通常,两点云之间的刚性配准变换可以由一对三元组唯一定义,其中一个来自参考数据,另一个来自读取数据。然而,在这种方法中,它通过在小的潜在集合中搜索来寻找特殊的 4-points bases,即每个点云中的4共面全等点,如图27所示。在最大公共点集(LCP)问题中求解最佳刚性变换。当成对点云的重叠率较低并且存在异常值时,该算法实现了接近的性能。为了适应不同的应用,许多研究人员介绍了与经典4PCS解决方案相关的更重要的工作。

# 开源驾驶仿真平台大汇总

本文的详细版本敬请期待 Choose Your Simulator Wisely: A Review on Open-source Simulators for Autonomous Driving。这篇论文中:

  1. 回顾了驾驶仿真器至今为止发展历史,预测了之后可能的发展趋势;

  2. 调研了截止2023年为止具有一定影响力的开源驾驶仿真器的维护状态、功能、性能、适用场景,基于用途,对现有驾驶仿真器进行了分类和推荐;

  3. 论证了目前开源驾驶仿真器中存在的关键问题,主要划分为真实性和仿真性能两大方面,讨论了这些关键问题的重要性,并调研了可能的解决方案。

论文目前处于Early Access状态,完整版估计要下个月才会上线。

动机

博士生涯之初,因为对CV不是那么感兴趣,我强转去研究驾驶决策算法,并一度沉迷强化学习。然而,在验证算法性能之前,找到合适的实验平台和benchmark是非常重要的。而调研过程中,我发现开源驾驶仿真器充斥着各式各样的问题,导致基于仿真验证的驾驶决策算法在投稿时容易因为不具有实用性遭到质疑。近年来,开源的驾驶仿真平台层出不穷,但是由于性能、维护状态等问题,它们不一定有让研究者能更轻松地在这个领域起步,反而是多了一个个需要亲自趟过的坑。

这种情况下,我们有必要对适用于自动驾驶相关任务的仿真器进行较为全面的调研,检查目前仍然值得使用的开源驾驶仿真器还有哪些,并讨论现有开源仿真器中存在的局限,从而有意识地避免由于相关方面的算法验证实验不够充分导致的质疑。另一方面,本文也可以视为对开源驾驶仿真器的开发者的建议,从用户的角度列举许愿了目前呼声较高的待解决的关键问题,有利于开发者们更有针对性地优化自己的仿真器。

历史

驾驶仿真器的发展历史与本篇博客的关联性不大,在此略过。

总览

筛选标准

在回顾仿真器历史和分类仿真器的过程中,由于商业仿真器在某些任务上具有开源仿真器不可比拟的优势——有些领域中甚至是商业仿真器独大的,因此我们必须将它们纳入调研范围。但是在推荐工具和讨论现有不足的环节,考虑本文主要面对的是广大资源体量较小的学术实验室和个人研究者(而且我也没有拿到那么多授权),所以会回退到仅讨论开源仿真器的状态。

因为近年来发布的仿真器数量较多,而我们人手有限,所以在调研过程开始前,设置了几条较为简单粗暴的基准来筛选候选仿真器,若有遗漏还请多多包涵:

  1. 商业仿真器的调研主要基于工业界合作方和专家推荐,需要该仿真器有可访问的官方网站;

  2. 开源仿真器的论文在google scholar上已有大于等于100的引用量;

  3. 开源仿真器的仓库有大于100的star;

考虑到手头资源的局限性,我们没有实际测试各个仿真器的硬件在环测试(Hardware-in-the-loop testing)能力,而是总结了软件所有者在网站/论文中自我声明的支持水平。

目前不同类型的仿真器大致情况如表所示。我们判定维护状态的方式是检查该软件在一年的时间内是否有进行过任何类型的更新,若没有则视为不再积极维护,若最近更新恰好是在一年左右,则标注为问号,一年以内有更新则视为正常维护状态。完整表格请见正式发表的论文。

分类

本节对于上表中的仿真器类别定义进行简单的说明,并基于相关任务推荐开源仿真器(在正式论文中有更详细的表格列举不同类型仿真器的具体功能)。

交通流仿真器

这类仿真器主要用于模拟大规模的车流在交通系统中的运行状态,它们的特征一般包括可以编辑的路网结构、微观交通流,并通常采用模式较为单一的驾驶行为模型操纵车辆。自动驾驶中研究车路协同、车队、联网智能车(Connected and Autonomous Vehicle, CAV) 相关的任务可以用到这类仿真器。这类仿真器中,目前还处于积极维护状态的热门开源仿真器只有SUMO。

传感数据仿真器

这类仿真器的目的是弥补真实数据中缺少极端天气样本,增强感知模型的泛化性。它们追求的是在各类不同光照、能见度、反光率等状态下,通过渲染或学习类方法生成高真实性的光学类感知数据(RGB图像、语义分割、实例分割、甚至是激光雷达)。因为这类仿真器的开发成本高、难度大,而实际收益较低,相关的开源仿真器已经基本停止维护。如果有利用仿真器生成训练/测试感知数据的需求,目前较为合适的选项是综合型仿真器CARLA。

驾驶决策仿真器

驾驶决策仿真器是指用途仅为验证驾驶决策算法的仿真器,它们与综合型仿真器的主要区别在于,为了节约开发成本,这些仿真器往往省略或简化了车辆动力学模型的建模,也无法生成真实的原始感知数据。大部分驾驶决策仿真器只提供了鸟瞰视角的语义分割数据,不过,相应地,在多智能体并行仿真、交通参与物行为模式模拟方面,它们往往有更好的表现。对于模仿学习算法的研究者来说,只要保证环境能够提供理想的环境感知结果,决策模型的运行基本可以脱离环境,所以选择仿真器时会有更大的自由度。除了VDrift,其他积极维护中的仿真环境基本都提供了原生的RL训练支持,所以也可以基于需求选择。MetaDrive作为一款轻量级的、有3D图像界面、可以无限生成交通场景的仿真器,在训练端对端的驾驶决策模型时较为推荐。

车辆动力学仿真器

这类仿真器主要模拟的是车辆的物理运动表现,早早在车辆设计工程中有所应用,因此历史悠久。在自动驾驶相关的任务中,车辆控制通常需要在高真实性的车辆动力学仿真器上验证。这类仿真器需要收集大量实车在各类极限状态下的行为数据,这意味着,如果没有与车辆制造商的紧密合作,想凭空建模一个准确的车辆物理模型是几乎不可能的。这类仿真器的开发也不出意外地被一些老牌商业软件所垄断。开源软件中,机器人学中常用的Gazebo是为数不多可用的选项,而基于Matlab的车辆动力学在学界的实践中也较为常见(工业界的请不要来得瑟了,卑微.jpg)。

综合型仿真器

综合型仿真器是能为多个自动驾驶相关任务提供仿真验证的软件。在Nvidia Drive Sim可能的开源之前,开源软件中,能够独占鳌头的工作,毫无悬念地是CARLA。

说起来也挺好笑的,前几年调研时看好的LGSVL和AirSim都转成Archive模式了,只能说仿真本身是真的难做 ಥ_ಥ

关键问题

目前开源仿真器普遍面临真实性、仿真效率方面的问题。这里提供对关键问题的简单描述,对于可能改进方法的调研请见论文。

真实性-感知数据

感知模块面临一大挑战是算法的泛化性。即使是物体检测这类基础任务,在极端天气时,感知模型的性能也会大幅度下降。通过收集真实数据确实可以解决这个问题,但是极端天气在现实中的出现往往非常随机,想创造相关的大规模数据集对时间和成本要求都很高。有必要充分发挥仿真器的优势,去生成更真实的不同模态的原始感知数据。

其实,在游戏开发领域,已经积累了大量渲染相关的技术基础,如果能在仿真器中应用这些技术自然是最好的。但考虑到游戏的图像渲染未必能在真实性上达到要求,另外一种思路是仿真器提供原生接口,允许接入基于学习的图像生成/风格处理类型的算法,访问三维建模,并直接对其进行处理。

真实性-交通场景

交通场景中主要可以分成几个部分:静态的地图和交通标志、随时间规律变化的交通规则(指红绿灯等)、和随机性强的交通参与物。地图和交通规则主要是在自动构建方面存在瓶颈,影响了仿真器的发展,这个之后会说明。而影响交通场景真实性的主要因素是交通参与物的行为模型。前几年,大部分仿真器中要么提供基于统一规则的行为模型,仅在参数上有一定多样性;要么直接规避掉这个问题,只提供记录回放功能。近年来,InterSim,TBSim的出现反应了相关问题在逐渐得到重视,但仍然需要进一步的研究。

真实性-车辆模型

车辆模型的真实性一直是阻碍基于仿真器验证的自动驾驶系统直接上实车的拦路虎。正如前文提到的,独立的研究者们想要分头解决这个问题是不现实的,理想主义的情况下,要么等待车辆制造商良心发现,公布他们的核心机密,或者大家可以基于手头的实车,共享一些实体个例实验车辆的运行记录,创建符合某种社区规范的公共数据集。事实上,在现实中这两种模式都基本是幻想,这边也就做做梦。

仿真效率-数据准备-格式不一致性

现在很多开源仿真器对于公开轨迹数据集、地图格式的支持还有所不足,导致研究者们反复造轮子,或者为了使用特定的数据集/地图格式而在某几个仿真器之间跳来跳去。这极大地拖慢了仿真数据的准备过程。

仿真效率-数据准备-手动地图标注

目前的地图标注过程中仍有大量手工劳动的成分,OpenDRIVE地图如此,三维高精地图更是如此。这对于批量创造多样化的交通场景来说是一个瓶颈。近年来,快速自动构建地图的算法在大力发展,NeRF基本可以说是无人不晓,但是NeRF在数据格式和粒度方面显然都还无法达到工程要求,需要进一步发展。

仿真效率-运行速度

因为开源仿真器的开发者大部分是在为爱发电,势单力薄,在仿真软件的性能、远程/分布式部署、并行运算等方面显然难以做到尽善尽美。甚至有一部分开源仿真器不一定能够实时运行,想要以现实的多倍速加速训练和测试过程更是相当困难,但这往往是用户需求最强烈的问题,所以有必要进行优化。

仿真效率-迁移-HIL测试

开源仿真器与商业软件的一大差距也在于对HIL测试的支持。从表格中可以看出,有这一功能的开源仿真器寥寥无几。不过这主要是一个工程问题,搭建和维护HIL测试的接口都需要大量人力物力,只能说,用户在进行仿真测试的时候,需要注意被测算法往往距离上实车存在差距,并在描述实验设计时需要注意防范可能的漏洞。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值