dot 未来速度的浪潮正在您的城市掀起。

加入我们,参加 Redis 发布会

如何使用 Redis 创建强大的无人机系统,以保护农作物保险公司免受虚假索赔

面对气候变化,农作物保险公司面临着全新的问题。一直以来,缺乏用于评估可耕地和产量的數據都是一个问题,但准确估计作物損害也已被证明几乎是不可能完成的任务。

更糟糕的是,作物种植地的偏远位置可能导致保险公司难以找到专家进行检查和风险评估。所有这些都会影响保险公司的成本和时间。

但无人机的功能正在迅速被人们认可为解决这些问题的方案。

一个 Launchpad 应用 展示了如何通过创建一个使用 Redis 在组件之间传输数据的互联无人机系统来实现这一点。Redis 将每个组件更加紧密地联系在一起,使大量数据能够实时传输。

凭借这种资产,无人机能够飞越田地,拍摄农作物图像,然后将它们发送回在线门户进行评估。创建了一个演示来说明如何实现这一点。

让我们探讨一下该团队是如何实现这一目标的。但在我们继续之前,我们还有各种各样的应用程序供您探索,因此请务必在 Launchpad 上查看。

https://www.youtube.com/embed/HDlO-rv-0AQ

目录

  1. 您将构建什么?
  2. 您需要什么?
  3. 架构
  4. 它是如何工作的?
  5. 入门
  6. 如何设置后端
  7. 如何设置前端
  8. 结论

1. **您将构建什么?**

您将构建一个无人机系统,它使用 Redis 和云技术以高速捕获农村地区农作物的准确数据。农作物保险公司可以利用这种资产制定更安全的保险单,同时在 索赔处理 过程中最大程度地提高透明度。

我们将探讨他们是如何将所有这些不同的组件联系在一起,使它们彼此之间和谐工作。

2. **您需要什么?**

开发

  • Next.JS: 支持基于 React 的 Web 应用程序功能,例如服务器端渲染和生成静态网站(门户)
  • Python: 用作首选编程语言
  • Java/Spring Boot: 用于构建处理所有客户相关查询、政策和索赔相关 API 的微服务

云和服务

  • Azure 云: 将分析后的图像存储到 Azure Blob 存储
  • RedisGears: 用于监听图像流
  • RedisAI: 执行深度学习/机器学习模型以管理数据
  • Redis 流: 在用户在前端触发检查时启动无人机。
  • RedisTimeSeries: 提供时间序列数据
  • Docker 容器: 使用 RedisAI、Tensorflow 和自定义视觉服务处理和分析图像。
  • Microsoft Airsim: 无人机模拟器
  • 自定义视觉服务: 创建自定义计算机视觉模型
  • 客户服务: 处理所有客户相关查询
  • 政策服务: 处理政策和索赔相关的 API
  • 检查服务: 包含所有与检查相关的 API

3. 架构

4. **它是如何工作的?**

现在让我们看一下架构。为了简化操作,我们将其分为 4 个部分。

门户

  • 为农作物保险公司创建了一个门户,他们可以在其中完成客户注册以及他们的政策和索赔结算。保险公司可以从此门户网站实时扫描客户的土地。
  • 用户单击实时检查后,将生成一个唯一的 ID 并通过 Redis 流传递。
  • 无人机应用程序容器接收此消息并将其发送到无人机,然后无人机起飞。

AirSim

  • 虚拟土地(参见上图)是使用 AirSims 模拟器创建的,该模拟器塑造了虚拟作物。
  • 无人机将在土地上空飞行以捕获农作物图像,这些图像将通过 Redis 流实时传输到 Redis。

自定义视觉

  • 使用 Microsoft 自定义视觉 服务创建了一个预先训练的模型,该模型可以识别图像中的不同类型的物体,例如高产土地、低产土地、肥沃土地等
  • Tensorflow 模型传递到 Redis,Redis AI 将从无人机获取原始图像,并将所有图像转换为模型图像。
  • 这些模型图像存储在 Azure Blob 存储中。Redis 流用于将这些图像传输到前端应用程序,该应用程序将显示所有检查数据。
  • 无人机完成农作物扫描后,数据将使用微服务架构发送到后端系统。

