无人机:动画算法。 Yandex报告

Yandex.Zhelezo会议的另一份报告的详细笔录-有关无人机设备的开发。



-大家好,我叫Vitaly Podkolzin,我是无人驾驶汽车项目嵌入式系统开发的负责人。 今天,我想与您谈谈什么是无人驾驶汽车,其组成中包括哪些组件,如何使汽车行驶以及自动驾驶仪及其组件如何工作取决于所使用的设备。

要了解下一步该去哪里,一个人首先需要找出他在哪里。 无人驾驶汽车也是如此。 为此,本地化子系统对我们负责。 然后,您需要了解我们周围正在发生的事情。 感知或感知系统负责我们对世界的愿景和感知。 基于位置数据,关于我们周围的物体,我们可以对道路状况,道路发展,道路使用者的行为进行预测。 并选择最佳的运动路线,轨迹,并将其进一步转变为控制动作。

但是,在一般情况下,以上所有都是算法。 如果功能足够强大,则可以在计算机上运行这些算法。 当然,这不会使无人驾驶汽车脱离计算机。 缺少两个重要的东西。



首先是一组相当丰富的传感器,其中的主要传感器列在幻灯片上。 当然,我们需要一个可以执行命令的平台。 您需要与她互动。

让我们来谈谈与汽车互动的问题。 自动驾驶仪就像一个人一样,需要做一些简单的事情来驾驶汽车:转动车轮,加速,减速。 逻辑解决方案似乎是使用执行器来控制这些物体。


幻灯片链接

但是这种方法有许多重大困难。 无人驾驶汽车的发展仍然暗示着驾驶员在某些阶段的存在-当我们测试各种功能时,尤其是在早期阶段,您需要将汽车送去维修或监视自动驾驶仪。 这些设备极大地延长了驱动程序的使用寿命。

当然,整个系统很复杂,一般来说,这样的机制会给控制带来不愉快的延迟。 这会对车辆控制电路产生负面影响。

是的,在项目开始时我们仍然需要一个简单的平台,但是我们需要一些其他方法来与该平台进行交互。 然后我们开始深入研究汽车。



通过研究不同平台的功能,我们发现许多现代汽车都具有控制自己的汽车器官的能力。 例如,助理在停车期间控制方向盘。 巡航控制会影响汽车的加速度,自适应巡航控制或限速系统会影响制动系统。

通常,所有这些系统都封闭在汽车中。 为了与他们互动,它开发了许多专用设备。 除了与汽车互动之外,还需要该系统提供一个方便,用户友好的界面来驾驶汽车。 当然,该系统应该简单,直接且非常灵活。



我们来到了一个平台,在该平台上,根据汽车的不同,开发了与特定节点交互的小型控制板。 这些板的组成和功能因平台而异,但它们都在一个网络中汇聚在一起,该网络中有一个主机,我们通常称为网关。 它监视这些设备。 此外,网关还为方便的设备上的自动驾驶提供了接口。 在这里,我们看到了方便我们的基础架构的以太网和最受欢迎的汽车接口CAN。 此外,我们的主机不断与汽车互动,监视零部件的状态。 如果检测到任何偏差,则根据其性质以及自动驾驶仪,对其他步骤进行决策。

我们决定在相当流行和成熟的微控制器上实施该板。 我们以性能为前提,选择了支持工作所需接口的接口:CAN,以太网和模拟数字输入/输出。

我们得到的解决方案实际上对我们来说是灵活的,它使我们可以在平台上切换问题更少的平台。

让我们谈谈传感器。 每辆无人驾驶车辆都有一组丰富的传感器。 每辆Yandex无人机在车顶上有四个激光雷达,在前部有三个激光雷达,在车顶上有六个摄像头,还有六个雷达:两个在后部,四个在前部,其中两个位于侧面。



我们将雷达,激光雷达,摄像头连接起来,开车进入计算机。 但不是那么简单。 确保传感器数据充足且高质量非常重要。 我们进行了大量实验以了解将传感器放置在何处,以便我们可以更好,更清晰地看到世界。

此外,我们的设计师还必须努力确保与传感器相关的汽车所有改动均符合认证机构的要求。



这是发生了什么事。 屋顶上的六个摄像头可提供360度良好的视野,并具有明显的重叠-幻灯片上标记有暗区。 这些相机还可以提供良好的垂直视图。 摄像机是唯一看到交通信号灯的传感器,因为根据交叉路口和其他事物,它们可以位于不同的部分。



雷达是每辆汽车的另一个​​重要传感器。 它们的有趣之处在于它们的视角不是很宽,但是范围很广。 两个前置雷达执行监视前方事件的功能,我们算法中的后置雷达通常用于重建,超车和类似演习中。 侧视的雷达对于穿越相当复杂的路口很有必要,在这些路口,来自传感器的信息可能还不够。



