速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用 Amazon Sumerian 和 Amazon Lex 构建 AR/AI 车辆使用手册

  • 2020-04-07
  • 本文字数:4718 字

    阅读完需:约 15 分钟

使用 Amazon Sumerian 和 Amazon Lex 构建 AR/AI 车辆使用手册

汽车厂商在车辆中不断增加新的功能、用户界面和人工智能特性。同时,也发布了各种用户使用手册,详细介绍如何使用这些功能。然而这些用户手册往非常繁琐,包含不同的语言,长度长达数百页。因此,车主常常难以搜索到与特定功能相关的信息。车厂也曾尝试使用视频或移动应用替代纸质手册,但并没有改进用户体验,很多车主仍然不知道如何充分利用了汽车厂商提供的所有创新功能。


本博文介绍了如何使用 Amazon Sumerian 和其他 AWS 服务创建交互式汽车手册。解决方案中使用了增强现实、人工智能聊天机器人以及由 AWS IoT 提供的联网汽车数据。它并非全面的分步教程,仅提供逻辑组件的概述。

AWS 服务

本博文使用了以下六项服务:


  1. Amazon Sumerian 让您能够快速、轻松地创建和运行虚拟现实 (VR)、增强现实 (AR) 和 3D 应用程序,而无需进行任何专业编程或 3D 制图专业知识。只需一键单击即可发布所创建的 3D 场景,然后在 Web、虚拟现实耳机和移动应用程序中分发。在本博文中,Sumerian 用于渲染车辆内部和外部(可选)的 3D 模型并为其添加动画效果。

  2. Amazon Lex 是一项使用语音和文本为任何应用程序构建对话接口的服务。Amazon Lex 采用的支持技术与 Amazon Alexa 相同。Amazon Lex 使所有开发人员都能够使用 Alexa 的强大功能,从而使深度学习技术大众化。在本博文中,Amazon Lex 用于识别语音命令并确定拥有者所查询的功能或特性。

  3. Amazon Polly 是一项文本转语音服务,它使用高级深度学习技术合成语音,使其听起来像人声。通过 Amazon Polly,您可以创建能够说话的应用程序,并构建全新类别的支持语音功能的产品。Amazon Polly 支持多种语言的数十种语音,支持应用程序在不同国家/地区工作。在本博文中,Amazon Polly 用于将 Amazon Lex 答复表达成逼真的语音

  4. Amazon DynamoDB 是一个键值和文档数据库,用于以任何规模提供个位数毫秒级性能。DynamoDB 完全托管,具有内置的安全性、备份和还原功能以及用于 Internet 规模应用程序的内存缓存。在本博文中,您将看到将 DynamoDB 用作步骤的文档存储,以便在车辆内部进行交互。

  5. AWS Lambda 让您无需预置或管理务器即可运行代码。在本演示中,Lambda 函数用于填充 AWS IoT Core 影子文档以包含所需内容

  6. AWS IoT Core 是一种托管云服务,可让联网设备轻松安全地与云应用程序及其他设备进行交互。AWS IoT Core 支持安全、可靠地将数十亿台设备和数万亿条消息连接到 AWS 终端节点和其他设备。AWS IoT Core 支持用于存储联网设备的最新状态(无论这些设备是否联机)的设备影子概念。在本博文中,设备影子文档用于在 Amazon Lex、DynamoDB、Sumerian 和车辆的虚拟表示形式之间交换信息。


下图展示了这些服务之间的架构关系。



本图展示了 AWS 服务相互之间以及与最终用户和车辆之间的相对关系。车主启动移动应用程序,该应用程序中嵌入了包含车辆模型的 Sumerian 场景。车主随后可以通过点击按钮来激活 Amazon Lex 和 Amazon Polly。激活后,用户可以与应用程序进行交互,以执行需要执行的一系列步骤。


用户手册的内容存储在 DynamoDB 中。Amazon Lex 通过调用 Lambda 来获取此信息。Lambda 函数将查询 DynamoDB 表并检索 JSON 结构,以描述:


  1. 步骤(按时间排序并且标记有 startend),以指示何时应最终突出显示控件。例如,…{“LeftTemperatureDial”: {“start”: 0, “end”: 2 }}…

  2. 需要在步骤于 Sumerian 模型中显示时发出的提示。例如,“按下左侧调温盘 2 秒钟。”


此 JSON 文档随后将传递给 AWS IoT Core 设备影子文档。Sumerian 随后将定期轮询文档的状态更改,并通过高亮显示相应的界面控件来让 Sumerian 模型反映步骤。

如何创建此演示

请按照以下步骤操作,来构建此演示:


  1. 创建基本场景。

  2. 为控制元素添加标签。

  3. 创建 DynamoDB 表。

  4. 创建 Amazon Lex 机器人。

  5. 使用 Lambda 函数。

  6. 在 Sumerian 中创建一个状态机。

  7. 在场景中放置一个 AR 摄像头。

  8. 发布场景。

  9. 链接至 Amazon Lex 机器人。

  10. 部署应用程序。

