An Introduction to OSVR



Similar documents
Sensor Fusion Mobile Platform Challenges and Future Directions Jim Steele VP of Engineering, Sensor Platforms, Inc.

A Beginners Guide To Responsive, Mobile & Native Websites 2013 Enhance.ie.All Rights Reserved.

Design for Success: Designing for the Internet of Things with TiWiConnect

BlackBerry Enterprise Service 10. Secure Work Space for ios and Android Version: Security Note

A REST API for Arduino & the CC3000 WiFi Chip

Native ipad Apps? Why should I care?

Development of Integrated Management System based on Mobile and Cloud Service for Preventing Various Hazards

Development of Integrated Management System based on Mobile and Cloud service for preventing various dangerous situations

HTML5 AUTOMOTIVE 2013 White Paper Series

Android Basics. Xin Yang

Mentor Embedded IVI Solutions

Example of Standard API

Here to take you beyond Mobile Application development using Android Course details

Version: July Windows 7

WEB, HYBRID, NATIVE EXPLAINED CRAIG ISAKSON. June 2013 MOBILE ENGINEERING LEAD / SOFTWARE ENGINEER

DESIGN OF A TOUCHLESS USER INTERFACE. Author: Javier Onielfa Belenguer Director: Francisco José Abad Cerdá

... Introduction Acknowledgments... 19

IsumaTV. Media Player Setup Manual COOP Cable System. Media Player

IsumaTV connexion to COOP cable system Set up manual

CHAPTER 1: CLIENT/SERVER INTEGRATED DEVELOPMENT ENVIRONMENT (C/SIDE)

SmartTV User Interface Development for SmartTV using Web technology and CEA2014. George Sarosi

Skynax. Mobility Management System. System Manual

Ways to Use USB in Embedded Systems

Dave Haseman, Ross. Hightower. Mobile Development for SAP* ^>. Galileo Press. Bonn. Boston

How To Develop An Open Play Context Framework For Android (For Android)

RTC:engine. WebRTC SOLUTION SIPWISE AND DEUTSCHE TELEKOM / TLABS ANNOUNCE COOPERATION FOR THE

Kathy Au Billy Yi Fan Zhou Department of Electrical and Computer Engineering University of Toronto { kathy.au, billy.zhou }@utoronto.

Kinect Interface to Play Computer Games with Movement

Document technology for the digital age. gdoc Platforms. Quickly introduce new digital document products to your customers. A Global Graphics Brand

Citrix XenServer 5.6 OpenSource Xen 2.6 on RHEL 5 OpenSource Xen 3.2 on Debian 5.0(Lenny)

Iotivity Programmer s Guide Soft Sensor Manager for Android

User Guide Novell iprint 1.1 March 2015

Protect, License and Sell Xojo Apps

CounterACT Plugin Configuration Guide for ForeScout Mobile Integration Module MaaS360 Version ForeScout Mobile

DreamFactory & Modus Create Case Study

POPP Hub Gateway. Manual

Executive Brief for Sharing Sites & Digital Content Providers. Leveraging Hybrid P2P Technology to Enhance the Customer Experience and Grow Profits

GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS

Custom Systems Corp.

Intuitive Device Configuration and Home Media Sharing with Content-Centric Networking

Chapter 11 I/O Management and Disk Scheduling

Tablets in Data Acquisition

Dell Wyse Cloud Connect

OpenDaylight and OpFlex. Scott Mann

Work Process Management

Modern Application Architecture for the Enterprise

Wiley Publishing, Inc.

KANGAROO MOBILE DESKTOP USER GUIDE

Bluetooth for Windows

Embedded Component Based Programming with DAVE 3

Modern App Architecture for the Enterprise Delivering agility, portability and control with Docker Containers as a Service (CaaS)

Video Collaboration & Application Sharing Product Overview

ORACLE MOBILE APPLICATION FRAMEWORK DATA SHEET

EXTENDING ORACLE WEBCENTER TO MOBILE DEVICES: BANNER ENGINEERING SUCCEEDS WITH MOBILE SALES ENABLEMENT

Next Generation. Surveillance Solutions. Cware. The Advanced Video Management & NVR Platform

Graduate presentation for CSCI By Janakiram Vantipalli ( Janakiram.vantipalli@colorado.edu )

WAVES. MultiRack SETUP GUIDE V9.80

