面对气候变化,作物保险公司面临着一系列全新的问题。缺乏评估可耕地和产量的相关数据一直是个问题,而准确评估作物损失也被证明几乎是不可能完成的任务。
更糟糕的是,作物的偏远位置可能会阻止保险公司找到专家来进行检查和风险评估。这些都会对保险公司的成本和时间产生影响。
但是,无人机的能力正迅速被认为是解决这些问题的方案。
Launchpad 应用 演示了如何通过创建一个互连的无人机系统来实现这一点,该系统使用 Redis 在组件之间传输数据。Redis 将每个组件拉得更近,从而能够实时传输大量数据。
借助这项资产,无人机能够飞越田地,拍摄作物图像,然后将它们发送回在线门户进行评估。创建了一个演示来说明如何实现这一点。
让我们来研究一下该团队是如何实现这一目标的。但在我们深入探讨之前,我们还有各种不同的应用程序供您探索,因此请务必在 Launchpad 上查看它们。
您将构建一个无人机系统,该系统使用 Redis 和云技术,以快速捕获农村地区作物的准确数据。作物保险公司可以利用这项资产来创建更安全的保险单,同时在 索赔流程 中最大限度地提高透明度。
我们将探讨他们是如何将所有这些不同的组件结合在一起,使其彼此和谐地工作。
开发
云和服务
现在让我们来看看架构。为了简化,我们将其分解为 4 个部分。
借助这款产品,保险公司可以实时进行作物检查,并在他/她的办公室制定保险单。
第 1 步. 克隆项目存储库
git clone https://github.com/redis-developer/CropInsurRedis
如果您查看源代码存储库,整个项目分为 3 个主要部分
第 2 步. 检查 Airsim 模拟器
Redis 模块、RedisGears、RediStreams 和 RedisAI 都部署在此项目中。它们都用于分析无人机实时捕获的土地图像,以及使用 Tensorflow、Microsoft Custom Vision 和 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 步. 设置 Unreal Engine
Unreal Engine 是世界上最开放和最先进的实时 3D 创建工具。此时,您需要 在您的本地机器上设置 Unreal Engine 以模拟无人机在虚拟田地上的飞行。
以下是设置 Unreal Engine 的硬件要求:
一旦在您的本地环境中设置了 Unreal Engine,您需要从 Google Drive 下载该文件夹。它包括无人机将飞越的不同景观的地图。由于其文件很大,我们已将该文件夹放在 Google Drive 中。
下载该文件夹后,您需要双击“FinalProjDroneSquad”文件,如下所示
这将在 Unreal Editor 上启动景观,如下所示
单击下面突出显示的“播放”按钮以开始第 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’ 文件中。
打开你喜欢的终端并运行以下命令。
在第一个选项卡上运行以下命令,并将 level 参数更改为 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 Version 14+
git clone https://github.com/redis-developer/CropInsurer
npm i -g yarn
yarn install
yarn start
密码:admin
以下是应用程序的屏幕截图。
结论:利用实时数据消除障碍
通过 Redis 的高级功能,这个 Launchpad 应用程序 创建了一个强大的无人机系统,使作物保险公司能够从办公室扫描、监控和评估农作物产量质量。 然而,使该项目的雄心壮志得以实现的真正资产是 Redis 提供实时数据的能力。
以如此快的速度将数据从 A 传输到 B,使组件能够在具有复杂架构的系统中彼此无缝协作。 作物保险公司现在可以进行准确的作物质量评估,同时确保更透明的索赔流程。
要了解有关此创新项目的更多信息,请查看 Launchpad 上的完整应用程序。
另外,请务必浏览我们在那里提供的令人兴奋的应用程序范围。
Piyush Jain
Piyush 拥有超过 16 年的软件开发经验,目前在 Publicis Sapient 担任解决方案架构师。 请务必 查看他的 GitHub 个人资料,了解他所有令人兴奋的工作。