Getting Started

This documentation provides a brief overview of OpenHPS, its creators and how to get started using the components in your projects.

Framework Architecture

OpenHPS is a open source hybrid positioning system that allows developers to fuse multiple positioning techniques and algorithms together in a graph topology. It is being developed by PhD Student Maxim Van de Wynckel as part of his research towards Hybrid Positioning and Implicit Human-Computer Interaction under the supervision of Prof. Dr. Beat Signer.

The core Model of OpenHPS is a data processing network aimed for sampling input sensory data to an output position.

Architectural Overview

A model represents a graph topology where each node contributes to the processing of information. This information is encapsulated in data frames that hold information of multiple data objects. Three types of nodes are identified:

  • Source nodes: Generate new data frames for the downstream node(s).
  • Processing nodes: Process the information generated by source node(s).
  • Sink nodes: Store or display the information generated by source nodes and processed by others.

Our core API provides generic nodes that can help process the most common sensory data (e.g. filter nodes, common graph shapes, merging, basic positioning algorithms). However, the extensible API also allows developers to create their own nodes.

Data frames hold information about the source that generated the information and any object that is included in the sensory data. This can range from objects that are identified by their MAC address to more abstract objects such as the map of a room. Objects inside this frame can have an absolute position, multiple relative positions and a potential parent object (e.g. the sensor of a phone has the phone as the parent object).

Each node has access to services. These services can hold information about previous positions of object or calibration data. External data services can be added to transfer data generated during the set up of the positioning system to the online stage.

More in-depth information can be found in the core API description ...

Modularity

OpenHPS is split up into multiple modules that each offer a certain set of functionalities. The core API (@openhps/core) offers the processing model and commonly used nodes for sampling absolute and relative positions. Various additions such as @openhps/socket, @openhps/rest or @openhps/mongodb can be added to extend the framework with remote graph nodes or persistent data store.

Installation

Please consult the README of each individual component for in-depth installation instructions.

Node.js

If you have npm installed, start using @openhps/core with the following command.

$ npm install @openhps/core --save

Browser

The minified version of our core API is available as a CommonJS UMD module.

<script src="https://cdn.jsdelivr.net/npm/@openhps/core"></script>

You can then access the object using window['@openhps/core'].

Alternatively, an ES6 import is supported using:

import { ModelBuilder } from 'https://cdn.jsdelivr.net/npm/@openhps/core/dist/web/openhps-core.es.min.js';

Deno

Skypack offers the deno-compatible ESM module. External NPM dependencies are available on skypack as well, allowing a module that works for both node.js and Deno.

import { ModelBuilder } from 'https://cdn.skypack.dev/@openhps/core?dts';