微服务架构

  • 微服务架构分为 3 个不同的容器:客户 API、检查 API 和政策 API
  • 这种微服务架构是使用 Redis、RediSearch 和 RedisJSON 基于 Java Spring Boot 框架构建的。
  • 后端 API 将检查所有数据。根据这些数据,将计算保额和保费,并传递到前端应用程序。从这里,保险公司和农民可以就新的保险单达成一致。

由于有了这款产品,保险公司可以实时进行农作物检查,并在办公室创建保险单。

入门

步骤 1. 克隆项目存储库

git clone https://github.com/redis-developer/CropInsurRedis 

如果您查看源代码存储库,整个项目分为 3 个主要部分

  • Redis_Airsim
    • 用于加载 Redis 模块的 RedisMod
    • 使用 RedisAI 进行图像建模
    • 使用 RedisGears 进行流注册
    • 使用虚幻引擎对象创建虚拟农场模块
    • Azure Blob 存储集成
  • 前端
    • 前端应用程序代码
    • 与 Redis 流集成
    • 与微服务集成
  • 微服务
    • 微服务代码 - Java Spring Boot 框架

步骤 2. 检查 Airsim 模拟器

本项目中部署了 Redis 模块、RedisGears、RediStreams 和 RedisAI。它们都用于实时分析无人机捕获的土地图像,以及使用 Tensorflow、Microsoft 自定义视觉和 RedisAI 计算这些图像中不同类别的百分比。

要连接到 AirSim 模拟器,只需使用以下基于 Python 的代码。这也允许您设置坐标,这些坐标将确定无人机在飞行过程中遵循的路径。

import airsimimport argparsefrom flyDroneService import FlyDroneServiceimport time
if __name__ == '__main__':
    parser = argparse.ArgumentParser()    parser.add_argument('-u', '--level', help='Game Level', type=int, default=1)    args = parser.parse_args()        # connect to the AirSim simulator    client = airsim.MultirotorClient()    FlyDroneService.initializeAirSimClient(client)
    gameLevel = args.level    print(gameLevel)    # set the coordinates to set up the path for drone to travel    if gameLevel == 3:        print('Level 3')        client.simEnableWeather(True)        FlyDroneService.setFlyingCoordsForDroneAtThirdLevel(client)    elif gameLevel == 2:        print('Level 2')        client.simEnableWeather(True)        FlyDroneService.setFlyingCoordsForDroneAtSecondLevel(client)    else:        print('Level 1')        client.simEnableWeather(True)        client.simSetWeatherParameter(airsim.WeatherParameter.Rain, 1)        FlyDroneService.setFlyingCoordsForDroneAtFirstLevel(client)            #stop and return the simulator to initial state    FlyDroneService.resetAirSimClient(client)

步骤 3. 安装所需的软件

在执行 Python 脚本之前,您应该安装下面讨论的先决条件软件。

  • Docker
  • Docker-Compose
  • UnReal Engine(>= 4.24)
  • Python(>=3.6)

您可以通过 使用此链接 在您的环境中安装 Docker。此外,请确保您的系统中安装了 Docker Compose。

步骤 4. 设置虚幻引擎

虚幻引擎是世界上最开放、最先进的实时 3D 创建工具。此时,您需要在本地机器上设置 虚幻引擎,以模拟无人机在虚拟田地上空飞行。

以下是在本地环境中设置虚幻引擎的硬件要求:

  • 操作系统:Windows 10 64 位
  • 显卡/DirectX 版本:DirectX 11 或 DirectX 12 或 NVIDIA 兼容显卡
  • RAM:32 GB

在本地环境中设置好虚幻引擎后,您需要从 Google Drive 下载文件夹。它包含无人机将飞越的不同景观的地图。我们将其放在 Google Drive 中,因为文件大小很大。

下载完文件夹后,您需要双击“FinalProjDroneSquad”文件,如下所示

Output

这将启动虚幻编辑器中的景观,如下所示

Output

单击突出显示的“播放”按钮以启动第 1 级。

Output

要更改游戏级别,首先导航到“Content -> Maps”文件夹。双击如下所示的“Level 2/Level 3”文件,然后点击播放按钮。

Output

之后,您可以继续安装部分,设置其他先决条件。

 

