Skip to content

Commit

Permalink
chore: JOSS paper wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Maximvdw committed Nov 14, 2023
1 parent 489bd06 commit 078fef9
Show file tree
Hide file tree
Showing 6 changed files with 290 additions and 13 deletions.
9 changes: 9 additions & 0 deletions docs/paper/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "2"
services:
app:
image: openjournals/inara
user: $UID:$GID
environment:
journal: JOSS
volumes:
- ./:/data
24 changes: 24 additions & 0 deletions docs/paper/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
@inproceedings{vandewynckel2021,
title={{Indoor Positioning Using the OpenHPS Framework}},
author={Van de Wynckel, Maxim and Signer, Beat},
booktitle={{Proceedings of IPIN 2021, The 11th International Conference on Indoor Positioning and Indoor Navigation}},
pages={1--8},
year={2021},
doi={10.1109/IPIN51156.2021.9662569}
}

@inproceedings{vandewynckel2023,
title={{SemBeacon: A Semantic Proximity Beacon Solution for Discovering and Detecting the Position of Physical Things}},
author={Van de Wynckel, Maxim and Signer, Beat},
booktitle={{Proceedings of IoT 2023, The 13th International Conference on the Internet of Things}},
pages={1--8},
year={2023},
}

@inproceedings{vandewynckel2022,
title={{A Solid-based Architecture for Decentralised Interoperable Location Data}},
author={Van de Wynckel, Maxim and Signer, Beat},
booktitle={{Proceedings of IPIN 2022, The 12th International Conference on Indoor Positioning and Indoor Navigation, CEUR Workshop Proceedings}},
pages={1--15},
year={2022}
}
232 changes: 232 additions & 0 deletions docs/paper/paper.jats
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN"
"JATS-publishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="1.2" article-type="other">
<front>
<journal-meta>
<journal-id></journal-id>
<journal-title-group>
<journal-title>Journal of Open Source Software</journal-title>
<abbrev-journal-title>JOSS</abbrev-journal-title>
</journal-title-group>
<issn publication-format="electronic">2475-9066</issn>
<publisher>
<publisher-name>Open Journals</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">0</article-id>
<article-id pub-id-type="doi">N/A</article-id>
<title-group>
<article-title>OpenHPS: A Modular Framework to Facilitate the
Development and Sharing of Positioning Systems and
Algorithms</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-0314-7107</contrib-id>
<name>
<surname>Van de Wynckel</surname>
<given-names>Maxim</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
</contrib>
<contrib contrib-type="author">
<contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-9916-0837</contrib-id>
<name>
<surname>Signer</surname>
<given-names>Beat</given-names>
</name>
<xref ref-type="aff" rid="aff-1"/>
</contrib>
<aff id="aff-1">
<institution-wrap>
<institution>Vrije Universiteit Brussel, Belgium</institution>
</institution-wrap>
</aff>
</contrib-group>
<pub-date date-type="pub" publication-format="electronic" iso-8601-date="2023-11-13">
<day>13</day>
<month>11</month>
<year>2023</year>
</pub-date>
<volume>¿VOL?</volume>
<issue>¿ISSUE?</issue>
<fpage>¿PAGE?</fpage>
<permissions>
<copyright-statement>Authors of papers retain copyright and release the
work under a Creative Commons Attribution 4.0 International License (CC
BY 4.0)</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>The article authors</copyright-holder>
<license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/">
<license-p>Authors of papers retain copyright and release the work under
a Creative Commons Attribution 4.0 International License (CC BY
4.0)</license-p>
</license>
</permissions>
<kwd-group kwd-group-type="author">
<kwd>TypeScript</kwd>
<kwd>Hybrid positioning</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="summary">
<title>Summary</title>
<p>Positioning systems are a collection of technologies and algorithms
that can help to determine the location of people and objects. While
outdoor positioning systems mainly use satellites such as GPS to
perform the tracking, many different technologies exist that can offer
better latency, accuracy or battery efficiency depending on the use
case. These use cases can range from indoor positioning systems where
there is no standardised technology to smaller scale positioning
systems such as tracking the location of a pen on a piece of paper. In
the research domain of positioning and tracking, these novel types of
positioning systems are often implemented as single use protypes with
no common data format, making it difficult to expand. OpenHPS was
created as a framework to enable to creation of positioning systems
for a wide range of use cases and to also allow a wide range of
algorithms. The creation of a positioning system using our framework
is graph based, allowing developers to share <italic>nodes</italic>
that implement new algorithms or combine various technologies.</p>
</sec>
<sec id="statement-of-need">
<title>Statement of Need</title>
<sec id="context">
<title>Context</title>
<p><monospace>OpenHPS</monospace> is an open source hybrid
positioning system framework written in TypeScript. It can be run on
the server using NodeJS, the browser or even hybrid mobile
applications such as NativeScript, React-Native and CapacitorJS. The
general design of a positioning system created using our framework
consists of a graph with a set of nodes that process data.</p>
<p>All concepts, ranging from positions to sensor values can be
expressed in various ways with varying units, allowing OpenHPS to be
used for small scale use cases such as tracking a pen on a paper to
larger use cases such as tracking airplanes across the globe.</p>
</sec>
<sec id="related-work">
<title>Related Work</title>
</sec>
</sec>
<sec id="framework">
<title>Framework</title>
<sec id="data-frames-and-objects">
<title>Data Frames and Objects</title>
<p>Our framework uses stream based processing of
<monospace>DataFrame</monospace>s which contain all time-sensitive
information. Inside these frames can be one or more
<monospace>DataObject</monospace>s which indicate the spatial
objects that are relevant for the information within the data
frame.</p>
<p>Both this information can be serialised to JSON or semantic RDF
data, enabling the interoperability between systems.</p>
</sec>
<sec id="nodes">
<title>Nodes</title>
<p>Each node in the graph represent a step in the processing of data
frames from source to sink. A <monospace>SourceNode</monospace>
generates information, such as a sensor that .</p>
<sec id="communication">
<title>Communication</title>
</sec>
</sec>
<sec id="modules">
<title>Modules</title>
<p>OpenHPS is modular by design, mainly due to the ability to extend
data frames and objects. These extensions allow for different data
objects such as different sensors such as cameras and IMU sensors or
spatial landmarks such as Bluetooth beacons.</p>
<p>Each node in a positioning model can be extended as well,
allowing the creation of custom algorithms that can be added or
removed from a positioning system with ease.</p>
</sec>
<sec id="performance">
<title>Performance</title>
<p>Since our framework uses TypeScript, it uses JavaScript at
runtime, which is single-threaded by default. To overcome the
challenges associated with this when creating real time stream
processing systems, our graphs or portions of the graph can be run
with the help of web workers. All data transmitted through our graph
is serialisable, which prevents the need for developers to handle
this serialisation or the communication between web workers
themselves.</p>
<p>In addition to the ability to run graphs on multiple workers, our
communication nodes such as MQTT, combined with the serialisability
of data, allows developers to offload the processing of complicated
tasks to other servers or dedicated processors. For more
high-demanding algorithms such as computer vision and visual SLAM,
modules such as
<ext-link ext-link-type="uri" xlink:href="https://github.com/OpenHPS/openhps-opencv">(<xref alt="openhps/opencv?" rid="ref-openhpsU002Fopencv" ref-type="bibr"><bold>openhps/opencv?</bold></xref>)</ext-link>
and
<ext-link ext-link-type="uri" xlink:href="https://github.com/OpenHPS/openhps-openvslam">(<xref alt="openhps/openvslam?" rid="ref-openhpsU002Fopenvslam" ref-type="bibr"><bold>openhps/openvslam?</bold></xref>)</ext-link>
create C++ bindings in NodeJS.</p>
</sec>
</sec>
<sec id="examples-of-rearch-work">
<title>Examples of Rearch Work</title>
<p>OpenHPS has been a building block for various research such as its
use within indoor positioning systems
(<xref alt="Van de Wynckel &amp; Signer, 2021" rid="ref-vandewynckel2021" ref-type="bibr">Van
de Wynckel &amp; Signer, 2021</xref>), its ability to serialise
location data to RDF in a demonstrator application that aims to
preserve privacy and transparency using Solid-pods
(<xref alt="Van de Wynckel &amp; Signer, 2022" rid="ref-vandewynckel2022" ref-type="bibr">Van
de Wynckel &amp; Signer, 2022</xref>) and its use within the SemBeacon
demonstrator application
(<xref alt="Van de Wynckel &amp; Signer, 2023" rid="ref-vandewynckel2023" ref-type="bibr">Van
de Wynckel &amp; Signer, 2023</xref>) that is written in CapacitorJS
and uses OpenHPS to deserialise positioning data and positioning
systems. However, with the ability for OpenHPS to contain modular
nodes, its use within the domain of positioning systems can allow for
easier sharing of algorithms and findings, as well as the rapid
creation of prototypes and demonstrators that make use of location
data.</p>
</sec>
</body>
<back>
<ref-list>
<ref id="ref-vandewynckel2021">
<element-citation publication-type="paper-conference">
<person-group person-group-type="author">
<name><surname>Van de Wynckel</surname><given-names>Maxim</given-names></name>
<name><surname>Signer</surname><given-names>Beat</given-names></name>
</person-group>
<article-title>Indoor Positioning Using the OpenHPS Framework</article-title>
<source>Proceedings of IPIN 2021, The 11th International Conference on Indoor Positioning and Indoor Navigation</source>
<year iso-8601-date="2021">2021</year>
<pub-id pub-id-type="doi">10.1109/IPIN51156.2021.9662569</pub-id>
<fpage>1</fpage>
<lpage>8</lpage>
</element-citation>
</ref>
<ref id="ref-vandewynckel2023">
<element-citation publication-type="paper-conference">
<person-group person-group-type="author">
<name><surname>Van de Wynckel</surname><given-names>Maxim</given-names></name>
<name><surname>Signer</surname><given-names>Beat</given-names></name>
</person-group>
<article-title>SemBeacon: A Semantic Proximity Beacon Solution for Discovering and Detecting the Position of Physical Things</article-title>
<source>Proceedings of IoT 2023, The 13th International Conference on the Internet of Things</source>
<year iso-8601-date="2023">2023</year>
<fpage>1</fpage>
<lpage>8</lpage>
</element-citation>
</ref>
<ref id="ref-vandewynckel2022">
<element-citation publication-type="paper-conference">
<person-group person-group-type="author">
<name><surname>Van de Wynckel</surname><given-names>Maxim</given-names></name>
<name><surname>Signer</surname><given-names>Beat</given-names></name>
</person-group>
<article-title>A Solid-based Architecture for Decentralised Interoperable Location Data</article-title>
<source>Proceedings of IPIN 2022, The 12th International Conference on Indoor Positioning and Indoor Navigation, CEUR Workshop Proceedings</source>
<year iso-8601-date="2022">2022</year>
<fpage>1</fpage>
<lpage>15</lpage>
</element-citation>
</ref>
</ref-list>
</back>
</article>
35 changes: 23 additions & 12 deletions docs/paper/paper.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
---
title: 'OpenHPS: A Modular Framework to Facilitate Development of Positioning Systems'
title: 'OpenHPS: A Modular Framework to Facilitate the Development and Sharing of Positioning Systems and Algorithms'
tags:
- TypeScript
- Hybrid positioning
authors:
- name: Maxim Van de Wynckel
- given-names: Maxim
family: Van de Wynckel
orcid: 0000-0003-0314-7107
affiliation: 1
- name: Beat Signer
Expand All @@ -17,11 +18,23 @@ date: 13 November 2023
bibliography: paper.bib
---

