从流数据中获取洞察力的最大挑战之一是如何确保快速、安全的传输,同时仍然拥有明确的控制权。Cloudera DataFlow(CDF)提供了一种解决方案,可从边缘抓取数据并将其连接到云,并且在数据管道的每个点都具有可见性。我们的目标是展示使用Cloudera技术构建自动驾驶汽车应用程序的过程。
我们使用的无人驾驶汽车由三个摄像头、一个LiDAR和一个连接到Nvidia Jetson TX2主板的Xbox控制器提供动力。机器人操作系统(ROS)用于运行TX2,使我们能够控制汽车的运动。当不在手动模式下时,汽车由卷积神经网络(CNN)控制,该网络已经过训练,可以克隆驾驶员在封闭轨道上的行为。CNN的培训是在托管Cloudera Distribution Hadoop(CDH)和Cloudera Data Science Workbench(CDSW)的公共云上完成的。
高层架构
如您在上面看到的,我们将从汽车收集的数据发送到云中的Hadoop分布式文件系统(HDFS)实例,并使用CDSW在TensorFlow之上构建和训练Keras模型。最后,我们将经过训练的模型保存回HDFS,然后将其部署到汽车上以进行自动驾驶。通过基本上将人的驾驶行为与所有收集的数据克隆在跑道上来训练模型。部署后,该模型会根据中心摄像头框架预测转向角,并且汽车在以恒定速度行驶时会相应地调整转向角。
- Cloudera Edge Management概述 ================================
当需要从边缘设备收集传感器数据时,可能需要在数据管道上工作的数据工程师扮演嵌入式系统工程师来处理边缘计算的角色, Cloudera Edge Management ( CEM ) 可用于从中创建从边缘到云的数据管道
CEM是由边缘代理(C ++和Java代理)和Edge Flow Management组成的边缘管理解决方案。借助它,您可以管理和监视边缘代理以收集数据并将其存储回Cloudera Distribution Hadoop(CDH)。CEM使得可以将智能部署回边缘代理,从而使数据收集过程更加高效,例如,通过CEM获得改进模型的智能汽车可以做出更好的决策,从而使其能够长时间自动驾驶时间 因此,收集更多可以进一步改善模型的数据。
边缘到 AI 周期:联网汽车
CEM主要由Edge Flow Manager(EFM)和Apache NiFiMiNiFi代理组成。两者的交互经过精心设计,因此使用CEM的组织仅需要与EFM UI交互(如下所示)。
EFM UI
事件状态
ROS使我们能够与连接到JetsonTX2板上的所有传感器进行通信,并在将收集的数据发送到EFM之前对其进行合并。此外,我们使用ROS是因为它允许我们与游戏控制器进行接口并收集摄像头,转向和速度数据。尽管我们也有LIDAR和IMU传感器,但是由于我们将精力集中在构建基于视觉的稳健模型上,因此对于本项目而言,来自这些传感器的数据不是必需的。
为此项目构建的ROS应用程序将摄像机,转向和速度数据读取并保存到CSV文件中,该CSV文件包含图像详细信息和各个图像。当用户在我们的自定义轨道上手动驾驶汽车并开始记录数据时,将收集数据,ROS嵌入式应用程序随后将数据存储到JetsonTX2的本地文件系统中。
为了将数据传输到云,我们在汽车上安装了MiNiFi。由于汽车使用具有aarch64架构的Jetson TX2,因此MiNiFi是从汽车本身的源代码构建的。然后安装MiNiFi代理,并更改适当的配置以启用MiNiFi代理和NiFi之间的通信。
在运行CEM的云实例上,可以通过选择代理类来选择要为其构建数据流的MiNiFi代理,请注意,该类可以与一个或多个MiNiFi代理关联。在MiNiFi属性文件中可以发现和修改该类。
简单的发布流程 – 开始与 NiFi 通信
因此,一旦完成数据流的构建,用户可以单击选项下拉列表,然后按publish,因此数据流将部署在安装MiNiFi代理的边缘设备上。
EFM UI用于为在Jetson TX2上运行的MiNiFi C ++代理构建数据流,并从收集数据的地方Stewart数据并将其传输到云。管道首先运行一个名为train_mode.launch的ROS应用程序,以允许用户开始在赛道上跑几圈来收集驾驶行为数据。然后以CSV文件的形式提取数据,并将图像保存到TX2的Ubuntu本地文件系统中。提取使用两个MiNiFi GetFile 处理器完成。最终,该数据使用 远程进程组( RPG) 传输到云中运行的远程NiFi数据流,例如在AWS EC2实例上。现在,当数据到达NiFi时,可以将其追溯到MiNiFi代理上的原始位置。
简单流程
- GetCSV 检索与以CSV文件形式收集的每个图像关联的元数据。
- GetJPG 检索在火车模式下驾驶汽车时收集的所有图像。
- RPG 在我们的CDF集群上拥有NiFI服务的公共URL。
- 结论 =======
我们已经介绍了小型智能汽车如何收集数据;此外,我们已经简要讨论了数据如何从智能车流向数据湖,我们还暗示了CEM如何使我们能够从多个来源收集数据。在未来的博客中,我们将探讨如何将收集的数据存储到CDH中并训练模型。通过完成Edge2AI自动驾驶汽车教程,学习构建自己的模拟边缘到AI管道。