步骤 1:创建基本场景

创建一个带有实体的基本场景以及 AWS 配置。


  1. 使用增强现实模板创建一个场景,并导入所购汽车的 3D 资产。此模型源自 3D 模型市场,也可从免费的 3D 图库或 3D 设计软件以任何受支持的格式导入。

  2. 创建一个 Amazon Cognito 身份池,以允许 Sumerian 使用 Amazon Lex 和 AWS IoT Core。此身份池应拥有访问 AWS IoT、Amazon Lex 和 Amazon Polly 的相应策略。有关更多信息,请参阅使用 AWS CloudFormation 设置 Amazon Cognito

  3. 向 Sumerian 场景中的 AWS 配置组件提供创建的身份池 ID,并启用 AWS IoT 数据客户端上的复选框。

步骤 2:为控制元素添加标签

创建包含车内大部分控制元素(仪表盘、按钮、盖板、显示屏、标志等)的 3D 模型或实体。我将这些标记涂成了红色并让它们成半透明状,以便仍可看到下面的实际控件。我对这些实体进行了命名,以便能够在我的脚本中更轻松地识别出它们。我还隐藏了它们以模拟初始状态,在该状态下,只能看到实际的车内控件,如下面的屏幕截图所示。


步骤 3:创建 DynamoDB 表

在 DynamoDB 中创建一个表,并使用各种车辆功能和相应的步骤对其进行数据初始化,以启用、禁用、设置或取消设置相应的功能。这些指令中包含必须显式的每个子模型实体的开始/结束时间和持续时间,以遵循您想要的显示顺序,如以下屏幕截图所示。



步骤 4:创建 Amazon Lex 机器人

创建 Amazon Lex 机器人并使用意图和话术对其进行初始化。您将启用 Amazon Lex 来理解车主的问题。Amazon Lex 将确定车主所询问的功能,并将此信息发送给 Lambda 函数。




如在上面的两个屏幕截图中所示,您将创建一个被称为 airconditioningManual 的意图。此意图随后将包括若干个含有以下三个自定义槽的示例话术:


  • {option},用于描述需要执行的活动,示例包括“打开”、“增加”、“移除”等

  • {action},用于描述功能,例如“温度”、“风扇速度”等

  • {conjunction},用于允许可选连词,如“通过”、“在…上”、“的”等


您可以为其他交互或其他车辆部件添加更多意图。

步骤 5:使用 Lambda 函数

Lambda 函数包含用于执行下列步骤的代码。


  1. 它用于查询 DynamoDB 表,以获取包含可视或高亮显示的控件元素(仪表盘、按钮、盖板、显示屏、标志等)开始时间、结束时间和持续时间的已排序指令文档。


   response = dynamo_client.get_item(                       TableName='XXXautoYYY_manual',                       Key={                               'action_name': {                                   'S': toget                               }                           }                   )
复制代码


  1. Lambda 函数将通过设备影子文档转换这组指令,并将其存储至 AWS IoT Core。


   action = iot_client.update_thing_shadow(                       thingName='XXXautoYYY',                       payload=json.dumps({                           "state":{                               "desired": {                                   "steps": actionList                               }                           }                       })                   )
复制代码


  1. Lambda 函数将向 Amazon Lex 返回一个响应对象,以满足来自手册拥有者的请求。此响应对象包含包装在句子中的要执行的指令,可进行播放。


   rtrn = {           "dialogAction": {               "type": "Close",               "fulfillmentState": "Fulfilled",               "message": {                   "contentType": "PlainText",                   "content": rtrnmessage               }           }       }
复制代码

步骤 6:在 Sumerian 中创建一个状态机

使用以下步骤在 Sumerian 中创建一个状态机。


  1. 此状态机将持续侦听设备影子文档上发生的更改。状态机中存在三种状态,如下图所示:

  2. loadSDK(加载),表示加载 AWS SDK

  3. getShadow(参见下一步)

  4. waiting(等待),用于在循环例行程序中调用 getShadow 状态。

  5. 如需了解与 Sumerian 中的状态机相关的更多信息,请参阅状态机基础知识。这些更改将根据 IoT 影子提供的指令在模型上执行,以按照指定的开始/结束时间和持续时间显示标记元素。设备影子随后将进行重置。



  1. 上一步骤中的状态机中的 getShadow 状态将执行检索 IoT 设备影子的脚本,以执行单独层的实际动画。如需了解与编写脚本和检索 IoT 设备影子相关的更多信息,请参阅 IoT 物体、影子和脚本操作。脚本执行步骤(显示高亮显示的实体→等待→隐藏突出显示的实体)的示例代码段如下所示:


   function showControl(control, ctx, controlName) {
setTimeout(function(){ var myWorld = ctx.entity.world.entityManager var controlEnt = myWorld.getEntityByName(controlName) controlEnt.show() setTimeout(function(){ controlEnt.hide()
}, (control.end-control.start)*1000); }, control.start*1000); }
复制代码

步骤 7:在场景中放置一个 AR 摄像头