# Summary
Positioning systems are a collection of technologies and algorithms that can help to determine the location of people and objects. While outdoor positioning systems mainly use satellites such as GPS to perform the tracking, many different technologies exist that can offer better latency, accuracy or battery efficiency depending on the use case. These use cases can range from indoor positioning systems where there is no standardised technology to smaller scale positioning systems such as tracking the location of a pen on a piece of paper. In the research domain of positioning and tracking, these novel types of positioning systems are often implemented as single use protypes with no common data format, making it difficult to expand. OpenHPS was created as a framework to enable to creation of positioning systems for a wide range of use cases and to also allow a wide range of algorithms. The creation of a positioning system using our framework is graph based, allowing developers to share *nodes* that implement new algorithms.
## Abstract
Positioning systems are a collection of technologies and algorithms that can help to determine the location of people and objects. While outdoor positioning systems mainly use satellites such as GPS to perform the tracking, many different technologies exist that can offer better latency, accuracy or battery efficiency depending on the use case. These use cases can range from indoor positioning systems where there is no standardised technology to smaller scale positioning systems such as tracking the location of a pen on a piece of paper. In the research domain of positioning and tracking, these novel types of positioning systems are often implemented as single use protypes with no common data format, making it difficult to replicate or expand. OpenHPS was created as a framework to enable to creation of positioning systems for a wide range of use cases and to also allow a wide range of commonly used algorithms that can be extended when needed. The creation of a positioning system using our framework is graph based, allowing developers to share individual custom *nodes* that implement new algorithms or fuse sensor data from a variety of technologies.

