GithubHelp home page GithubHelp logo

classicvalues / ar-cx-accelerator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from oracle/ar-cx-accelerator

0.0 1.0 0.0 10.87 MB

Oracle CX Augmented Reality Accelerator

License: Universal Permissive License v1.0

Swift 95.72% C 0.12% Metal 0.56% HTML 0.31% TypeScript 3.29%

ar-cx-accelerator's Introduction

Oracle CX Augmented Reality Accelerator

Image of an AR experience built by extending this example accelerator.

Screenshot of an example AR application built by extending the source code provided in this accelerator.

Overview

This accelerator is intended to provide an example implementation for building Augmented Reality experiences that integrate with Oracle's CX service applications: Service Cloud, Engagement Cloud, and others. The accelerator can be leveraged to introduce AR into a number of use cases such as field service, self-service, assisted-service, training, and knowledge delivery. The accelerator includes content for:

  1. Defining a convention to map the recognition of an image or object to remote IoT and service data.
  2. Defining a convention to map AR model nodes to remote IoT and service data.
  3. Using IoT data to display asset and device information.
  4. Using IoT data to display real-time and historical sensor information.
  5. Using Service Cloud or Engagement Cloud knowledge to supply PDF manuals and bulletins.
  6. Defining a convention for building step-by-step guided procedures with text, image, and 3D animations that can be declared in JSON (rather than hard-coding them).

Important Info

This project is intended for demonstration use only. It is not supported by Oracle or Oracle Customer Care.

The project does not compile without some programmatic effort. And, it omits standard required features for a public-facing application such as multi-user authentication and authorization. Rather, this accelerator is intended to be a starting-point for delivering bespoke solutions that developers may leverage to review integration and interaction paradigms that Oracle is using for AR experiences integrated with CX applications.

Repository Structure

This git repository is structured with the following folders:

  1. iOS App folder contains the Xcode project to develop and built the AR application.
  2. Oracle folder contains subfolders with assets that apply to configuring the AR app with Oracle Integration Cloud, Oracle Service Cloud, and Oracle Engagement Cloud. These assets will be used to configure Oracle applications as per the implementation documentation described below.
    1. Engagement Cloud folder contains the data model file to import into B2B service when using it as the service application for the AR app.
    2. Images contains images and other content used in the git repo.
    3. OCI Functions folder contains the OCI functions that are used for serving remote data to the app or proxying integration requests to other applications.
    4. Service Cloud folder contains the data model files, reports, and workspaces to import into B2C service when using it as the service application for the AR app.

Prerequisites

Apple

  1. Xcode 11.0 or later is required to develop and publish to your local device(s).
  2. Membership in the Apple Development Center is required for advanced development and application deployment.
  3. iOS device with an A9 chip or newer (for ARKit support).
  4. iOS 12.4+ installed on your iOS device.

Getting Started

  1. Clone this repository to your computer.
  2. In Terminal, cd to the directory where you cloned the project.
  3. In Terminal, cd to the iOS App sub folder of this project.
  4. Double click Augmented CX.workspace to open the project in Xcode and begin your exploration.
    1. Do not use Augmented CX.xcodeproj to open the project.
  5. Resolve any #error tag requirements. These have been injected for your review before the app will compile.
  6. Build and test the app. Use the OTN documents for reference regarding app configuration.

More Info

Compiler Flags

There are a few compiler flags that are used throughout the source code to help track down info in code or integration requests. You may add these values to either RELEASE or DEBUG scenario's in Xcode's Active Compilation Conditions build setting.

  1. DEBUG is used to output generic debug messages, text, etc. It is liberally used under many conditions and will cause output messages with standard compiler settings.
  2. DEBUGNETWORK is used to output the requests and responses from HTTP requests. Given the highly integrated nature of this app, it is a verbose log. This flag is disabled by default.
  3. DEBUGIOT is used to output the values of IoT sensors after the data is retrieved from an HTTP request. This is helpful to see IoT values in logs when debugging the app.
  4. DEBUGEVENTS is used to output debugging messages from the event logging classes that send data to CX Infinity and other remote data capture endpoints.

Device ID Mapping Convension

AR experiences are not directly linked to individual devices or service scenarios without creating a convension to create such links. This application attempts to create convensions that bridge the gaps between recognizing something in the real world (an image, device, etc.), identifying the specific instance of the device (the SKU or unique ID), and then applying an experience that is unique to that individual device.

We have also considered that recognizing the device in 3D space may not be possible by the user of the AR application. There may be instances where a beacon or transmitter identifies the device instead of the visual cues. iBeacons establish a pattern for recognition that we will follow in this app as well. In following this structure our recognition mapping will use this pattern:

  • UUID: A static UUID representing all devices mapped in the application. This UUID will not change in our app.
  • Major Value: An unsigned integer that maps to device models and their corresponding CAD data. This is unique to the model level, but not the SKU.
  • Minor Value: An unsigned integer that maps to individual device SKUs.
iBeacon Attribute Value
UUID 1B765FF2-B692-4A42-8EBC-8AF2227ABCEC
Major Value device model
Minor Value device id

In the case of the minor ID, a mapping service (an OCI Function in our case) will return the IoT CS UUID of the device, which can then be used for device-specific queries in IoTCS.

Using the supplied red pump CAD model, the table would use the following convension, in which the device model represented by the major value is always 1, since all red pumps are the same model, and each recognition image corresponding to a unique SKU in the minor value.

iBeacon Attribute Value
UUID 1B765FF2-B692-4A42-8EBC-8AF2227ABCEC
Major Value 1
Minor Value 1,2,3...n

iOS App Third-Party Open-Source Libraries

These third party libraries are leveraged in the iOS application via Swift Packages.

Thanks to these developers for their excellent open-source libraries. See license file for license attribution.

ar-cx-accelerator's People

Contributors

classicvalues avatar mend-bolt-for-github[bot] avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.