Coder Social home page Coder Social logo

wherepy's People

Contributors

dzhoshkun avatar

Stargazers

 avatar

Watchers

 avatar

wherepy's Issues

Support for dry-running

For development it'd be convenient to have a --dry-run (-d) option that will display dummy data.

Support for NDI trackers

  • NdiTracker or wherepy.track.ndi.Tracker class, sub-class of Tracker
  • add ndicapi dependency (at least document it)

Home and default sessions-root folders

On first launch WherePy should:

  • create a wherepy.home* = '$HOME/.wherepy/' folder
  • create a wherepy.sessions_default() = os.path.join(wherepy.home(), 'sessions') folder

CLI tracking quality indicator

Something along these lines:

Signal: |>>>>>>>>  |    85 %
Error:  |<<        | 1.35 mm

Edge cases:

  • infinite tracking error
Signal: |        |    0 %
Error:  |<<<<<<<<|  infinity
print(u"\u221E")
  • no device connected
Signal: |NO CONNECTION|   0 %
Error:  |NO CONNECTION|

Info section of live capturing is truncated

The info message is sometimes truncated:

 (py2)  ~/tmp/  wherepy-collector-cli -p 100 -o test
|  Device  |       Signal      |   Error   |                Info                |
---------------------------------------------------------------------------------
  OFFLINE    [          ]  0 %       NA       Could not connect (Could not detec 

Fixed floating-point precision in session logs

To fix an ugly look like this:

1:
  1:
    coordinates: [91.4, 84.2, -269.16]
    error: 0.058800000000000005
    quality: 0.9803999999999999
    quaternion: [0.2569, -0.8323, -0.46440000000000003, -0.15940000000000001]
    timestamp: 1519136567.998299

Pip installable hierarchy

  1. document installation via GitHub repo
  2. tests (?) => #14
  3. setup.py
    1. dependencies: pyndicapi
  4. setup.cfg (only Python 2 ) => using python_requires instead
  5. wherepy-collector-gui [--session-folder /path/to/session/folder] command
  6. wherepy-collector-cli [--session-folder /path/to/session/folder] command (?)
  7. create a wherepy.home*( = '$HOME/.wherepy/' folder #10
  8. create a wherepy.sessions_default() = os.path.join(wherepy.home(), 'sessions') folder #10
  9. default session folder: os.path.join(wherepy.sessions_default, '2018-02-17-09-17-14-serial-no') #11
  10. wherepy.io package #2
  11. wherepy.trackpackage #3
  12. wherepy.gui package #1
  13. wherepy.app package with Collector class
    1. Collector(graphical=True) (?)

Support for saving tracking data

  • PyYAML dependency
    • README
    • setup.py
  • Each launch should create a session file 000000-2018-02-17-08-49-13.yml within root sessions folder => will be addressed part of the application
  • SessionLog class:
    • SessionLog(filepath):
    • append(tool_pose):
      1. tool_pose => YAML representation
      2. save the pose:
wherepy:
  version: git-described
0:
  port1:
    quaternion: "q0 q1 q2 q3"
    coordinates: "x y z"
    error: e
    quality: qu
    timestamp: t0
1:
  port1:
    quaternion: "q0 q1 q2 q3"
    coordinates: "x y z"
    error: e
    quality: qu
    timestamp: t1
[...]
N:
  port1:
    quaternion: "q0 q1 q2 q3"
    coordinates: "x y z"
    error: e
    quality: qu
    timestamp: tN

Multi-line CLI indicator

After #24 maybe the following format would play more nicely on a wider range of computers (due to terminal line width):

|   Device   |       Signal      |   Error   |       Information        |
-------------------------------------------------------------------------
      [✓]      [====>     ] 54 %    1.54 mm       info message here.     

Tracker and ToolPose classes

The following higher-level classes for representing a tracker connection and tool poses should be implemented:

  • abstract Tracker class:
    • connect() raising IOError (auto-connect() on __init__)
    • disconnect() raising IOError
    • connected()
    • tool_pose = capture(tool_id) raising
      • IOError if not connected()
      • ValueError if tool_id invalid
  • ToolPose class:
    • id() => not None
    • quaternion() => of len() 4
    • coordinates() => of len() 3
    • quality, error = quality() => between 0.00 - 1.00 (100%), error is what is returned by tracking system
    • timestamp() => python -c "import time; print('{:.10f}'.format(time.time()))"
      • default is now()

This is related to #2

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.