在面向车辆仪表板的场景中放置一个 AR 摄像头实体。我还相应地扩展车辆,以便移动应用程序用户和车主能够看到控件元素(仪表盘、按钮、盖板、显示屏、标志等)相对于实际车辆上的控件的大小。

步骤 8:发布场景

发布场景并将 URL 嵌入到 GitHub 上提供的示例 iOS/Android 占位符应用程序中。这些应用程序为开源应用程序,可用于 iOSAndroid


private let sceneURL = URL(string: "https://us-east-1.sumerian.aws/ABCDEFGHIJKLMNOPRSTUVWXYZ1234567.scene/?arMode=true&&a")!
复制代码

步骤 9:链接至 Amazon Lex 机器人

最后一点,也是最重要的一点,我通过 GitHub 上的其他示例项目添加 Amazon Lex 机器人,并将其与步骤 4 中发布的 Amazon Lex 机器人链接在一起。


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let credentialProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "us-east-1:STUVWXYZ-0000-1111-2222-LKJIHGFEDCBA")
let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration
let chatConfig = AWSLexInteractionKitConfig.defaultInteractionKitConfig(withBotName: "XXXAWSYYY", botAlias: "$LATEST") chatConfig.autoPlayback = true AWSLexInteractionKit.register(with: configuration!, interactionKitConfiguration: chatConfig, forKey: "AWSLexVoiceButton") AWSLexInteractionKit.register(with: configuration!, interactionKitConfiguration: chatConfig, forKey: "chatConfig")
return true }
复制代码

步骤 10:部署应用程序

最后一步是将应用程序部署到支持 iOS 的设备并测试功能。可以在此博文的 AWS 服务部分看到演示视频。

小结

本博文并非旨在为手册中插入的每一个部件提供综合指南,它只介绍了所有逻辑组件。阅读本博文之后,您应可以自信地启用需要具有视觉和听觉反馈的交互式手册的任何资产的 3D 模型,并将其部署到云中。


您的解决方案可以使用 Sumerian 和其他人工智能、计算或存储服务。现在,您已了解了如何集成这些服务,它们在体验中所发挥的作用以及如何将它们进行扩展。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/building-an-ar-ai-vehicle-manual-using-amazon-sumerian-and-amazon-lex/


2020-04-07 17:21757

评论

发布
暂无评论
发现更多内容

Fabric.js 激活输入框

德育处主任

fabric canvas Fabric.js 6月月更

RPC的基本原理

卢卡多多

技术 RPC 6月月更

Django API 开发:实现用户登录与注册

宇宙之一粟

django 6月月更

外包学生管理系统架构文档

Pengfei

外包管理系统架构设计

地下地上

架构实战营

【愚公系列】2022年06月 面向对象设计原则(三)-里氏替换原则

愚公搬代码

6月月更

外包学生管理系统架构文档(架构实战营 模块三作业)

Gor

10 个派上用场的 Flutter 小部件

坚果

6月月更

明道云上榜2022年中国信创行业办公软件排行榜

明道云

第三模块作业

Justin1024

外包学生管理系统架构文档

Geek_7a789a

编程简单科普系列-什么是编程(1)

迷彩

编程 科普 二进制 6月月更 电信号

企业IT资源管理

阿泽🧸

IT资源 6月月更

spring4.1.8初始化源码学习三部曲之三:AbstractApplicationContext.refresh方法

程序员欣宸

Java spring Spring Framework 6月月更

【高并发】线程的生命周期其实没有我们想象的那么简单!!

冰河

并发编程 多线程 高并发 异步编程 6月月更

[模块三]

wuli洋

Camtasia 2022发布更新功能介绍

茶色酒

Camtasia 2022

Web Service进阶(八)BASE64Decoder小解

No Silver Bullet

6月月更 BASE64Decoder

C#入门系列(九) -- 方法使用

陈言必行

C# 6月月更

关于在线帮助中心你需要思考以下几个问题

小炮

外包学生管理系统架构文档

Asura

Leetcode 349 两个数组的交集 ( Intersection of Two Arrays *Easy* ) 题解分析

Nick

Java LeetCode 6月月更 leetcode 349 两个数组的交集

运算符

Jason199

运算符 js 6月月更

InfoQ 极客传媒 15 周年庆征文| 迁移 Eureka 到 Nacos 之双注册双订阅模式

4ye

架构 nacos Eureka springcloudAlibaba InfoQ极客传媒15周年庆

LabVIEW控制Arduino采集DHT11温湿度数值(进阶篇—4)

不脱发的程序猿

单片机 LabVIEW VISA Arduino Uno 采集DHT11温湿度数值

外包学生管理系统架构设计

小马

#架构实战营

【Python技能树共建】lambda 表达式

梦想橡皮擦

6月月更

Web3的布局潜力,STI处于价值洼地

股市老人

MySql多表查询

工程师日月

6月月更

学生管理系统架构设计文档

Geek_e8bfe4

使用 Amazon Sumerian 和 Amazon Lex 构建 AR/AI 车辆使用手册_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章