步骤 6. 安装依赖项

cd airsim

pip install -r requirements.txt

从该项目的根文件夹运行以下 Docker 命令

docker-compose up

正如您从上面的 docker-compose 文件中看到的那样,这个项目结合了几个 Redis 模块,例如 RedisGears、RediStreams 和 RedisAI。所有这些都用于实时分析无人机捕获的土地图像,以及使用 Tensorflow、Microsoft Custom Vision 和 RedisAI 计算这些图像中不同类别的百分比。

本质上,这将在您的机器上创建两个容器,用于此项目。

  • Redis 容器:承载 RedisAI、Redismod 和 RedisGears
  • 无人机应用程序容器:在 RedisAI 上初始化模型并使用 RedisGears 注册流。它将处于退出状态。

最后,我们需要创建 Blob 存储帐户来存储使用 RedisAI 生成的已分析图像。为此,请在 Blob 存储中创建名为“droneimages”的容器。

cd redisedge\secrets

从 Azure Blob 存储帐户复制连接字符串,并将其粘贴到文件夹内的“azureblobsecret”文件中。

步骤 7. 运行演示

打开您喜欢的终端,并运行以下命令。

在第一个标签中运行以下命令,并将级别参数更改为 1、2 和 3,以便能够启动不同级别的游戏。

python flyDrone.py –level=1

这将初始化无人机,并将其置于“等待起飞”模式。

在第二个标签中运行以下命令。这将监听 Redis Streams 进行的检查。数据在每次触发检查时从前端输入。

python captureImagesFromDrone.py –level=1

一旦数据到达 Redis Streams,无人机将起飞并开始捕获图像。然后,RedisAI 使用 Tensorflow 对这些图像进行处理和分析。

注意:在如上所述更改 Unreal Editor 上的游戏级别后,在不同的终端上再次运行上述两个脚本,并关闭现有的脚本。

输出

以下是 RedisAI 生成的输出图像。

耕地和其他类别高质量与低质量类别
OutputOutput


贫瘠土地类别
其他类别
OutputOutput

6. 如何设置后端

后端系统使用微服务构建,这些微服务分为不同的实体,例如:

  • 客户服务:处理所有与客户相关的查询
  • 策略服务:处理与策略和索赔相关的 API
  • 检查服务:包含所有与检查相关的 API

这些微服务使用 Java Spring Boot 框架构建,该框架反过来使用 Redis、RedisJSON 和 RediSearch。后端 API 将执行所有数据的检查。根据这些数据,计算出保险金额和保费,并传递到前端应用程序。

7. 如何设置前端

让我们检查一下代码,这些代码将帮助您创建一个可供作物保险公司访问的公共应用程序。

运行应用程序的步骤

注意:需要 Node 版本 14+

  1. 将仓库克隆到本地仓库。

git clone https://github.com/redis-developer/CropInsurer

  1. 使用以下命令安装全局 yarn

npm i -g yarn

  1. 运行命令

yarn install

  1. 运行命令

yarn start

  1. 在浏览器中打开 http://localhost:3000 以启动前端应用程序。

门户凭据

用户名:admin@gmail.com

密码:admin

应用程序截图

以下是应用程序的截图。

登录页面

image

客户注册页面

image

客户列表页面

image

检查页面

image

结论:利用实时数据消除障碍

通过 Redis 的高级功能,这个 Launchpad 应用程序 创建了一个强大的无人机系统,使作物保险公司能够从办公室扫描、监控和评估农作物的质量。然而,真正将项目雄心壮志变为现实的资产是 Redis 提供实时数据的能力。

以如此快的速度从 A 传输到 B 的数据使组件能够在具有复杂架构的系统中无缝协作。作物保险公司现在可以进行准确的作物质量评估,同时确保更透明的索赔流程。

要了解更多关于这个创新项目的知识,请查看 Launchpad 上的完整应用程序。

此外,请确保浏览我们提供的各种激动人心的应用程序。

谁创建了这个应用程序?

Piyush Jain

Piyush 在软件开发方面拥有超过 16 年的经验,目前担任 Publicis Sapient 的解决方案架构师。请务必 查看他的 GitHub 个人资料,以查看他所有激动人心的作品。