機器學習 | AI 成熟了,AR 產品手冊這樣本身寫出來

專屬圖1.png

明天就是端午節了,不過想必不少童鞋還得繼續加班吧。寫代碼的繼續「碼」,寫文案的繼續「編」,寫手冊的繼續「湊」,多麼紮實的端午假期……html

聽說快速發展的 AI 技術已經能夠自動根據事件編寫出普通人沒法分辨的新聞報道,甚至不少機構已經開始用這種方式來創做新聞內容。那麼其餘領域呢?做爲成熟的 AI,總能本身搞定這些任務了吧。git

本文,咱們就一塊兒看看,如何使用 Amazon Sumerian 和其餘 AWS 服務,藉助加強現實、人工智能聊天機器人以及由 AWS IoT 提供的聯網汽車數據建立交互式汽車使用手冊。沒錯,不只能自動建立產品使用手冊,並且這種手冊仍是基於 AR 技術的,能夠用更強的交互方式與用戶互動!github

其實這樣的解決方案不只能夠減輕相關創做人員的工做量,也能爲產品的最終用戶提供更優質的體驗。畢竟都知道,汽車廠商會在車輛中不斷增長新功能、用戶界面和人工智能特性。雖然他們也會發布各類用戶使用手冊,詳細介紹如何使用這些功能,然而這些手冊往很是繁瑣,包含不一樣的語言,長度長達數百頁。所以車主經常難以搜索到與特定功能相關的信息。數據庫

雖然一些車廠曾嘗試使用視頻或移動應用替代紙質手冊,但並無改進用戶體驗,不少車主仍然不知道如何充分利用了汽車廠商提供的全部創新功能。但之後狀況就好多了。編程

須要注意,限於篇幅,本文只簡要介紹了總體解決方案中不一樣邏輯組件的概述,並不是完整的按部就班教程。json

所涉及的 AWS 服務

下文介紹的解決方案共使用瞭如下六項服務:緩存

  • Amazon Sumerian:讓您可以快速、輕鬆地建立和運行虛擬現實(VR)、加強現實(AR)和 3D 應用程序,而無需進行任何專業編程或 3D 製圖專業知識。只需一鍵單擊便可發佈所建立的3D場景,而後在 Web、虛擬現實眼鏡和移動應用程序中分發。在本文中,Sumerian 用於渲染車輛內部和外部(可選)的 3D 模型併爲其添加動畫效果。
  • Amazon Lex:一項使用語音和文本爲任何應用程序構建對話接口的服務。Amazon Lex 採用的支持技術與 Amazon Alexa 相同。Amazon Lex 使全部開發人員都可以使用 Alexa 的強大功能,從而使深度學習技術大衆化。在本文中,Amazon Lex 用於識別語音命令並肯定擁有者所查詢的功能或特性。
  • Amazon Polly:一項文本轉語音服務,它使用高級深度學習技術合成語音,使其聽起來像人聲。經過 Amazon Polly,您能夠建立可以說話的應用程序,並構建全新類別的支持語音功能的產品。Amazon Polly 支持多種語言的數十種語音,支持應用程序在不一樣國家/地區工做。在本文中,Amazon Polly 用於將 Amazon Lex 答覆表達成逼真的語音。
  • Amazon DynamoDB:一種鍵值和文檔數據庫,用於以任何規模提供個位數毫秒級性能。DynamoDB 徹底託管,具備內置的安全性、備份和還原功能以及用於 Internet 規模應用程序的內存緩存。在本文中,您將看到將 DynamoDB 用做步驟的文檔存儲,以便在車輛內部進行交互。
  • AWS Lambda:讓您無需預置或管理服務器便可運行代碼。在本演示中,Lambda 函數用於填充 AWS IoT Core 影子文檔以包含所需內容。
  • AWS IoT Core:一種託管雲服務,可以讓聯網設備輕鬆安全地與雲應用程序及其餘設備進行交互。AWS IoT Core 支持安全、可靠地將數十億臺設備和數萬億條消息鏈接到 AWS 終端節點和其餘設備。AWS IoT Core 支持用於存儲聯網設備的最新狀態(不管這些設備是否聯機)的設備影子概念。在本文中,設備影子文檔用於在 Amazon Lex、DynamoDB、Sumerian 和車輛的虛擬表示形式之間交換信息。

這些服務之間的架構關係以下圖所示:安全

ai-vehicle-manual-1.gif

上圖展現了 AWS 服務相互之間以及與最終用戶和車輛之間的相對關係。車主啓動移動應用程序,該應用程序中嵌入了包含車輛模型的 Sumerian 場景。車主隨後能夠經過點擊按鈕來激活 Amazon Lex 和 Amazon Polly。激活後,用戶能夠與應用程序進行交互,以執行須要執行的一系列步驟。服務器