也许最有趣的传感器是激光雷达。 他对来自他的信息感兴趣。 这是点云,点云,这是来自激光雷达的数据。 它们显示行人,汽车,道路,甚至道路边缘和其他物体。 盒子已经是我们识别算法工作的结果。



总共,所有传感器给出的图像大致相同。 如您所见,使用这样的一组传感器,不可能不注意到汽车周围的任何东西。

我想谈谈我们需要开发硬件时遇到的两个示例。 我将从本地化案例开始。

主要来源是高清卡。 在每个时间点,无人驾驶车辆都会将来自激光雷达的数据与这些卡进行比较。 基于这样的比较,他以厘米的精度获得了自己的位置。 GPS,Glonas或任何其他卫星导航系统由于其稳定性低,对外部条件,天气,噪声,干扰的依赖性强,因此根本不适合与无人驾驶车辆一起使用。 在城市中,由于信号重叠,建筑物反射等原因,所有这些都变得非常复杂。但是,从哪里可以得到这些卡呢? 我们使用带有传感器的无人驾驶车辆自行构建地图。

要制作这些地图,我们需要激光雷达和地面上的某种参考。 您需要以某种方式获得协调。 GPS最初可以给出坐标,但是其精度不是很高。 就像我说的那样,GPS的精度受大气条件,干扰的影响,并且在城市中也存在反射。



实时运动技术为您提供了帮助。 最重要的是:地面上的某个固定基站安装了与汽车相同的接收设备。 如果汽车与基站之间的距离不超过30公里(在某些情况下为50公里),则汽车与基站所接收的卫星数据将大致相似。 但是基站知道其确切坐标(它是固定的)并根据卫星数据计算坐标时,有条件地接收到计算误差。 基于此错误,会开发出一些修正案,这些修正案通过互联网发送给汽车。 该汽车在通过卫星计算坐标时会考虑接收到的校正,因此可以以厘米为单位获取坐标。 当然,要使用此系统,您需要一个良好的Internet通道和良好的天气,以便GPS信号稳定。

要在汽车或基站上获得具有RTK支持的工作设备,您需要软件。 提供RTK RTKLib功能的库是公开可用的。 具有不同功能的不同变体。 图书馆通常需要Linux环境和提供原始数据的卫星导航模块。

在进行了几次实验,制作了几样原型之后,我们得到了本地化模块的框图,我们称之为GeoHub。

除了指定的卫星导航模块外,还有一个惯性测量模块,我们将在定位系统中使用该模块。 互联网现在通过以太网接口进入,这对于我们的基础架构来说很方便。





这是第二种设备,第二代设备和主要技术特征。

我们更换了惯性测量模块和卫星信号模块。 结果,它使我们能够在汽车上进行一系列实验,并从各种参数的角度选择最佳的惯性测量模块,并且对于卫星信号模块,我们能够在此过程中切换到双频接收器,从而显着提高了位置确定的质量。

当您肯定可以进入市场并购买类似产品时,为什么还要开发设备? 答案是对我们来说,最重要的参数之一是设备的灵活性。 由于项目中需求的快速变化以及新功能的出现,我们需要能够对此做出快速响应。 只有在项目内部,内部进行硬件和软件的开发,我们才能获得这些变更的真正高速开发。

从无人驾驶车辆的角度来看,另一个有趣的传感器是摄像头。 好的,每部手机和笔记本电脑中都有一个摄像头。 这里有什么可能会复杂? 但是,让我们看看在无人机中使用相机时可能遇到的问题。



第一个问题是LED光源的闪烁。 大多数交通信号灯就是这种来源。 视频由于闪烁而停止,此时红色信号几乎消失了。

对于此问题,传感器中嵌入了硬件解决方案,但是为了正常工作并获得高质量,您需要能够与传感器进行主动交互。

摄像机的第二个要求是高动态范围,即在夜间和明亮的阳光下在任何光照条件下都能工作的能力。 HDR的存在也很重要,也就是说,将具有不同照明的帧组合为一个以获得更好的图像的可能性。



左侧是使用HDR功能的图片示例,右侧-禁用了HDR功能。



另外,我们当然必须获得具有足够分辨率和足够帧频的图片。 在幻灯片上,突出显示了无人驾驶车辆固有的其他几点,包括。 摄像机应该产生未压缩的视频流,最好是RGB888格式,因为我们的网络,算法都使用这种格式,因此他们希望接收这种格式的帧。

市场上大多数现成的解决方案相机都提供压缩数据-H264,MPEG。 这里的问题很简单:我们在压缩过程中会失去质量,并会延迟压缩和解压缩。 延迟可能不确定,尤其是在系统负载较高的情况下。 具有全高清分辨率和每秒30帧的频率,每像素16位的比特率的摄像机会产生每秒约千兆字节的纯视频数据流。

另外,照相机通常位于距接收装置一定距离的位置,并且在汽车中,特别是在某些实验期间,它们通常可以位于汽车的另一端。 我们需要摄像头,考虑到电缆连接,允许所有未压缩的视频流在6-8米的距离内传输。 对于每像素16位的全高清摄像机,视频流为1吉比特,由于传输中涉及各种服务数据等,因此不再允许使用吉比特以太网。 十吉比特以太网并不完全适合。 它价格昂贵,功耗高,散热高,网络基础结构的复杂性增加。

是的,还有其他有趣的界面。 我想谈谈我们合作过的两个人。 它们由Maxim Integrated和Texas Instruments提供。 特殊之处在于,视频流被序列化为简单物理级别的数据,在这种情况下是通过同轴电缆,传输速度为3-4,有时为每秒6吉比特。 此外,该接口允许您使用返回通道在同一根同轴电缆上控制摄像机。 并可以使用相机电源。 以上所有使该界面非常有吸引力。



当我们开始时,我们在市场上找到了一种基本满足大多数要求的解决方案。 在项目开始时,我们使用了一段时间。



解决方案的框图就在您眼前。 这是一个传感器,数据从该传感器序列化到GMSL / FPD-Link接口。 在接收部分(可以将其移出15米),将数据反序列化并发送到接收器。 在我们的解决方案中,此接收器随后通过USB 3.0接口提供了数据。

但是开始使用此解决方案时,我们遇到了许多不愉快的问题。 主要问题-解决方案的工作非常不稳定,在此过程中“下降”,自动驾驶仪启动后相机无法正常启动。 另外,该解决方案不允许调整传感器本身的参数以提高图像质量。 还有很多问题。 例如,很难获得摄像机的确切时间戳,即拍摄时间,这一点非常重要,因为在速度为15 m / s,延迟为100 ms的情况下,汽车已经行驶了半米,这可能会对感知算法产生负面影响。

还有一个有趣的观点。 所选解决方案的输出接口是USB 3.0,我们发现它非常嘈杂。 我们如何理解这一点? 我们有两辆车没有连接任何东西。 他们一方面发射了相机,另一方面,卫星导航信号也沉没了。 然后我们开始研究发生了什么。

综合分析了所有这些缺点,研究了摆在您面前的结构图等,我们得出结论,问题出在接收部分。 然后他们开始思考该怎么办。 我们研究了市场上的情况,其他团队的解决方案,得出的结论是,我们需要制造自己的接收设备,该设备可以通过GMSL或FPD-Link接口与摄像机配合使用。



我们采用了反序列化程序,该程序通常具有MIPI CSI2接口输出,并开始搜索可以支持该接口的模块或处理器。 我们发现了一个有趣的解决方案,它具有六个MIPI CSI2接口以及高性能和丰富的外围设备。 这最终使我们能够使用对我们的网络基础架构方便的10 GB以太网接口作为该设备的输出接口。 从6台摄像机(或在某些情况下,从12台摄像机)接收到GMSL / FPD-Link数据,并对其进行处理后,设备会通过10 Gb以太网将已经处理过的视频流进一步传输到计算机。



这是解决方案本身及其主要特征。 开发出这样的东西后,我们不仅学会了如何可靠地使用6或12个摄像机,而且还获得了微调摄像机的机会。 这使得改善图像质量成为可能,这对感知算法的操作产生了积极影响。 我们还清楚地了解了拍摄帧所花费的时间,并学习了如何管理该时间。 借助高性能CPU,模块的计算能力使我们能够以最小的延迟直接在模块上执行初始视频处理。

该模块的硬件编解码器还允许压缩视频数据,以便随后将其存储在日志中。

我们不仅必须使用定位传感器和摄像头。 我们必须为几乎所有使用的传感器开发硬件解决方案。 所有这些都是为了解决检测和感知算法所依赖的数据的可靠性和质量的提高。 而这取决于他们,自动驾驶仪发布的解决方案将是多么理想。

好的,我们学习了如何驾驶汽车,如何处理传感器,如何对它们进行正确定位以及如何教给他们提供高质量的图片。 嵌入式系统的工程师,硬件工人在我们的项目中还有哪些其他工作? 我们不仅监视已成为常规的传感器的发展,而且还监视其他信息来源。 我们一直在探索神经网络和其他算法(包括使用FPGA的算法)的替代加速器。 如果没有与经验丰富的汽车制造商的互动,就很难想象该项目的发展。


— , , .

. , . , , , . , .

Source: https://habr.com/ru/post/zh-CN471636/


All Articles