面对气候变化,农作物保险公司面临着全新的问题。一直以来,缺乏用于评估可耕地和产量的數據都是一个问题,但准确估计作物損害也已被证明几乎是不可能完成的任务。
更糟糕的是,作物种植地的偏远位置可能导致保险公司难以找到专家进行检查和风险评估。所有这些都会影响保险公司的成本和时间。
但无人机的功能正在迅速被人们认可为解决这些问题的方案。
一个 Launchpad 应用 展示了如何通过创建一个使用 Redis 在组件之间传输数据的互联无人机系统来实现这一点。Redis 将每个组件更加紧密地联系在一起,使大量数据能够实时传输。
凭借这种资产,无人机能够飞越田地,拍摄农作物图像,然后将它们发送回在线门户进行评估。创建了一个演示来说明如何实现这一点。
让我们探讨一下该团队是如何实现这一目标的。但在我们继续之前,我们还有各种各样的应用程序供您探索,因此请务必在 Launchpad 上查看。
您将构建一个无人机系统,它使用 Redis 和云技术以高速捕获农村地区农作物的准确数据。农作物保险公司可以利用这种资产制定更安全的保险单,同时在 索赔处理 过程中最大程度地提高透明度。
我们将探讨他们是如何将所有这些不同的组件联系在一起,使它们彼此之间和谐工作。
开发
云和服务
现在让我们看一下架构。为了简化操作,我们将其分为 4 个部分。
由于有了这款产品,保险公司可以实时进行农作物检查,并在办公室创建保险单。
步骤 1. 克隆项目存储库
git clone https://github.com/redis-developer/CropInsurRedis
如果您查看源代码存储库,整个项目分为 3 个主要部分
步骤 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。
步骤 4. 设置虚幻引擎
虚幻引擎是世界上最开放、最先进的实时 3D 创建工具。此时,您需要在本地机器上设置 虚幻引擎,以模拟无人机在虚拟田地上空飞行。
以下是在本地环境中设置虚幻引擎的硬件要求:
在本地环境中设置好虚幻引擎后,您需要从 Google Drive 下载文件夹。它包含无人机将飞越的不同景观的地图。我们将其放在 Google Drive 中,因为文件大小很大。
下载完文件夹后,您需要双击“FinalProjDroneSquad”文件,如下所示
这将启动虚幻编辑器中的景观,如下所示
单击突出显示的“播放”按钮以启动第 1 级。
要更改游戏级别,首先导航到“Content -> Maps”文件夹。双击如下所示的“Level 2/Level 3”文件,然后点击播放按钮。
之后,您可以继续安装部分,设置其他先决条件。
cd airsim
pip install -r requirements.txt
从该项目的根文件夹运行以下 Docker 命令
docker-compose up
正如您从上面的 docker-compose 文件中看到的那样,这个项目结合了几个 Redis 模块,例如 RedisGears、RediStreams 和 RedisAI。所有这些都用于实时分析无人机捕获的土地图像,以及使用 Tensorflow、Microsoft Custom Vision 和 RedisAI 计算这些图像中不同类别的百分比。
本质上,这将在您的机器上创建两个容器,用于此项目。
最后,我们需要创建 Blob 存储帐户来存储使用 RedisAI 生成的已分析图像。为此,请在 Blob 存储中创建名为“droneimages”的容器。
cd redisedge\secrets
从 Azure Blob 存储帐户复制连接字符串,并将其粘贴到文件夹内的“azureblobsecret”文件中。
打开您喜欢的终端,并运行以下命令。
在第一个标签中运行以下命令,并将级别参数更改为 1、2 和 3,以便能够启动不同级别的游戏。
python flyDrone.py –level=1
这将初始化无人机,并将其置于“等待起飞”模式。
在第二个标签中运行以下命令。这将监听 Redis Streams 进行的检查。数据在每次触发检查时从前端输入。
python captureImagesFromDrone.py –level=1
一旦数据到达 Redis Streams,无人机将起飞并开始捕获图像。然后,RedisAI 使用 Tensorflow 对这些图像进行处理和分析。
注意:在如上所述更改 Unreal Editor 上的游戏级别后,在不同的终端上再次运行上述两个脚本,并关闭现有的脚本。
以下是 RedisAI 生成的输出图像。
耕地和其他类别 | 高质量与低质量类别 |
贫瘠土地类别 | 其他类别 |
6. 如何设置后端
后端系统使用微服务构建,这些微服务分为不同的实体,例如:
这些微服务使用 Java Spring Boot 框架构建,该框架反过来使用 Redis、RedisJSON 和 RediSearch。后端 API 将执行所有数据的检查。根据这些数据,计算出保险金额和保费,并传递到前端应用程序。
7. 如何设置前端
让我们检查一下代码,这些代码将帮助您创建一个可供作物保险公司访问的公共应用程序。
注意:需要 Node 版本 14+
git clone https://github.com/redis-developer/CropInsurer
npm i -g yarn
yarn install
yarn start
用户名:admin@gmail.com
密码:admin
以下是应用程序的截图。
结论:利用实时数据消除障碍
通过 Redis 的高级功能,这个 Launchpad 应用程序 创建了一个强大的无人机系统,使作物保险公司能够从办公室扫描、监控和评估农作物的质量。然而,真正将项目雄心壮志变为现实的资产是 Redis 提供实时数据的能力。
以如此快的速度从 A 传输到 B 的数据使组件能够在具有复杂架构的系统中无缝协作。作物保险公司现在可以进行准确的作物质量评估,同时确保更透明的索赔流程。
要了解更多关于这个创新项目的知识,请查看 Launchpad 上的完整应用程序。
此外,请确保浏览我们提供的各种激动人心的应用程序。
Piyush Jain
Piyush 在软件开发方面拥有超过 16 年的经验,目前担任 Publicis Sapient 的解决方案架构师。请务必 查看他的 GitHub 个人资料,以查看他所有激动人心的作品。