【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

使用 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:21584

评论

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

“蚂蚁牙黑”太火,想玩就用ModelArts做一个

华为云开发者联盟

AI 动画 modelarts 图像

肝了很久,冰河整理出这份4万字的SpringCloud与SpringCloudAlibaba学习笔记!!

冰河

微服务 高可用 高并发 冰河技术 SpringCloud Alibaba

小心你的个人信息——GitHub 热点速览 v.21.09

HelloGitHub

GitHub 开源 终端工具 社交

Java 中各种DTO,POJO 等的概念

少平

Mac 下配置 Intellij IDEA + Tomcat 出现权限问题的解决办法

少平

tomcat

关于 Synchronized 的一个点,网上99%的文章都错了

yes

Java JVM

字节跳动力推的OKR,是未来企业发展的标配吗?

ToB行业头条

一个15年的架构师谈“如何成为一名优秀的解决方案架构师”

华为云开发者联盟

架构 软件 架构师 华为云

如果重来,结果就会好吗?「Day 10」

道伟

28天写作

阿里巴巴Druid,轻松实现MySQL数据库加密!

王磊

Java springboot Druid

FindBugs:Java 静态代码检查

少平

代码审查

云计算带来的变革将如何在2021年加速创新

浪潮云

云计算

Kubelet从入门到放弃:拓扑管理(上)

DCOS

Linux Kubernetes 云原生 kubelet

左手画条龙右手画彩虹——认知负荷理论

Justin

心理学 28天写作 游戏设计

数据产品经理实战-用户运营体系搭建

第519区

算法 数据产品 数据运营

产品训练营 - 第五周 - 作业

邹小胖

产品经理训练营

Linux入门篇 —— 手把手教你 Linux 三种网络配置方法

若尘

Linux 网络

神经网络攻防:01.模型到底是什么?

P小二

神经网络 网络安全 AIPwn AI安全 P小二

翻译:《实用的Python编程》03_02_More_functions

codists

Python

第五周 继续文档的一些细节

小匚

产品经理 产品经理新人如何落地 产品经理训练营

第五次作业

Geek_79e983

产品经理训练营作业 04

KingSwim

vivo 官网资源包适配多场景的应用

vivo互联网技术

低代码 无服务器云函数

工作日志3-1

技术骨干

SARIF:DevSecOps工具与平台交互的桥梁

华为云开发者联盟

安全 DevSecOps SARIF 自动化平台 OASIS

一场由fork引发的超时,让我们重新探讨了Redis的抖动问题

华为云开发者联盟

数据库 redis 华为云 GaussDB fork

dubbo 源码 v2.7 分析:核心机制(一)

程序员架构进阶

架构 源码分析 dubbo 七日更 28天写作

关于搜商的一点记录「Day 9」

道伟

28天写作

大厂动态规划面试汇总,教你如何修炼内功

盼盼编程

算法 动态规划 数据结构和算法 笔试

一篇读懂https的本质、证书验证过程以及数据加密

梁龙先森

大前端 https

Elasticsearch Search Options 搜索参数

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

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