Big Data Integration: A Buyer's Guide

Mobile Application Development Platform Comparison

Solution Spotlight BEST PRACTICES FOR DEVELOPING MOBILE CLOUD APPS REVEALED

VALLIAMMAI ENGNIEERING COLLEGE SRM Nagar, Kattankulathur DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

A Java proxy for MS SQL Server Reporting Services

ENABLING WIRELESS DATA COMMUNICATION IN CONSTRUCTION MANAGEMENT SYSTEM

HP AppPulse Mobile. Whitepaper: Privacy, Security, and Overhead. Document Release Date: September 2014 (v1.0)

Training Guide: Configuring Windows8 8

White Paper. How Streaming Data Analytics Enables Real-Time Decisions

Advantage Cloud Access: Microsoft Remote Desktop for Android

Getting Started with the iscan Online Data Breach Risk Intelligence Platform

Leveraging the power of social media & mobile applications

What We Learned From Porting 50+ Cloud Apps to Tizen. Dima Malenko, Vlad Pavlov, rollapp Inc.

HP Cloud Printing. Rachel Tang, Market Development Manager 3 Dec, 2013

Practical Android Projects Lucas Jordan Pieter Greyling

Windows Embedded Security and Surveillance Solutions

SeeTec ExpansionPackage

Honor T1 8.0 FAQ. Issue 01. Date 06/30

ANDROID LEVERED DATA MONITORING ROBOT

White Paper: The Origin of TWAIN. The TWAIN Working Group November, 2009

Seedling Internet of Things (IoT) and Wearables Platform

Windows8 Internals, Sixth Edition, Part 1

Having Fun with QNAP and your Home Automation

ACTi MobileGo User Manual. Version

Architecture and Data Flow Overview. BlackBerry Enterprise Service Version: Quick Reference

A Generic Virtual Reality Interaction System and its Extensions Using the Common Object Request Broker Architecture (CORBA)

Following statistics will show you the importance of mobile applications in this smart era,

Mobile web apps: The best option for business? A whitepaper from mrc

INTELLECT TM Software Package

Technology Rising: Thin Clients Surge Ahead

DigitalPersona Pro Enterprise

Building native mobile apps for Digital Factory

Electronic Ticket and Check-in System for Indico Conferences

HUAWEI MediaPad T1 8.0 FAQ HUAWEI TECHNOLOGIES CO., LTD. Issue 01. Date 06/30

FabulaTech Products Advanced Communications Solutions

Programming the Internet of Things

A Noble Integrated Management System based on Mobile and Cloud service for preventing various hazards

The fabryq IoT prototyping platform

Monitoring PostgreSQL database with Verax NMS

Application Architectures

Cisco Enterprise Mobility Services Platform

SIB relays C++ API SQL API. Kernel. Hardware Desc. XML. XML Parser parser.h. State. Misc. Mgmt. I/O Manager iomgr.h. Data Acq. XCR. Batt. Mgmt.

Transcription:

An Introduction to OSVR What is OSVR? OSVR is an open-source software platform for VR/AR applications. OSVR provides an easy and standardized way to discover, configure and operate hundreds of devices: VR goggles, position trackers, depth cameras, game controllers and more. OSVR supports multiple operating systems, plugs into leading game engines and is freely available under a permissive Apache 2.0 license. OSVR can be extended with open- or closed-source plugins. Plugins can provide support for new devices or add analysis capabilities such as a gesture engine, sensor fusion and data logging and eye tracking. OSVR was started by experts in gaming and virtual reality and is supported by an ever-growing list of hardware vendors, game studios, universities and software companies. This white paper provides a high-level overview of the motivation behind OSVR, its structure and key attributes. Why is OSVR useful? Twenty years ago, if you wanted to print a document from WordPerfect, you needed to install the corresponding WordPerfect driver for your printer. Then, operating systems (such as Windows) introduced a standardized printer abstraction layer so that any Windows application could print to any printer that had a Windows driver. OSVR standardizes the interface between input devices, games and output devices. It provides abstraction layers for VR devices and peripherals so that a game developer does not need to hardcode support for particular hardware. Instead, just like a Windows application prints to the Windows print services, the game developer connects to the OSVR abstraction layer. If a new VR goggle was introduced in 2016, an OSVR-based game published in 2015 could support this new goggle as soon as the goggle had an OSVR driver. To a game developer, OSVR provides interfaces pipes of data as opposed to an API to a specific piece of hardware. If there are multiple devices that provide the same type of information (for instance: hand position), these devices can be interchanged. Today, you might get hand position from a Microsoft Kinect. Tomorrow, you might get hand position from a Razer Hydra. You can reconfigure the OSVR plumbing so that the game can continue to work well regardless of how where hand position is coming from. With OSVR, game developers can focus on what they want to do with the data, as opposed to how to obtain it. OSVR lets you mix and match hardware and software packages. For instance, if you use an eye tracking camera, you can use the software provided by the camera vendor to calculate gaze direction, but you can also use alternative gaze detection packages. This means that companies that focus on a particular