## Keywords
Hybrid positioning systems, interoperable positioning systems, indoor positioning, stream processing

# Statement of Need

## Context
`OpenHPS` is an open source hybrid positioning system framework written in TypeScript. It can be run on the server using NodeJS, the browser or even hybrid mobile applications such as NativeScript, React-Native and CapacitorJS. The general design of a positioning system created using our framework consists of a graph with a set of nodes that process data.

All concepts, ranging from positions to sensor values can be expressed in various ways with varying units, allowing OpenHPS to be used for small scale use cases such as tracking a pen on a paper to larger use cases such as tracking airplanes across the globe.

## Related Work


# Framework
OpenHPS is a positioning system framework written in TypeScript. It can be run on the server using NodeJS, the browser or even hybrid mobile applications such as NativeScript, React-Native and CapacitorJS. The general design of a positioning system created using our framework consists of a graph with a set of nodes that process data.

## Data Frames and Objects
Our framework uses stream based processing of `DataFrame`s which contain all time-sensitive information. Inside these frames can be one or more `DataObject`s which indicate the spatial objects that are relevant for the information within the data frame.
Expand All @@ -38,14 +51,12 @@ OpenHPS is modular by design, mainly due to the ability to extend data frames an

Each node in a positioning model can be extended as well, allowing the creation of custom algorithms that can be added or removed from a positioning system with ease.

