From c90a23cc928b7434a1e3aceb36b783761bfc8d7e Mon Sep 17 00:00:00 2001 From: geekmaster Date: Fri, 17 Mar 2017 13:13:12 -0500 Subject: Update README.md Add Intel Integrated Graphics section. --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 6e097f8..45ac38f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # libsurvive -**WARNING PROJECT NOT YET IN EXPERIMENTAL PHASE** +**WARNING PROJECT IN EXPERIMENTAL PHASE** Discord: https://discordapp.com/invite/7QbCAGS @@ -40,8 +40,7 @@ I say "high-performance" really this project is based tightly off of OSVR-Vive-L 2. Put it under an open-source instead of a force-source license. (GPL to MIT/X11) 3. Write it in C. 4. Avoid extra layers where convenient. -5. (long shot) Make the vive vivable for use with Intel Integrated Graphics systems. - +5. (long shot) Make the vive vivable for use with Intel Integrated Graphics systems. [It works with HD4000 using DisplayPort. See "Intel Integrated Graphics" section below.] Will ~~I~~ we succeed? Probably not. @@ -50,7 +49,7 @@ Definitely going to try! ## External dependencies -* libUSB +* libUSB (hidapi ???) * pthread * libX11 (where applicable) * zlib (may use puff.c if needed) @@ -71,7 +70,10 @@ It is written in some fairly stout "layers" which are basically just function ca I may or may not read data from the Vive regarding configuration. If I do, it would be added to the survive_usb.c +## Intel Integrated Graphics +The limiting factor for Vive viability on a given computer is the maximum available pixel clock frequency, and frequency limitations of the HDMI port, and HDMI and DisplayPort video cables. DisplayPort can support higher frequencies than HDMI, on Ivy Bridge HD4000 graphics. In fact, the vive works with HD4000 graphics using DisplayPort, with native EDID resolution (2160x1200@90Hz). +To support the Vive on HDMI, you either need a newer version of HDMI, or you need to define a custom resolution that respects pixel clock and video port limits, and is also accepted and displayed by the Vive. So far, we have not had success using custom resolutions on linux or on Windows. Windows imposes additional limitations in the form of restriction of WHQL certified drivers forbidden from using custom display resolutions (only allowing those defined by EDID in the monitor). Intel has released uncertified beta drivers for Haswell and newer processors, which should be able to support custom resolutions for the Vive (untested at this time). - +but HDMI will require non-certified drivers to allow custom resolutions (due to WHQL restrictions). Haswell (Iris) graphics and later can use the new intel beta drivers to allow custom resolutions.] -- cgit v1.2.3 From acd7b7c0ecc7482ca60cdefeb277543212a293f5 Mon Sep 17 00:00:00 2001 From: geekmaster Date: Fri, 17 Mar 2017 18:34:30 -0500 Subject: Update README.md Fix typos. --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 45ac38f..fcde197 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ I say "high-performance" really this project is based tightly off of OSVR-Vive-L 2. Put it under an open-source instead of a force-source license. (GPL to MIT/X11) 3. Write it in C. 4. Avoid extra layers where convenient. -5. (long shot) Make the vive vivable for use with Intel Integrated Graphics systems. [It works with HD4000 using DisplayPort. See "Intel Integrated Graphics" section below.] +5. (long shot) Make the vive viable for use with Intel Integrated Graphics systems. [It works with HD4000 using DisplayPort. See "Intel Integrated Graphics" section below.] Will ~~I~~ we succeed? Probably not. @@ -72,8 +72,6 @@ I may or may not read data from the Vive regarding configuration. If I do, it w ## Intel Integrated Graphics -The limiting factor for Vive viability on a given computer is the maximum available pixel clock frequency, and frequency limitations of the HDMI port, and HDMI and DisplayPort video cables. DisplayPort can support higher frequencies than HDMI, on Ivy Bridge HD4000 graphics. In fact, the vive works with HD4000 graphics using DisplayPort, with native EDID resolution (2160x1200@90Hz). +The limiting factor for Vive viability on a given computer is the maximum available pixel clock frequency, and frequency limitations of the HDMI port, and HDMI and DisplayPort video cables. DisplayPort can support higher frequencies than HDMI, on Ivy Bridge HD4000 graphics. In fact, the Vive works with HD4000 graphics using DisplayPort, with native EDID resolution (2160x1200@90Hz). To support the Vive on HDMI, you either need a newer version of HDMI, or you need to define a custom resolution that respects pixel clock and video port limits, and is also accepted and displayed by the Vive. So far, we have not had success using custom resolutions on linux or on Windows. Windows imposes additional limitations in the form of restriction of WHQL certified drivers forbidden from using custom display resolutions (only allowing those defined by EDID in the monitor). Intel has released uncertified beta drivers for Haswell and newer processors, which should be able to support custom resolutions for the Vive (untested at this time). - -but HDMI will require non-certified drivers to allow custom resolutions (due to WHQL restrictions). Haswell (Iris) graphics and later can use the new intel beta drivers to allow custom resolutions.] -- cgit v1.2.3 From aaaa45dcd79e1d9ebe04ec428422fa29d1961488 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sun, 19 Mar 2017 15:34:24 -0400 Subject: Closes #42 with logo. --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index fcde197..7b89c2d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # libsurvive -**WARNING PROJECT IN EXPERIMENTAL PHASE** +![Logo](https://cloud.githubusercontent.com/assets/2748168/24084003/9095c98a-0cb8-11e7-88a3-575f9f4c7bb4.png) -Discord: https://discordapp.com/invite/7QbCAGS +An Open-Source tool for working with lighthouse-based trakcing data, including support for the HTC Vive, which is still in the experimental phase. + +Most of the development is discussed on Discord. Join the chat and discussion here: https://discordapp.com/invite/7QbCAGS ## Livestream collection | Note | Youtube URL | Run time | -- cgit v1.2.3 From a229dec7ee46873e0b590fdbd34feb29112e4f0d Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sun, 19 Mar 2017 16:55:54 -0400 Subject: Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 7b89c2d..db1d6ce 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,9 @@ I may or may not read data from the Vive regarding configuration. If I do, it w The limiting factor for Vive viability on a given computer is the maximum available pixel clock frequency, and frequency limitations of the HDMI port, and HDMI and DisplayPort video cables. DisplayPort can support higher frequencies than HDMI, on Ivy Bridge HD4000 graphics. In fact, the Vive works with HD4000 graphics using DisplayPort, with native EDID resolution (2160x1200@90Hz). To support the Vive on HDMI, you either need a newer version of HDMI, or you need to define a custom resolution that respects pixel clock and video port limits, and is also accepted and displayed by the Vive. So far, we have not had success using custom resolutions on linux or on Windows. Windows imposes additional limitations in the form of restriction of WHQL certified drivers forbidden from using custom display resolutions (only allowing those defined by EDID in the monitor). Intel has released uncertified beta drivers for Haswell and newer processors, which should be able to support custom resolutions for the Vive (untested at this time). + + + +## Addendum and notes + +Thanks to Mr. Fault for our logo! -- cgit v1.2.3 From d831f9ab967e4cf9f425e68799a0491f711a8a54 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Tue, 4 Apr 2017 23:59:02 -0400 Subject: Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index db1d6ce..7ea932e 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,24 @@ It is written in some fairly stout "layers" which are basically just function ca | survive_data.c | Raw HID messages are processed into logical "light" "analog" and "imu" messages. | Mostly done, Missing light data from controllers, and lighthouse data. | | survive_process.c | Process the high-level data into solutions for | Not yet started. Will be done by ultramn | + + + + + +
DescriptionDiagram
+LibSurvive use a fairly straightforward architecture. + +There are device drivers, such as survive_vive.c which connect to physical devices, via libUSB, hidapi or another method and collect raw IMU and lightcap data. Lightcap data is specically a sensor ID, light pulse length (in ticks) and the time of the light pulse (in ticks). The driver also must provide locations of the sensors to populate the SurviveObject structures of whatever sensors that driver is responsible for. + +Once this data is collected, the light pulses are disambiguated (see survive_data.c) into OOTX sync pulses (id -1, -2 depending on lighthouse) as well as sweep pulses which provide the time of a sweep pulse passing the sensor. This is passed off to "lightproc." The default behavior for lightproc can be found in survive.c. The user may override this, however, if they have interest in the raw pulse information for whatever reason. The default behavior for lightproc determines the time delta between the sync pulse and the sweep pulse time and derives angle. The derivation for the angle is simply calculated by the time difference between the sync pulse and the sweep pulse. It then calls "angleproc" (not implemented yet: Using OOTX data from lighthouses to correct and tweak angles) + +Angleproc may also be overridden by the user for similar purposes to for "angleproc" which passes its information off to a calibrator (if running) as well as to whatever posers are enabled. The posers will take this data and determine position from it. + +
+ + + I may or may not read data from the Vive regarding configuration. If I do, it would be added to the survive_usb.c ## Intel Integrated Graphics -- cgit v1.2.3 From 13e06951c7a9aa6ad10002ce4f80bd810dd562e3 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Wed, 5 Apr 2017 00:11:28 -0400 Subject: Update README.md --- README.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 7ea932e..966370e 100644 --- a/README.md +++ b/README.md @@ -60,20 +60,16 @@ If I ever get to video output... OpenGL. ## Architecture -There is an internal representation and an external representation. These lines may get blurred. Internal representation lives in .h files in the ```src/``` folder. External lives in ```include/``` folder. - -It is written in some fairly stout "layers" which are basically just function calls: - -| Layer | Description | Status | -| ------- | ------------- | -------- | -| survive_usb.c | Data is taken in at "survive_usb.c" from libusb. | Done | -| survive_data.c | Raw HID messages are processed into logical "light" "analog" and "imu" messages. | Mostly done, Missing light data from controllers, and lighthouse data. | -| survive_process.c | Process the high-level data into solutions for | Not yet started. Will be done by ultramn |
DescriptionDiagram
-LibSurvive use a fairly straightforward architecture. + +### Layout + +In the src/ folder you'll find most of the internal code that is part of libsurvive. The redist/ folder contains code that libsurvive uses that was copied from other projects. Libsurvive links to other libraries, but very few. You'll find that most of the functionality lies within libsurvive or in the redist folder. For the user-facing headers you can find them in the include/ folder. + +### Logical Data Flow There are device drivers, such as survive_vive.c which connect to physical devices, via libUSB, hidapi or another method and collect raw IMU and lightcap data. Lightcap data is specically a sensor ID, light pulse length (in ticks) and the time of the light pulse (in ticks). The driver also must provide locations of the sensors to populate the SurviveObject structures of whatever sensors that driver is responsible for. @@ -88,8 +84,6 @@ Angleproc may also be overridden by the user for similar purposes to for "anglep -I may or may not read data from the Vive regarding configuration. If I do, it would be added to the survive_usb.c - ## Intel Integrated Graphics The limiting factor for Vive viability on a given computer is the maximum available pixel clock frequency, and frequency limitations of the HDMI port, and HDMI and DisplayPort video cables. DisplayPort can support higher frequencies than HDMI, on Ivy Bridge HD4000 graphics. In fact, the Vive works with HD4000 graphics using DisplayPort, with native EDID resolution (2160x1200@90Hz). -- cgit v1.2.3 From 58af165b297f1d5946b5b580d1ff5d65f26636ee Mon Sep 17 00:00:00 2001 From: CNLohr Date: Wed, 5 Apr 2017 00:20:35 -0400 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 966370e..db659bd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Logo](https://cloud.githubusercontent.com/assets/2748168/24084003/9095c98a-0cb8-11e7-88a3-575f9f4c7bb4.png) -An Open-Source tool for working with lighthouse-based trakcing data, including support for the HTC Vive, which is still in the experimental phase. +An Open-Source tool for working with lighthouse-based tracking data, including support for the HTC Vive, which is still in the experimental phase. Most of the development is discussed on Discord. Join the chat and discussion here: https://discordapp.com/invite/7QbCAGS -- cgit v1.2.3 From 299d8af12c51330c54ea20b14dc25732e897b01f Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 6 Apr 2017 22:25:14 -0400 Subject: Update README.md --- README.md | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index db659bd..4395d0e 100644 --- a/README.md +++ b/README.md @@ -44,23 +44,18 @@ I say "high-performance" really this project is based tightly off of OSVR-Vive-L 4. Avoid extra layers where convenient. 5. (long shot) Make the vive viable for use with Intel Integrated Graphics systems. [It works with HD4000 using DisplayPort. See "Intel Integrated Graphics" section below.] -Will ~~I~~ we succeed? Probably not. - -Definitely going to try! +Will ~~I~~ we succeed? Probably not. ~~Definitely going to try!~~ Though it's looking like we might. ## External dependencies -* libUSB (hidapi ???) +* libUSB (Linux) or hidapi (Win, OSX; included in redist) * pthread -* libX11 (where applicable) -* zlib (may use puff.c if needed) - -If I ever get to video output... OpenGL. +* libX11 (Linux) or Native (win32) or OpenGL (OSX) +* zlib (Linux) or puff.c (win32, included in redist) ## Architecture -
DescriptionDiagram
@@ -82,7 +77,31 @@ Angleproc may also be overridden by the user for similar purposes to for "anglep
- +## Lists of components + +Component Type | Component | Description | Authors +--- | --- | --- | --- +Poser | src/poser_charlesslow.c | A very slow, but exhaustive poser system. Calibration only. | @cnlohr +Poser | src/poser_daveortho.c | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | @ultramn +Poser | src/poser_dummy.c | Template for posers | @cnlohr +Poser | src/poser_octavioradii.c | ... | @mwturvey and Octavio +Poser | src/poser_turveytori.c | ... | @mwturvey +Disambiguator | src/survive_data.c (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | @cnlohr +Disambiguator | src/survive_data.c (current disambiguator) | More complicated but much more robust disambiguator | @mwturvey +Dismabiguator | superceded disambiguator | A more sophisticated disambiguator, development abandoned. Removed from tree. | @jpicht +Driver | src/survive_vive.c | Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker | @cnlohr +OOTX Decoder | src/ootx_decoder.c | The system that takes the pulse-codes from the sync pulses from the lighthouses and get [OOTX Data](https://github.com/nairol/LighthouseRedox/blob/master/docs/Light%20Emissions.md) | @axlecrusher + +## Component Pluggability Matrix + +Component Type | Pluggability method +--- | --- +Driver | Dynamically loadable runtime, can co-exist with other drivers. +Poser | Selectable by configuration at runtime +Disambiguator | Selectable by #define +OOTX Decoder | Not Pluggable + + ## Intel Integrated Graphics @@ -95,3 +114,4 @@ To support the Vive on HDMI, you either need a newer version of HDMI, or you nee ## Addendum and notes Thanks to Mr. Fault for our logo! +Special thanks to @nairol for an extreme amount of detail in reverse engineering the existing HTC Vive system on his https://github.com/nairol/LighthouseRedox project. -- cgit v1.2.3 From 51baee4bc2c2b3990b878f75baa0abc83027c36c Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 6 Apr 2017 22:34:59 -0400 Subject: Update README.md --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 4395d0e..a6d3b8a 100644 --- a/README.md +++ b/README.md @@ -81,16 +81,16 @@ Angleproc may also be overridden by the user for similar purposes to for "anglep Component Type | Component | Description | Authors --- | --- | --- | --- -Poser | src/poser_charlesslow.c | A very slow, but exhaustive poser system. Calibration only. | @cnlohr -Poser | src/poser_daveortho.c | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | @ultramn -Poser | src/poser_dummy.c | Template for posers | @cnlohr -Poser | src/poser_octavioradii.c | ... | @mwturvey and Octavio -Poser | src/poser_turveytori.c | ... | @mwturvey -Disambiguator | src/survive_data.c (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | @cnlohr -Disambiguator | src/survive_data.c (current disambiguator) | More complicated but much more robust disambiguator | @mwturvey -Dismabiguator | superceded disambiguator | A more sophisticated disambiguator, development abandoned. Removed from tree. | @jpicht -Driver | src/survive_vive.c | Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker | @cnlohr -OOTX Decoder | src/ootx_decoder.c | The system that takes the pulse-codes from the sync pulses from the lighthouses and get [OOTX Data](https://github.com/nairol/LighthouseRedox/blob/master/docs/Light%20Emissions.md) | @axlecrusher +Poser | [poser_charlesslow.c](src/poser_charlesslow.c) | A very slow, but exhaustive poser system. Calibration only. | [@cnlohr](https://github.com/cnlohr) and [@mwturvey](https://github.com/mwturvey) +Poser | [poser_daveortho.c](src/poser_daveortho.c) | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | [@ultramn](https://github.com/ultramn) +Poser | [poser_dummy.c](src/poser_dummy.c) | Template for posers | [@cnlohr](https://github.com/cnlohr) +Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | ... | [@mwturvey](https://github.com/mwturvey) and Octavio +Poser | [poser_turveytori.c](src/poser_turveytori.c) | ... | [@mwturvey](https://github.com/mwturvey) +Disambiguator | [survive_data.c](src/survive_data.c) (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | [@cnlohr](https://github.com/cnlohr) +Disambiguator | [survive_data.c](src/survive_data.c) (current disambiguator) | More complicated but much more robust disambiguator | [@mwturvey](https://github.com/mwturvey) +Dismabiguator | superceded disambiguator | A more sophisticated disambiguator, development abandoned. Removed from tree. | [@jpicht](https://github.com/jpicht) +Driver | [survive_vive.c](src/survive_vive.c) | Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker | [@cnlohr](https://github.com/cnlohr) +OOTX Decoder | [ootx_decoder.c](src/ootx_decoder.c) | The system that takes the pulse-codes from the sync pulses from the lighthouses and get [OOTX Data](https://github.com/nairol/LighthouseRedox/blob/master/docs/Light%20Emissions.md) | [@axlecrusher](https://github.com/axlecrusher) ## Component Pluggability Matrix -- cgit v1.2.3 From 4c3c9588fc198759e368d93b42a1b150901e853c Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 6 Apr 2017 22:44:00 -0400 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index a6d3b8a..8898395 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ Component Type | Component | Description | Authors Poser | [poser_charlesslow.c](src/poser_charlesslow.c) | A very slow, but exhaustive poser system. Calibration only. | [@cnlohr](https://github.com/cnlohr) and [@mwturvey](https://github.com/mwturvey) Poser | [poser_daveortho.c](src/poser_daveortho.c) | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | [@ultramn](https://github.com/ultramn) Poser | [poser_dummy.c](src/poser_dummy.c) | Template for posers | [@cnlohr](https://github.com/cnlohr) -Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | ... | [@mwturvey](https://github.com/mwturvey) and Octavio +Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | ... | [@mwturvey](https://github.com/mwturvey) and [@octavio2895](https://github.com/octavio2895) Poser | [poser_turveytori.c](src/poser_turveytori.c) | ... | [@mwturvey](https://github.com/mwturvey) Disambiguator | [survive_data.c](src/survive_data.c) (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | [@cnlohr](https://github.com/cnlohr) Disambiguator | [survive_data.c](src/survive_data.c) (current disambiguator) | More complicated but much more robust disambiguator | [@mwturvey](https://github.com/mwturvey) -- cgit v1.2.3 From b72ee8cd0acfb78ca2a2a24c40504d764c137602 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Thu, 6 Apr 2017 22:47:19 -0400 Subject: Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 8898395..e3b589e 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ Angleproc may also be overridden by the user for similar purposes to for "anglep Component Type | Component | Description | Authors --- | --- | --- | --- -Poser | [poser_charlesslow.c](src/poser_charlesslow.c) | A very slow, but exhaustive poser system. Calibration only. | [@cnlohr](https://github.com/cnlohr) and [@mwturvey](https://github.com/mwturvey) +Poser | [poser_charlesslow.c](src/poser_charlesslow.c) | A very slow, but exhaustive poser system. Calibration only. | [@cnlohr](https://github.com/cnlohr) Poser | [poser_daveortho.c](src/poser_daveortho.c) | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | [@ultramn](https://github.com/ultramn) Poser | [poser_dummy.c](src/poser_dummy.c) | Template for posers | [@cnlohr](https://github.com/cnlohr) Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | ... | [@mwturvey](https://github.com/mwturvey) and [@octavio2895](https://github.com/octavio2895) @@ -89,7 +89,7 @@ Poser | [poser_turveytori.c](src/poser_turveytori.c) | ... | [@mwturvey](https:/ Disambiguator | [survive_data.c](src/survive_data.c) (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | [@cnlohr](https://github.com/cnlohr) Disambiguator | [survive_data.c](src/survive_data.c) (current disambiguator) | More complicated but much more robust disambiguator | [@mwturvey](https://github.com/mwturvey) Dismabiguator | superceded disambiguator | A more sophisticated disambiguator, development abandoned. Removed from tree. | [@jpicht](https://github.com/jpicht) -Driver | [survive_vive.c](src/survive_vive.c) | Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker | [@cnlohr](https://github.com/cnlohr) +Driver | [survive_vive.c](src/survive_vive.c) | Driver for HTC Vive HMD, Watchmen (wired+wireless) and Tracker | [@cnlohr](https://github.com/cnlohr) and [@mwturvey](https://github.com/mwturvey) OOTX Decoder | [ootx_decoder.c](src/ootx_decoder.c) | The system that takes the pulse-codes from the sync pulses from the lighthouses and get [OOTX Data](https://github.com/nairol/LighthouseRedox/blob/master/docs/Light%20Emissions.md) | [@axlecrusher](https://github.com/axlecrusher) ## Component Pluggability Matrix -- cgit v1.2.3 From 588570a36be0cb0278edcfcdb820501d33770eef Mon Sep 17 00:00:00 2001 From: mwturvey Date: Fri, 7 Apr 2017 11:24:07 -0700 Subject: readme updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index e3b589e..3b26c5f 100644 --- a/README.md +++ b/README.md @@ -84,8 +84,8 @@ Component Type | Component | Description | Authors Poser | [poser_charlesslow.c](src/poser_charlesslow.c) | A very slow, but exhaustive poser system. Calibration only. | [@cnlohr](https://github.com/cnlohr) Poser | [poser_daveortho.c](src/poser_daveortho.c) | A very fast system using orthograpic view and affine transformations. Calibration only (for now) | [@ultramn](https://github.com/ultramn) Poser | [poser_dummy.c](src/poser_dummy.c) | Template for posers | [@cnlohr](https://github.com/cnlohr) -Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | ... | [@mwturvey](https://github.com/mwturvey) and [@octavio2895](https://github.com/octavio2895) -Poser | [poser_turveytori.c](src/poser_turveytori.c) | ... | [@mwturvey](https://github.com/mwturvey) +Poser | [poser_octavioradii.c](src/poser_octavioradii.c) | A potentially very fast poser that works by finding the best fit of the distances from the lighthouse to each sensor that matches the known distances between sensors, given the known angles of a lighthouse sweep. Incomplete- distances appear to be found correctly, but more work needed to turn this into a pose. | [@mwturvey](https://github.com/mwturvey) and [@octavio2895](https://github.com/octavio2895) +Poser | [poser_turveytori.c](src/poser_turveytori.c) | A moderately fast, fairly high precision poser that works by determine the angle at the lighthouse between many sets of two sensors. Using the inscirbed angle theorom, each set defines a torus of possible locations of the lighthouse. Multiple sets define multiple tori, and this poser finds most likely location of the lighthouse using least-squares distance. Best suited for calibration, but is can be used for real-time tracking on a powerful system. | [@mwturvey](https://github.com/mwturvey) Disambiguator | [survive_data.c](src/survive_data.c) (currently #ifdefed out) | The old disambiguator - very fast, but slightly buggy. | [@cnlohr](https://github.com/cnlohr) Disambiguator | [survive_data.c](src/survive_data.c) (current disambiguator) | More complicated but much more robust disambiguator | [@mwturvey](https://github.com/mwturvey) Dismabiguator | superceded disambiguator | A more sophisticated disambiguator, development abandoned. Removed from tree. | [@jpicht](https://github.com/jpicht) -- cgit v1.2.3 From 2f7ebf7af36e324d8f1d8036800d34eeb2d9f46f Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sat, 29 Apr 2017 18:03:50 -0400 Subject: Add a nomenclature section to the readme. --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 3b26c5f..dc568f6 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,22 @@ Please see the issues for what help needs to be done now! HackADay article and video with Dr. Yates on how they made the Vive a thing. http://hackaday.com/2016/12/21/alan-yates-why-valves-lighthouse-cant-work/ + +## Nomenclature + +WRT = With Respect To +PoV / POV = Point of View (typically WRT to a LH, sometimes (though rarely) a sensor) +LH = Lighthouse = Base Station = A device that produces a 1.8 MHz modulated sync pulse in IR and then sweeps the scene with laser planes. +Sync Pulse = A pulse of modulated IR data sent from a ligthhouse, typically by the floodlight aspect of a lighthouse. +Sweep Pulse = The evenlope created by a laser sweeping over a light sensor. +OOTX = Omnidirectional Optical Transmitter = Data encoded in the sync pulses of the LHs. +HMD = Headset = Main sensor receiver with a visual display for a human. +WM = Watchman = Controller = The HTC Vive controller. +TR = Tracker = Official HTC Tracker. +LightcapElement = A single pulse of light, including a timestamp, source sensor and length of pulse. +Disambiguator = System that accepts lightcap elements and pulls out OOTX data and relative sweep times of sweep pulses. +Poser = Device to convert series of angles from a LH's PoV + ## Getting things working There are two things you should consider doing to your system before running libsurvive. -- cgit v1.2.3 From 24962ebf94c6134081c41f95acc1461d8a5bf242 Mon Sep 17 00:00:00 2001 From: CNLohr Date: Sat, 29 Apr 2017 18:06:20 -0400 Subject: List out Nomenclature. --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index dc568f6..130fa1e 100644 --- a/README.md +++ b/README.md @@ -29,18 +29,18 @@ HackADay article and video with Dr. Yates on how they made the Vive a thing. htt ## Nomenclature -WRT = With Respect To -PoV / POV = Point of View (typically WRT to a LH, sometimes (though rarely) a sensor) -LH = Lighthouse = Base Station = A device that produces a 1.8 MHz modulated sync pulse in IR and then sweeps the scene with laser planes. -Sync Pulse = A pulse of modulated IR data sent from a ligthhouse, typically by the floodlight aspect of a lighthouse. -Sweep Pulse = The evenlope created by a laser sweeping over a light sensor. -OOTX = Omnidirectional Optical Transmitter = Data encoded in the sync pulses of the LHs. -HMD = Headset = Main sensor receiver with a visual display for a human. -WM = Watchman = Controller = The HTC Vive controller. -TR = Tracker = Official HTC Tracker. -LightcapElement = A single pulse of light, including a timestamp, source sensor and length of pulse. -Disambiguator = System that accepts lightcap elements and pulls out OOTX data and relative sweep times of sweep pulses. -Poser = Device to convert series of angles from a LH's PoV +* WRT = With Respect To +* PoV / POV = Point of View (typically WRT to a LH, sometimes (though rarely) a sensor) +* LH = Lighthouse = Base Station = A device that produces a 1.8 MHz modulated sync pulse in IR and then sweeps the scene with laser planes. +* Sync Pulse = A pulse of modulated IR data sent from a ligthhouse, typically by the floodlight aspect of a lighthouse. +* Sweep Pulse = The evenlope created by a laser sweeping over a light sensor. +* OOTX = Omnidirectional Optical Transmitter = Data encoded in the sync pulses of the LHs. +* HMD = Headset = Main sensor receiver with a visual display for a human. +* WM = Watchman = Controller = The HTC Vive controller. +* TR = Tracker = Official HTC Tracker. +* LightcapElement = A single pulse of light, including a timestamp, source sensor and length of pulse. +* Disambiguator = System that accepts lightcap elements and pulls out OOTX data and relative sweep times of sweep pulses. +* Poser = Device to convert series of angles from a LH's PoV ## Getting things working -- cgit v1.2.3 From 63cb143f11ae493e36a1e73b672da13cc744532e Mon Sep 17 00:00:00 2001 From: CNLohr Date: Fri, 12 May 2017 10:22:42 -0400 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 130fa1e..001881c 100644 --- a/README.md +++ b/README.md @@ -129,5 +129,5 @@ To support the Vive on HDMI, you either need a newer version of HDMI, or you nee ## Addendum and notes -Thanks to Mr. Fault for our logo! +Thanks to Mr. Faul for our logo! Special thanks to @nairol for an extreme amount of detail in reverse engineering the existing HTC Vive system on his https://github.com/nairol/LighthouseRedox project. -- cgit v1.2.3 From 0e62c9035f52cbc0c0007aa8d29734d855d0bfa3 Mon Sep 17 00:00:00 2001 From: Stubenhocker1399 Date: Mon, 15 May 2017 00:40:07 +0200 Subject: Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 001881c..5b25bb6 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ Most of the development is discussed on Discord. Join the chat and discussion h | Fifth livestream | https://www.youtube.com/watch?v=hHt3twW5_fI | 3:13:38 | | Sixth livestream | https://www.youtube.com/watch?v=JsfkNRFkFM4 | 3:44:49 | | Seventh livestream | https://www.youtube.com/watch?v=EKSHvO3QSWY | 1:17:21 | +| Eighth livestream | https://www.youtube.com/watch?v=nSbEltdH9vM | 6:06:36 | +| Ninth livestream | https://www.youtube.com/watch?v=60sGTd8T-KY | 3:28:44 | +| Ninth B livestream | https://www.youtube.com/watch?v=IIYj1Ig_gz8 | 2:25:33 | +| Tenth livestream | https://www.youtube.com/watch?v=boXRdXca6Qc | ?:??:?? | Notes from second livestream trying to reverse engineer the watchman protocol: https://gist.github.com/cnlohr/581c433f36f4249f8bbc9c2b6450ef0e -- cgit v1.2.3