software or hardware component (e.g. gaze detection module or eye tracking camera) are not left out of the VR eco-system: their expertise can be interconnected with components from others. For game developers OSVR reduces risk: The developer no longer needs to choose a particular hardware or operating system target Future friendly: the game can be used with newer devices that become available after the game was released Development is faster because the developer focuses on the game rather than on interfacing with the hardware and because the developer has access to a wide range of analysis capabilities For hardware manufacturers OSVR: Provides a large collection of compelling applications that can use the new hardware as soon as an OSVR driver is written. Solves the age-old dilemma of without installed based, no games; without games, no installed base. Eliminates the need to directly integrate with game developers; writing an OSVR plugin is often sufficient. Provides access to analysis plugins that make the hardware more useful. For software developers OSVR provides the ability to: Test and demonstrate their software modules in the context of a full pre-existing VR stack such as a published game. For instance, if a new position tracking algorithm is developed, OSVR could be configured to use this new algorithm instead of preexisting ones. Apply their IP (e.g. gesture engine) to a wide range of sensing devices and applications Use open- or closed-source modules For end users OSVR provides freedom and choice, promotes innovation through its open design and eliminates the dependency on any single vendor.

High-level OSVR Architecture The diagram on the right shows the conceptual architecture for OSVR. Native VR App Engine-based VR app Game Engine (e.g. Unity) Non-VR game Adaptation layer (e.g. Vereio) Cloud (storage, Connectivity) Applications written on game engines can interact with OSVR via dedicated game engine plugins. Alternatively, an application can directly access the OSVR interface. Analysis plugins are software modules that convert data from lower-level device plugins into higherlevel information. For instance, a gesture engine plugin can convert a stream of XYZ coordinates to a recognized gesture. Sensor fusion Gaze detection Position and orientation trackers Haptics Biometric sensors Windows-specific code HMD 1 HMD 2 Position detection Pose estimation Cameras and Depth sensors Environmental sensors Power management Input devices Object and face detection Gesture engine Eye tracker Mouse and game controller Body tracking (including hand and finger) User-defined libaries Rendering Utilities Device plugins connect to physical devices and expose interfaces pipes of data to higher layers. For instance, a plugin for a VR goggle can expose a display interface as well as an orientation tracker interface corresponding to an embedded head-tracker. Many device types and dozens of devices are supported. The adaptation layer provides OS-specific implementation (e.g. Android vs. Windows vs. ios) as well as allows OSVR devices to be accessed through a network interface such as WiFi or Bluetooth. The management layer stores and loads system and user-specific configuration locally and in the cloud. It also provides services to download device plugins on-demand, detect when software updates are available and other utility functions. Source code and well-defined interfaces are provided for all these components. Device and analysis plugins can easily be added by interested parties, and examples of how to do so are provided as part of the OSVR source-code distribution. Display Audio Force feedback Output devices Android-specific code Linux-specific code OSX-specific code Other display type System configuration (which devices and libraries are used, how are they connected) Device configuration Software updates Store/load configurations (cloud, local, non-volatile) Device discovery (which devices, where, what are they connected to?) Network transport Peripheral 1 Peripheral 2 Peripheral 3...