# Statement of Need

# Performance
Since our framework uses TypeScript, it uses JavaScript at runtime, which is single-threaded by default. To overcome the challenges associated with this when creating real time systems, our graphs or portions of the graph can be run with the help of web workers. All data transmitted through our graph is serialisable, which prevents the need for developers to handle this serialisation themselves.
## Performance
Since our framework uses TypeScript, it uses JavaScript at runtime, which is single-threaded by default. To overcome the challenges associated with this when creating real time stream processing systems, our graphs or portions of the graph can be run with the help of web workers. All data transmitted through our graph is serialisable, which prevents the need for developers to handle this serialisation or the communication between web workers themselves.

In addition to the ability to run graphs on multiple workers, our communication nodes such as MQTT, combined with the serialisability of data, allows developers to offload the processing of complicated tasks to other servers or dedicated processors. For more high-demanding algorithms such as computer vision and visual SLAM, modules such as @openhps/opencv and @openhps/openvslam create C++ bindings in NodeJS.
In addition to the ability to run graphs on multiple workers, our communication nodes such as MQTT, combined with the serialisability of data, allows developers to offload the processing of complicated tasks to other servers or dedicated processors. For more high-demanding algorithms such as computer vision and visual SLAM, modules such as [@openhps/opencv](https://github.com/OpenHPS/openhps-opencv) and [@openhps/openvslam](https://github.com/OpenHPS/openhps-openvslam) create C++ bindings in NodeJS.

# Publications
OpenHPS has been a building block for various research such as its use within indoor positioning systems, its contribution to the SemBeacon demonstrator application and its ability to serialise location data to RDF in a demonstrator application that aims to preserve privacy and transparency using Solid-pods. However, with the ability for OpenHPS to contain modular nodes, its use within the domain of positioning systems can allow for easier sharing of algorithms, findings and the rapid creation of prototypes and demonstrators.
# Examples of Rearch Work
OpenHPS has been a building block for various research such as its use within indoor positioning systems [@vandewynckel2021], its ability to serialise location data to RDF in a demonstrator application that aims to preserve privacy and transparency using Solid-pods [@vandewynckel2022] and its use within the SemBeacon demonstrator application [@vandewynckel2023] that is written in CapacitorJS and uses OpenHPS to deserialise positioning data and positioning systems. However, with the ability for OpenHPS to contain modular nodes, its use within the domain of positioning systems can allow for easier sharing of algorithms and findings, as well as the rapid creation of prototypes and demonstrators that make use of location data.

# References
Binary file added docs/paper/paper.pdf
Binary file not shown.
Loading

0 comments on commit 078fef9

Please sign in to comment.