GeneralIntroduction

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

THIS WEBPAGE IS DEPRECATED - please visit our new website

Back to main page.

An Introduction to the Ubitrack library

This page is some kind of minutes of the introduction, held on Thursday, June 28, 2007. There are additional slides (pdf) containing lots of images and examples.

Since the slides were created, two important things have changed:

  • The renderer works differently now, see doc/utql/ExampleRenderMarker.utql for an example.
  • To connect components, you have to write pattern-ref instead of graph-ref in UTQL.

After this, you'll

  • have a compiled Ubitrack on your harddrive
  • know how to write and run data flows in UTQL
  • be able to use it in your own programs

Ubitrack intends to solve tracking and calibration problems in various applications.

DP add here: What is Ubitrack!?

SRGs and Patterns

Spatial Relationships Graph

Spatial Relationships Graphs (SRGs) describe the tracking situation:
  • Nodes represents coordinate systems (in common six degrees of freedom, 6DOF)
  • Edges represent known transformations (usually directed)

Patterns

  • Describe sturctural properties of tracking algorithms
  • Input edges are necessary preconditions
  • Output edges describe the result of the algorithm
  • The patterns desscribe how new relationships can be infered

Patterns and Data Flow Networks

  • Data Flow Networks (DFN) are formed by connected components to compute new relationships at runtime
  • DFNs only need to change when the topology of the underlying SRG changes
  • DFns are constructed by applying patterns

Push and Pull Communication

  • Push is asynchronous (in common tracking hardware)
  • Pull is synchronous (request by timestamp, accuracy about 100ms to 1s)
  • Pull-Pull: Use in Concatenation, where n incoming values need fusion
  • Push-Pull: Requests pull-value on certain push
  • Push-Push: in general not possible - special case if incoming measurements are synchronous (e.g. one cam delivers n poses to the same concatenation (i.e. DTrack))
  • Push-to-Pull-Conversion: requires extra component, e.g.: Buffering, Averaging, Interpolation, Extraploation, Kalman Filter

Library Overview

Layered Approach:
Middleware Layer Distribution Tracker Registration  
Data Flow Layer Data Flow Framework Data Flow Components API
Algorithmic Layer: Data Structures Tracking Algs SRG Algs

Writing and running data flow in UTQL

UTQL specifies:
  • SRGs
  • SR Patterns
  • Application queries

  • Patterns are patterns - there can be multiple instances of patterns
  • Edges are referenced by Pattern-ID and name of edge
  • Names of nodes and edges are used by pattern to look up attributes

Practice 1

Get the snowman running (call from lib folder): > utConsole snowman.utql

Practice 2

see slides

Practice 3

see slides

The API in C++ and Java

  • Find docs here: http://campar.in.tum.de/personal/fardemo/ubidoc
  • What is the utConsole doing? Do it on your own:
    • C++
      • xxx
      • yyy
    • Java
      • import ubitrack.*;
      • System.loadLibrary("ubitrack_java");
      • SimpleFacade sf = new SimpleFacade();
      • sf.loadDataFlow("xxx");
      • start, stop
  • Receive data in your app
    • Build a pattern ApplicationPushSink with class ApplicationPushSinkPose
    • C++
      • xxx
      • yyy
    • Java
      • class MyReceiver extends SimplePoseReceiver{...}
      • sf.setPoseCallback("idName", new MyReceiver());

  • Notes
    • SimpleFacade methods return false on errors
    • Logging
      • C++
        • #include
        • Ubitrack::Util::initLogging();
      • Java
        • ubitrack.initLogging();
    • C++ also supports an AdvancedFacade

Outlook (Ubitrack server)

  • What components are already implemented: see List (TODO: Link)
  • UbitrackServer?'s goal
    • Automatic dataflow generation
    • Share tracking among different clients
    • Queries for (unknown) objects
    • automatic reconfiguration



Edit | Attach | Refresh | Diffs | More | Revision r1.18 - 22 Dec 2008 - 13:48 - PeterKeitler

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif