gao av软件详谈,专业数据研究学渣请绕道!

时间:2019-06-10 06:58:05 编辑:bianji005/ 浏览:

在MIT - AVT研究中,最先进的嵌入式系统编程、软件工程、数据处理、分布式计算、计算机视觉和深度学习技术被应用于大规模自然驾驶数据的收集和分析,旨在为深入了解快速变化的交通系统中人类和自动驾驶车辆是如何进行相互作用的,从而开辟新的领域。这项研究提出了MIT-AVT研究背后的方法论,旨在定义和启发下一代自动驾驶研究。本篇介绍软件部分。

为了深入了解人类和自动驾驶车辆在快速变化的交通系统中的交互。

麻省理工学院进行了自动驾驶车辆技术的研究( MIT - AVT ):

( 1 )进行大规模的现实世界驾驶数据的收集,包括高清视频,以推动基于深度学习的内外感知系统;

( 2 )通过将视频数据与车辆状态数据、驾驶员特征、心理模型和自我报告的技术体验相结合,全面了解人类如何与车辆自动化技术进行互动;

( 3 )确定如何以挽救生命的方式改进与自动化使用有关的技术和其他因素。

为了以上研究先进的嵌入式系统编程、软件工程、数据处理、分布式计算、计算机视觉和深度学习技术被用于大规模自然驾驶数据的收集和分析。

这项研究提出了MIT-AVT研究背后的方法论,旨在定义和启发下一代自然驾驶研究。本研究的设计原则是,除了先前成功的“自然驾驶研究”( NDS )方法之外,还利用计算机视觉和深度学习的力量自动提取人类与各种自主车辆技术水平相互作用的模式。(1)使用AI来分析大规模数据中的整体驾驶体验;(2)使用人类专业知识和定性分析深入挖掘数据以获得特定案例的理解。迄今为止,该数据集包括78名参与者,7,146天参与,275,589英里和35亿视频帧。 有关MITAVT数据集大小和范围的统计信息会定期更新为hcai.mit.edu/avt。

前文

简单介绍了 MIT - AVT

,以及

该研究的硬件部分

,本文主要介绍该研究的软件部分。

软件部分:数据管道和深度学习模型训练

基于RIDER强大、可靠和灵活的硬件架构,这里的是软件框架也很庞大,它可以记录和处理原始传感数据,并通过数千个支持GPU的计算核心的许多步骤,获取关于自动驾驶车辆技术背景下人类行为的知识和见解。图8显示了从原始时间戳传感器数据到可操作知识的旅程。高级步骤是( 1 )数据清理和同步,( 2 )自动或半自动数据注释、上下文解释和知识提取,以及( 3 )聚合分析和可视化。

图8:MIT-AVT数据管道,展示了从数据中卸载、清理、同步和提取知识的过程。左边是依赖约束的异步分布式计算框架。中间是执行多个层次的知识提取的高级过程序列。右边是管道产生的广泛的数据类别,按大小进行组织。

本节将讨论数据管道(图8),其中包括在RIDER盒上实现的软件,可实现数据流和记录。此外,还将讨论用于在中央服务器上卸载和处理数据的软件。在RIDER盒上运行的软件的操作要求如下:

1 )每当车辆开启时,接通电源

2 )在外部固态驱动器上创建行程目录

3 )将所有数据流重新定向到带有时间戳的行程文件中

4 )实时记录元数据并将其传输到实验室

5 )车辆关闭后断电

A.微控制器

Knights of CANelot的微控制器运行一个小型C语言程序,负责为RIDER系统提供与车辆同步的动力。

默认情况下,该微控制器处于睡眠状态,等待特定的CAN消息。通过收听车辆的CAN总线,这个程序可以识别特定信号的CAN消息何时开始,这意味着汽车已经打开。如果观察到此信号,则C语言程序将车辆的电源连接到系统的其余部分,开始数据收集。当指定的消息结束时,意味着汽车关闭,微控制器向Banana Pi发送信号,关闭所有文件并正常关机。然后,它等待60秒钟,最终断开系统其余部分的电源,并进入其原始睡眠状态。

B.单板计算机

我们的单板计算机Banana Pi包含一个32GBsd卡,存储RIDER文件系统、软件和配置文件。Banana Pi使用定制内核模块和改进的Bannanian操作系统运行一个改进的Linux内核,并增强了性能和安全性。通过禁用不必要的内核模块和删除无关的Linux服务,性能得到了提高。安全性增强包括禁用所有CAN传输,从而禁止向车辆系统恶意或非故意传输致动消息。其他安全改进包括更改网络设置以防止任何远程连接登录。特定的MIT机器被设置为白名单,以允许通过物理连接更改配置文件,默认的系统服务也被修改,以便在系统启动时运行一系列本地安装的程序来管理数据收集。

C.启动脚本

每当系统启动时,Banana Pi都会运行一系列数据记录初始化bash启动脚本。首先,Pi上的板载时钟与保持高分辨率定时信息的实时时钟同步。然后加载用于设备通信的模块,如UART、I2C、SPI、UVC和CAN,以允许与输入数据流交互。。启动一个监控脚本,如果从 Knights of CANelot微控制器接收到指定的信号,该脚本会关闭系统,另外一个GSM监控脚本会在失去连接后帮助重新连接到蜂窝网络。最后的初始化步骤是启动python脚本Dacman和Lighthouse。

D. Dacman

Dacman表示管理所有数据流的中央数据处理程序脚本。 它使用名为trip_dacman.json的配置文件,该文件包含摄像机的唯一设备ID。此外,它还包含与存储在其中的RIDER盒相关联的唯一RIDER ID。该配置文件还包含与该驾驶员相关的主题、车辆和研究的唯一ID值。一旦启动,Dacman就会在外部固态驱动器上创建一个旅程目录,该目录根据使用唯一命名约定创建的日期命名:rider-id_date_timestamp(例如20_20160726_1469546998634990)。 此行程目录包含trip_dacman.json的副本,任何与数据相关的CSV文件,反映所包含的子系统,以及一个名为trip_specs.json的规范文件,其中包含表示每个子系统的起点和终点以及行程本身的微秒时间戳。

Dacman为每个子系统调用一个管理器python脚本(例如audio_manager.py或can_manager.py),这使得相关的系统调可用来记录数据。在当前车辆行程的整个过程中,所有数据都被写入CSV文件,每行包含时间戳信息。Dacman调用另外两个用C语言编写的程序来帮助生成这些文件:用于管理摄像机的cam2hd和用于创建CAN文件的dump_can。 音频或摄像机数据分别记录为RAW和H264格式,附带的CSV表示记录每帧的微秒时间戳。如果在Dacman运行时遇到任何错误,系统最多会重新启动两次以尝试解决它们,如果无法解决它们,则会关闭。

E. Cam2HD

Cam2hd是一个用C语言编写的程序,可以打开并记录所有摄像机数据。。它依赖于V4L ( Video4Linux ),这是一个开源项目,包含Linux中的摄像头驱动程序集。V4L通过将传入图像分辨率设置为720 p,允许访问连接到RIDER的摄像机,并允许写入原始H264帧。

F. DumpCAN

Dump _ CAN是用C语言编写的另一个程序,用于配置和接收来自all winner A20 CAN控制器的数据。这个程序使用CAN 4linux模块来产生一个CSV,包含从连接的CAN总线接收的所有CAN数据。此外,它提供CAN控制器的低水平操作。这允许Dump _ CAN在CAV控制器上设置仅监听模式,从而提高了安全性。通过消除在CAN网络上监听消息时发送确认的需要,可以最大限度地减少对CAN总线上现有系统的任何可能干扰。

G. Lighthouse

Lighthouse是一个python脚本,可以将有关每次行程的信息发送到Homebase。发送的信息包括行程时间信息、GPS数据、功耗、温度和可用的外部驱动空间。通信间隔在dacman配置文件中指定。所有通信都是以JSON格式发送的,并且由于其速度的原因,使用基于椭圆曲线25519的公钥加密。这意味着每个RIDER都使用服务器的公钥,以及唯一的公钥/私钥来加密和传输数据。Lighthouse是用Python编写的,依赖于libzmq/ libna。

H. Homebase

Homebase也是一个脚本,用于接收、解密和记录从Lighthouse接收到的所有信息,并将其存储在RIDER数据库中,这允许远程监控驱动器空间和系统运行状况良好。所有附加密钥管理都在这里完成,以便解密来自每个唯一盒子的消息。

I. Heartbeat

Heartbeat是一个面向工程师的界面,该界面显示RIDER系统状态信息,以验证成功的操作或了解潜在的系统故障。Heartbeat使用从homease提交到数据库的信息来跟踪各种RIDER日志。这对于分析车辆的当前状态是有用的,并且有助于确定哪些仪表车辆需要驱动交换(由于硬盘驱动器空间不足)或系统维修。这也有助于验证任何修复是否成功。

J. RIDER Database

PostgreSQL数据库用于存储所有传入的行程信息,以及存储卸载到存储服务器的所有行程信息。经过额外处理后,可以将有关每次行程的有用信息添加到数据库中。然后,可以对查询进行结构化,以获得发生特定事件或条件的特定行程或时间。下列表格是行程处理管道的基本资料:

仪表:用于安装RIDER盒的日期和车辆ID

参与:独特的学科和研究IDs被结合起来,以识别主要和次要的驱动因素

车手:车手ID与笔记和IP地址配对

车辆:车辆信息与车辆ID配对如品牌和型号、制造日期、颜色和特定技术的可用性

行程:为每次集中卸载的旅行以及学习,车辆,主题和骑手ID提供唯一的ID。还提供有关同步状态、可用摄像机类型和子系统数据的信息。它还包含了关于旅行本身内容的元数据,例如太阳的存在、GPS频率以及某些技术应用或加速事件的存在。

epochs epoch-label:每个epoch类型的表都被标记并用于标识发生的行程和视频帧范围(例如,特斯拉中的autopilot使用的是epochs autopilot)

homebase日志:包含来自homebase脚本的流式日志信息,用于跟踪RIDER系统的运行状况和状态。

K. Cleaning

将原始行程数据卸载到存储服务器后,必须检查所有行程是否存在任何不一致。一些行程可能会有不一致的地方,可以修复,比如时间戳信息可以从多个文件中获得,或者行程中非必要的子系统出现故障(例如IMU或音频)。在不可恢复的情况下,例如在旅行期间拔出相机的事件,该行程数据将从数据集中删除。如果该行程满足某些过滤约束条件,例如当车辆开启但在再次关闭之前不移动,则也可以从数据集中移除具有有效数据文件的旅程数据。

L. Synchronization

在完成清洗和过滤后,有效的行程要经过一系列的同步步骤。首先,使用最新的摄像机开始时间戳和最早的摄像机结束时间戳,将从每个摄像机收集的每个帧的时间戳对齐在单个视频CSV文件中,每秒30帧。在低照明条件下,相机可能会以每秒15帧的速度降至录制状态。在这些情况下,可以重复一些帧以在同步的视频中实现每秒30帧。

在对齐所有原始视频之后,可以以每秒30帧的速度创建新的同步视频文件。然后通过创建一个CSV来解码CAN数据,其中所有相关的CAN消息都作为列,同步的帧ID作为行。然后,根据与每个解码后的CAN消息最近的时间戳,逐帧插入CAN消息值。然后可以生成一个最终的同步可视化,显示所有的视频流,并可以在同一个视频的单独面板中提供信息。然后,数据就可以由任何运行统计数据、检测任务或手动注释任务的算法进行处理。

Tags: 软件
免责声明:本网部分内容为网络转载,非中国彩虹热线的作品,并不代表本网赞同其观点和对其真实性负责。只为传播网络信息为目的,若有任何不当请联系我们,将会在24小时内删除。
  • 相关推荐
  • 娱乐
  • 时尚
  • 健康
  • 汽车
  • 科技
  • 体育
  • 财经
  • 美食
  • 图片
  • 视频
  • 滚动
  • 常识
  • 科学
  • 旅游
  • 家居
  • 星座
  • 游戏