用戶手冊的內容存儲在 DynamoDB 中。Amazon Lex 經過調用 Lambda 來獲取此信息。Lambda 函數將查詢 DynamoDB 表並檢索 JSON 結構,以描述:架構

  1. 步驟(按時間排序而且標記有 start end),以指示什麼時候應最終突出顯示控件。例如:…{「LeftTemperatureDial」: {「start」: 0, 「end」: 2 }}…
  2. 須要在步驟於 Sumerian 模型中顯示時發出的提示。例如,「按下左側調溫盤2秒鐘。」

此 JSON 文檔隨後將傳遞給 AWS IoT Core 設備影子文檔。Sumerian 隨後將按期輪詢文檔的狀態更改,並經過高亮顯示相應的界面控件來讓 Sumerian 模型反映步驟。

如需更好地視覺和聽覺效果,請參閱 AWS 汽車演示視頻

如何建立此演示

請按照如下步驟操做來構建此演示:

  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 模型或實體。咱們能夠將這些標記塗成紅色並讓它們呈半透明狀,以便仍可看到下面的實際控件。隨後對這些實體命名,以便可以在腳本中更輕鬆地識別出它們。此外還能夠隱藏它們以模擬初始狀態,在該狀態下,只能看到實際的車內控件,以下面的屏幕截圖所示:

ai-vehicle-manual-2-2.jpg

步驟3:建立 DynamoDB 表

在 DynamoDB 中建立一個表,並使用各類車輛功能和相應的步驟對其進行數據初始化,以啓用、禁用、設置或取消設置相應的功能。這些指令中包含必須顯式的每一個子模型實體的開始/結束時間和持續時間,以遵循想要的顯示順序,如如下屏幕截圖所示:

ai-vehicle-manual-3.gif
ai-vehicle-manual-4.gif

步驟4:建立 Amazon Lex 機器人

建立 Amazon Lex 機器人並使用意圖和話術對其進行初始化。咱們將啓用 Amazon Lex 來理解車主的問題。Amazon Lex 將肯定車主所詢問的功能,並將此信息發送給 Lambda 函數。

sumerian-lex-1.gif
sumerian-lex-2.gif

如上述兩個截圖所示,咱們將建立一個名爲 airconditioningManual 的意圖,此意圖隨後將包括若干個含有如下三個自定義槽的示例話術:

  • {option},用於描述須要執行的活動,例如「打開」、「增長」、「移除」等
  • {action},用於描述功能,例如「溫度」、「風扇速度」等
  • {conjunction},用於容許可選連詞,如「經過」、「在…上」、「的」等

咱們還能夠爲其餘交互或其餘車輛部件添加更多意圖。

步驟5:使用 Lambda 函數

Lambda 函數包含用於執行下列步驟的代碼。

1.它用於查詢 DynamoDB 表,以獲取包含可視或高亮顯示的控件元素(儀表盤、按鈕、蓋板、顯示屏、標誌等)開始時間、結束時間和持續時間的已排序指令文檔。

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

2.Lambda 函數將經過設備影子文檔轉換這組指令,並將其存儲至 AWS IoT Core。

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

3.Lambda 函數將向 Amazon Lex 返回一個響應對象,以知足來自手冊擁有者的請求。此響應對象包含包裝在句子中的要執行的指令,可進行播放。

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

步驟6:在 Sumerian 中建立一個狀態機

使用如下步驟在Sumerian中建立一個狀態機。

1.此狀態機將持續偵聽設備影子文檔上發生的更改。狀態機中存在三種狀態,以下圖所示:

a)loadSDK(加載),表示加載 AWS SDK
b)getShadow(參見下一步)
c)waiting(等待),用於在循環例行程序中調用getShadow狀態

如需瞭解與 Sumerian 中的狀態機相關的更多信息,請參閱狀態機基礎知識。這些更改將根據 IoT 影子提供的指令在模型上執行,以按照指定的開始/結束時間和持續時間顯示標記元素。設備影子隨後將進行重置。

ai-vehicle-manual-5.gif

2.上一步驟中的狀態機中的 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 的設備並測試功能。能夠在上文提供的連接中看到演示視頻。

小結

本文並不是旨在爲手冊中插入的每個部件提供綜合指南,而只介紹了全部邏輯組件。閱讀本文後,你應能夠自信地啓用須要具備視覺和聽覺反饋的交互式手冊的任何資產的 3D 模型,並將其部署到雲中。

你的解決方案可使用 Sumerian 和其餘人工智能、計算或存儲服務。至此,你已經瞭解瞭如何集成這些服務,它們在體驗中所發揮的做用以及如何將它們進行擴展。

底圖2.png

相關文章
相關標籤/搜索