OSVR Technical Concepts Prior to explaining how applications interface with OSVR and how to write plugins for OSVR, we need to touch on a few OSVR technical concepts: A device is a physical entity such as an orientation sensor or the Razer Hydra controller. An interface is a pipe of data. A device exposes one or more interfaces. For instance, a Razer Hydra controller exposes several interfaces: Two XYZ position interfaces (one for the left hand, one for the right) Two orientation interfaces (one for the left hand, one for the right) Two buttons sets, one for each hand A set of analog interfaces for the variable-position triggers An interface is an instance of an interface class. An interface class defines properties that can be set or queried as well as a set of events that the class generates. A property might be the last obtained XYZ position from an XYZ position interface. An event could be the press of a particular button in a button set interface. A plugin is a software module that can be dynamically identified, loaded and connected to OSVR. Plugins implement interface classes. There are two types of plugins: Device plugins that implement interfaces for one or more physical devices Analysis plugins that implement interfaces, such as gesture engines, that do not connect directly to devices. For instance, a data smoothing plugin receives data from a device interface and converts it into smoothed data. A face detection plugin receives images from a camera interface and can generate an event when a face has been identified. From the OSVR perspective, both types of plugins are identical, and the distinction is made for human consumption. OSVR Resource Naming OSVR maintains a "path tree" similar to a URL or file system path in which all the sensing and rendering data is made available. Aliases are configured in the server to essentially redirect from a semantic path (a path with a meaningful name) all the way back to the system-specific hardware details. Thus, while direct device access is possible, it is not recommended: instead, we recommend accessing semantic paths. This accommodates use cases where the hardware is not immediately available at startup or is changed during operation without any impact to the application developer. Some examples: Position of the left hand: /me/hands/left/position Orientation of the left hand: /me/hands/left/orientation All resources associated with the left hand: /me/hands/left Position of the 0 controller of the Hydra: /razer/hydra/position/0 Output of the first smoothing filter: /analysis/smooth_filter/0

Just like a game allows mapping of various buttons to various game actions, OSVR allows defining the connection between interfaces, analysis plugins and actions. For instance: /joystick/button/1 /actions/fire maps the first joystick button into a fire action. While the game could choose to access /joystick/button/1 directly, it is recommended to access /actions/fire in this example because this allows changing the flow of information from the hardware through the OSVR layers without changing the game itself. /razer/hydra/pos/0 /analysis/smooth_filter/0 /hands/left specifies that the position of the first Hydra controller goes through a smoothing filter and then is mapped to the left hand. The connection between interfaces can be pre-loaded or can be changed dynamically 1. The list of available resources is specified in JSON files as part of the OSVR distribution and is part of the OSVR documentation Synchronous and Asynchronous Calls An application can communicate with a plugin in two ways: Synchronous ( blocking ) calls. These query the particular state of a parameter. Asynchronous calls ( callbacks ). An application can register to receive a callback for a particular event such as a button press, a new face being detected and so forth. An application can use either or both methods. For instance, some applications much choose to query the orientation tracker state in the main loop using a synchronous call whereas they might register for callbacks on certain game controller button presses. Please see examples in the OSVR documentation. OSVR for Game Developers There are three pieces of a minimal application: Initialize the library, providing an application ID, and receiving a "client context" which must be passed to future calls. In your application main loop, call the update method, which triggers callbacks and handled state changes. During application shutdown, shutdown the library (providing the client context). These are illustrated in the message state diagram on the right: 1 Dynamic connection changes are not yet implemented as of Dec 2014

Of course, such an application doesn't really use OSVR in a very productive sense. A sample flow of a more realistic application would also: Probably before the main loop starts: o Get some interfaces, o Register callbacks if desired on interfaces. o Get display parameter data. During main loop: o Handle data received by callbacks, if any. o Read state of interfaces, if desired During application shutdown, shutdown the library (providing the client context). These are illustrated in the message state diagram on the right: OSVR for Plugin Developers Device and analysis plugins are dynamically loaded by OSVR. Plugins provide support for new types of hardware or analysis functions such as gesture engines. The OSVR documentation contains example plugins. If you are a hardware or software developer that wants to create an OSVR plugin, please contact us for additional details. To support a new game engine beyond those already supported in OSVR, the best place to start is OSVR for game developers since from an OSVR perspective, a game engine is an application that uses OSVR rather than an OSVR plugin OSVR Roadmap As an open-source project, the OSVR community will have a very strong influence on future directions. At present, planned improvements include the following: Enhance the rendering side of OSVR to offer comprehensive support for rendering to multiple types of HMDs and other display devices. Create additional device plugins for new hardware as well as analysis plugins Create additional operating system ports beyond Windows and Android. We are excited to work with you and see what we can build together with OSVR!