Commit graph

3378 commits

Author SHA1 Message Date
Mateo de Mayo 70576c2f02 t/slam: Implement basic prediction from last tracked poses 2021-12-21 11:43:17 +00:00
Mateo de Mayo 090e465dda external: Add semver to slam_tracker (1.0.0) and pose timestamps 2021-12-21 11:43:17 +00:00
Mateo de Mayo 88a3848b5a d/wmr: Map wmr_source data to monotonic clock 2021-12-21 11:43:17 +00:00
Mateo de Mayo 74e149159b t/slam: Add SLAM_SUBMIT_FROM_START envvar
Useful for setups that need some tuning to their sensors before sending
data to a SLAM system.
Removes the submit_frames property from wmr_camera as this replaces it.
2021-12-21 11:43:17 +00:00
Mateo de Mayo 1c7323f1c2 d/rs: Generalize laser emitter option setup to any rs option 2021-12-21 11:43:17 +00:00
Mateo de Mayo fa431fc010 d/rs: Map all rs_hdev timestamps to monotonic clock 2021-12-21 11:43:17 +00:00
Mateo de Mayo 76d7729e4d m/vec3: Add operator/ for scalar division 2021-12-21 11:43:17 +00:00
Mateo de Mayo bcb4cd82cd aux/math: Use dt in calculation of ang vel between quat diference 2021-12-21 11:43:17 +00:00
Mateo de Mayo 3e8a070e93 u/var: Add u_var_combo 2021-12-21 11:43:17 +00:00
James Hogan 7ee8d1ac5d
xrt: Revert xrt_view::display::{w|h}_pixels changes
Commit 749723f0ba ("xrt: Remove xrt_view::display::{w|h}_meters")
accidentally removed some references to {w|h}_pixels as well as
{w|h}_meters. This resulted in recommended view image sizes of 0px*0px.

Revert those changes without reverting the rest of the commit.

Fixes: 749723f0ba ("xrt: Remove xrt_view::display::{w|h}_meters")
2021-12-20 23:00:40 +00:00
Moses Turner 5635cd3885 ipc: fix typo - connec -> connect 2021-12-20 06:21:36 -06:00
Simon Zeni 4e4e6708bc Revert "d/survive: ajust timestamp from button event"
This reverts commit b396c200d0.

The issue has been fixed in libsurvive [1]

[1]: https://github.com/cntools/libsurvive/pull/250
2021-12-17 13:40:53 -05:00
Moses Turner a19f13171b meson: use cjson_include with depthai driver 2021-12-14 14:12:42 +00:00
Christoph Haag b7c8a6faa5 d/ht_ctrl_emu: work around truncation warning
../src/xrt/drivers/ht_ctrl_emu/ht_ctrl_emu.cpp: In function ‘int cemu_devices_create(xrt_device*, xrt_device*, xrt_device**)’:
../src/xrt/drivers/ht_ctrl_emu/ht_ctrl_emu.cpp:439:102: warning: ‘ Left Hand’ directive output may be truncated writing 10 bytes into a region of size between 1 and 256 [-Wformat-truncation=]
  439 |                 int ret = snprintf(cemud[i]->base.str, XRT_DEVICE_NAME_LEN, i ? "%s Right Hand" : "%s Left Hand", hands->str);
      |                                                                                                      ^~~~~~~~~~
../src/xrt/drivers/ht_ctrl_emu/ht_ctrl_emu.cpp:439:35: note: ‘snprintf’ output between 11 and 266 bytes into a destination of size 256
  439 |                 int ret = snprintf(cemud[i]->base.str, XRT_DEVICE_NAME_LEN, i ? "%s Right Hand" : "%s Left Hand", hands->str);
      |                           ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/xrt/drivers/ht_ctrl_emu/ht_ctrl_emu.cpp:439:84: warning: ‘ Right Hand’ directive output may be truncated writing 11 bytes into a region of size between 1 and 256 [-Wformat-truncation=]
  439 |                 int ret = snprintf(cemud[i]->base.str, XRT_DEVICE_NAME_LEN, i ? "%s Right Hand" : "%s Left Hand", hands->str);
      |                                                                                    ^~~~~~~~~~~
../src/xrt/drivers/ht_ctrl_emu/ht_ctrl_emu.cpp:439:35: note: ‘snprintf’ output between 12 and 267 bytes into a destination of size 256
  439 |                 int ret = snprintf(cemud[i]->base.str, XRT_DEVICE_NAME_LEN, i ? "%s Right Hand" : "%s Left Hand", hands->str);
      |                           ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-12-14 14:58:33 +01:00
Christoph Haag 2b101e6ffa d/wmr: don't print NULL value in error message
In file included from ../src/xrt/drivers/wmr/wmr_config.h:15,
                 from ../src/xrt/drivers/wmr/wmr_config.c:16:
In function ‘wmr_config_parse_camera_config’,
    inlined from ‘wmr_config_parse_calibration’ at ../src/xrt/drivers/wmr/wmr_config.c:422:8,
    inlined from ‘wmr_hmd_config_parse’ at ../src/xrt/drivers/wmr/wmr_config.c:477:13:
../src/xrt/auxiliary/util/u_logging.h:84:25: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
   84 |                         u_log(__FILE__, __LINE__, __func__, level, __VA_ARGS__);                                       \
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/xrt/auxiliary/util/u_logging.h:220:38: note: in expansion of macro ‘U_LOG_IFL’
  220 | #define U_LOG_IFL_E(cond_level, ...) U_LOG_IFL(U_LOGGING_ERROR, cond_level, __VA_ARGS__)
      |                                      ^~~~~~~~~
../src/xrt/drivers/wmr/wmr_config.c:22:35: note: in expansion of macro ‘U_LOG_IFL_E’
   22 | #define WMR_ERROR(log_level, ...) U_LOG_IFL_E(log_level, __VA_ARGS__)
      |                                   ^~~~~~~~~~~
../src/xrt/drivers/wmr/wmr_config.c:267:17: note: in expansion of macro ‘WMR_ERROR’
  267 |                 WMR_ERROR(log_level, "Invalid camera calibration block %d - unknown camera purpose %s", c->n_cameras,
      |                 ^~~~~~~~~
../src/xrt/drivers/wmr/wmr_config.c: In function ‘wmr_hmd_config_parse’:
../src/xrt/drivers/wmr/wmr_config.c:267:100: note: format string is defined here
  267 |                 WMR_ERROR(log_level, "Invalid camera calibration block %d - unknown camera purpose %s", c->n_cameras,
      |                                                                                                    ^~
2021-12-14 14:54:47 +01:00
Christoph Haag 42ae21d412 d/hdk: Remove unused variable 2021-12-14 14:19:53 +01:00
Christoph Haag d4a491ea74 targets/steamvr: Use python stdlib to copy
monado/src/xrt/targets/steamvr_drv/copy_assets.py:8: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
  from distutils.dir_util import copy_tree

monado/src/xrt/targets/steamvr_drv/copy_assets.py:8: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
  from distutils.dir_util import copy_tree
2021-12-14 14:17:57 +01:00
Christoph Haag 8bbaf2a05b a/tracking: Use #pragma message instead of #warning
Avoids warning
../src/xrt/auxiliary/tracking/t_tracker_slam.cpp:66:2: warning: #warning is a GCC extension
2021-12-14 13:51:16 +01:00
Ryan Pavlik 1203cf38f0 cmake: Fix build when we have EGL but not GLES headers. 2021-12-13 15:00:24 -06:00
Mateo de Mayo 74e79ff274 d/wmr: Add SLAM tracker 2021-12-13 10:41:55 +00:00
Mateo de Mayo d3bde043bd d/wmr: Forward IMU samples to wmr_source 2021-12-13 10:41:55 +00:00
Mateo de Mayo 41f42e0b3a d/wmr: Add wmr_source with camera streams support 2021-12-13 10:41:55 +00:00
Mateo de Mayo 92c1e55c37 d/wmr: Prepare HMD for SLAM tracking 2021-12-13 10:41:55 +00:00
Mateo de Mayo c1edfa95d7 d/wmr: Add Odyssey+ activation/deactivation functions
Co-authored-by: Jan Schmidt <jan@centricular.com>
2021-12-13 10:41:55 +00:00
Mateo de Mayo 7338aded9c d/wmr: Add exposure setting 2021-12-13 10:41:55 +00:00
Mateo de Mayo d9aaa4369f d/wmr: Add ROI rect for WMR cameras 2021-12-13 10:41:55 +00:00
Jan Schmidt 3bb3197fec d/wmr: Parse controller configuration
Extract LED and inertial sensor configuration from
controller JSON
2021-12-13 11:47:12 +11:00
Jan Schmidt ea4836b081 d/wmr: Read controller firmware configuration blocks.
Implement reading and logging of controller firmware blocks.

The main JSON configuration is obfuscated. The raw block can
be dumped to disk by setting the WMR_CONFIG_DUMP env var
to point to a directory to receive controller configs
2021-12-13 11:47:12 +11:00
Jan Schmidt 4e24a1277e d/wmr: Add pragma once to BT controller header 2021-12-13 11:47:12 +11:00
Jan Schmidt 1c67a1ff52 d/wmr: Add HP Reverb G2 controller PID
Recognise the HP Reverb G2 WMR controller if it is directly
connected via bluetooth (instead of tunnelled through the
headset like it normally would be).
2021-12-13 11:47:12 +11:00
Simon Zeni b396c200d0 d/survive: ajust timestamp from button event 2021-12-12 23:07:14 +00:00
Nima01 b3e0f5bc6a d/wmr: WMR Controller (BT): Don't waste CPU cycles when reading 2021-12-12 21:37:50 +01:00
Nima01 2d48a9bca2 d/wmr: WMR Controller (BT) 3DoF working, based on gyro and accel.
Tested on HP Reverb G1. Reading and applying device specific
config data is still pending.
2021-12-12 16:47:35 +00:00
Mateo de Mayo fe4f6c6eb0 misc: Improve wmr and euroc docs, fix ht memory leak, stride for cv::Mats 2021-12-12 13:13:18 -03:00
Mateo de Mayo cd0342c8dc aux/util: Add u_frame_create_roi 2021-12-12 13:12:42 -03:00
Mateo de Mayo fa88ce5f3f u/var: Add u16 var kind 2021-12-12 13:06:04 -03:00
Mateo de Mayo 471ca9530b m/3dof: Add reset functionality 2021-12-12 13:06:04 -03:00
Moses Turner 749723f0ba xrt: Remove xrt_view::display::{w|h}_meters
It is not used anywhere.
2021-12-10 21:27:15 -06:00
Jakob Bornecrantz 59a09abf6a d/dai: Document work around 2021-12-10 21:31:28 +00:00
Jakob Bornecrantz 775d82d728 d/dai: Work around issue in v2.13.3 2021-12-10 21:31:28 +00:00
Ryan Pavlik 5b1c60eeb0 xrt: Add unique_ptr typedef for xrt_device 2021-12-10 21:24:02 +00:00
Ryan Pavlik 26e5f6eee7 a/math: Bring the C++ wrapper for relation_history up to parity.
Also add tests for it too.
2021-12-10 21:06:04 +00:00
Ryan Pavlik ef4550c268 a/math: Add a "get latest" to relation history as well. 2021-12-10 21:06:04 +00:00
Ryan Pavlik aff7079dca a/math: Let relation history report its size 2021-12-10 21:06:04 +00:00
Moses Turner c66b29d117 d/wmr: use u_extents_2d_split_side_by_side instead of u_device_setup_split_side_by_side 2021-12-10 14:08:52 -06:00
timongentzsch ba353e276d Bugfix in solving quadratic equation for FoV calculation 2021-12-10 18:08:50 +00:00
Ryan Pavlik e5e8451a81 a/math: Update relation history to return something from push. 2021-12-09 13:44:12 -06:00
Mateo de Mayo b29c4ee78f u/json: Update macro signatures to fix MSVC builds 2021-12-08 15:35:54 +00:00
Ryan Pavlik 46d095d978 comp/util: Allow enabling timeline semaphores when creating bundle. 2021-12-08 00:54:12 +00:00
Ryan Pavlik 0b11ce3a27 a/vk: Add timeline semaphore to the list of optional features. 2021-12-08 00:54:12 +00:00
Ryan Pavlik 2af3798e44 a/vk: Fix typo in physical device feature chain 2021-12-08 00:54:12 +00:00
nima01 d5d1695438 d/wmr: Hook up motion controller gyro and accel
Basic IMU setup with fusion. Reading and applying config callibration data from controller is still work in progress
2021-12-08 00:43:50 +00:00
Jakob Bornecrantz 98982bd25b a/math: Fix warning in math_matrix_2x2_multiply 2021-12-07 13:30:45 +00:00
Jakob Bornecrantz aad9b04a92 d/wmr: Fix warning and tidy 2021-12-07 13:30:45 +00:00
Jakob Bornecrantz eee143f401 d/rs: Use long name as documentation name 2021-12-07 11:26:20 +00:00
Jakob Bornecrantz 3e38ada9a5 build: s/rs/realsense/g 2021-12-07 11:26:20 +00:00
Jakob Bornecrantz 6598217a01 u/vive: Correct Vive Pro model_name
Fixes #106
2021-12-06 19:43:49 +00:00
Jakob Bornecrantz 6ae52651c4 d/vive: Up max config z and json size, also tidy 2021-12-06 19:43:49 +00:00
Jakob Bornecrantz b621955873 a/vk: Put vendor extensions last 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 5289b081c5 a/vk: Check for VK_KHR_timeline_semaphore 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 0eca48ec2b a/vk: Add all functions for VK_KHR_timeline_semaphore 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 7d529a3dfc a/vk: Change script to make it clang-format friendly 2021-12-06 17:25:09 +00:00
Jakob Bornecrantz 94ad966e4d a/vive: Also correctly error on unknown controller warnings 2021-12-06 11:44:33 +00:00
Jakob Bornecrantz aace8ff62d a/vive: Look for model_name correctly 2021-12-06 11:44:33 +00:00
Jakob Bornecrantz a6b4e6a830 m/3dof: Show more in the variable tracker 2021-12-05 15:30:14 +00:00
Jan Schmidt 6cc92c369a d/wmr: Fix accel <-> gyro mixup in previous change.
There was a typo in the calibration bias/correction
patch that messed up accel values by accidentally
reusing the gyro value.
2021-12-06 01:45:25 +11:00
Jan Schmidt c06c3fa782 d/wmr: Make WMR to OpenXR coordinate transform explicit
Instead of negating Y and Z readings from the IMU when
parsing, parse the native values, then apply the rotation
using the centerline transform before fusion.
2021-12-05 00:09:25 +11:00
Jan Schmidt c7549c8680 d/wmr: Apply HMD IMU correction from calibration.
Apply the mix_matrix and bias_offsets adjustments for
IMU readings.
2021-12-05 00:06:05 +11:00
Jan Schmidt ee030ff0c8 d/wmr: Extend config reading to include bias/mix_matrix
Add extraction of bias offsets and mix_matrix (rotation)
correction for IMU accel, gyro and mag configuration entries.
2021-12-05 00:06:05 +11:00
Jan Schmidt 385a3bd33d d/wmr: Split out inertial sensor configuration
Inertial sensor configuration blocks are common to
both HMD and controller calibration. Factor out a
shared structure to receive them.
2021-12-05 00:06:05 +11:00
Jan Schmidt 76c18bfdc7 d/wmr: Rename wmr_config_parse to wmr_hmd_config_parse() 2021-12-05 00:06:05 +11:00
Jan Schmidt bb5aa35c00 a/math: Add math_matrix_3x3_identity()
Add an initialisation function to set a 3x3 matrix
to the identity matrix.
2021-12-05 00:06:05 +11:00
Jakob Bornecrantz 971739627a d/vive: Actually print error message to say what is going on 2021-12-03 21:13:57 +00:00
Jakob Bornecrantz e21e28c455 u/vive: Be more verbose if we fail to parse model_[name|number] 2021-12-03 21:13:57 +00:00
Jakob Bornecrantz 12baf0ada3 st/prober: Warn when we can't get USB descriptors 2021-12-03 21:13:57 +00:00
Jakob Bornecrantz 59fccb0c38 st/prober: If we can't tell if we can open a device assume yes 2021-12-03 20:47:25 +00:00
Moses Turner 8af3a47f5a cmake: make DepthAI driver link to aux_tracking 2021-12-03 19:22:57 +00:00
Moses Turner 31f155acbd cmake: make xrt-external-json public for aux_tracking 2021-12-03 19:22:57 +00:00
Ryan Pavlik 85ee6379e6 ipc: Fix copy/paste typo.
Thanks to xdust for catching this.
2021-12-03 10:11:17 -06:00
Jakob Bornecrantz 8c04bf1274 a/math: Add C++ RelationHistory interface class 2021-12-03 14:00:37 +00:00
Jakob Bornecrantz efde7f185c a/math: Put m_relation_history_get out argument last 2021-12-03 14:00:32 +00:00
Jakob Bornecrantz ed48e6d47d a/math: Constify in argument 2021-12-03 13:53:46 +00:00
Ryan Pavlik 2b64e5b965 a/math: Extend m_relation_history to pass the tests. 2021-12-03 13:53:46 +00:00
Ryan Pavlik 217dee2ce3 a/math: Add m_relation_history_result return from m_relation_history_get 2021-12-03 13:45:43 +00:00
Ryan Pavlik 01e3d9871c a/math: Replace RH_DEBUG for relation history with better use of logging macros 2021-12-03 13:45:43 +00:00
Jarvis Huang 27550ffa39 aux/android: Looper trick for NativeActivity with app-glue 2021-12-02 09:40:36 -06:00
Mateo de Mayo 07bd614930 t/file: Extend calibration save/load interfaces with new v2 format 2021-12-02 11:27:42 -03:00
Mateo de Mayo 1483ec32c5 t/file: Implement json save/load for v2 calibration 2021-12-02 11:26:11 -03:00
Mateo de Mayo 31f71251e0 t/util: Add dump function for single camera calibration struct 2021-12-01 18:32:16 +00:00
Jakob Bornecrantz 27f80a90d9 c/render: Make it safe to call comp_resources_close in more cases
Fixes #139
2021-12-01 16:08:12 +00:00
Ryan Pavlik e9c5d34925 t/oxr_android: Fix version code format 2021-12-01 08:35:44 -06:00
Ryan Pavlik 015abd6899 st/p: Fix prober warning. 2021-12-01 08:31:28 -06:00
Mateo de Mayo 1cc80f5476 t/slam: Use euroc recorder in slam tracker 2021-12-01 13:45:18 +00:00
Mateo de Mayo 91ecbdb7fb t/euroc: Add euroc dataset recorder 2021-12-01 13:45:18 +00:00
Mateo de Mayo e245f4e5a9 u/sink: Allow u_sink_queue to queue more than one frame
Passing max_size=1 gives a similar behaviour as before, although instead
of discarding the last enqueued frame, it just ignores the new frame.
2021-12-01 13:45:18 +00:00
Simon Zeni ba7f9d9578 d/ht_cemu: enable build if XRT_BUILD_DRIVER_HANDTRACKING is enabled 2021-12-01 05:36:05 +00:00
Simon Zeni 749792f324 d/ht_cemu: enable meson build 2021-12-01 05:36:05 +00:00
Moses Turner 6b14cc3923 d/cemu: use proper number of inputs 2021-11-30 23:32:05 -06:00
Mateo de Mayo 33d360083f external/slam: Update slam_tracker interface to support dynamic features 2021-11-30 10:01:33 -03:00
Moses Turner 80840c4f4a d/multi: propagate out_timestamp_ns 2021-11-30 05:56:57 -06:00
Moses Turner f5bc81756e d/survive: use controller emulation for hand-tracking 2021-11-30 05:56:57 -06:00
Moses Turner 0214937aa0 d/vive: use controller emulation for hand-tracking 2021-11-30 05:56:57 -06:00
Moses Turner 03359e2bfb d/ht_ctrl_emu: Create the driver 2021-11-30 05:56:57 -06:00
Moses Turner 8cde257817 aux/math: add vec3 overloads for scalar multiplication 2021-11-29 23:23:57 -06:00
Nima01 bdf96d6810 d/wmr: Decode and handle controller buttons, thumbstick and trackpad. 2021-11-27 04:31:13 +01:00
Jan Schmidt ce03824824 d/wmr: Comment updates for wmr_protocol.h
Improve the descriptions of some pieces of the WMR
protocol
2021-11-25 23:33:55 +11:00
Jan Schmidt 7f392936c6 d/wmr: Report frame source_sequence and source_timestamp
Extract timestamp in source 100ns units and convert to
nanoseconds, then place them in the emitted xrt_frames.

Unwrap the 8-bit frame sequence counter to 64-bits, and
add that too.

Add some comments and debug for other fields in the
incoming data.
2021-11-25 23:33:55 +11:00
Jan Schmidt 0fab912c5c d/wmr: Add debug gain control
Add a control to the debug UI for adjusting the
camera gain setting when testing.
2021-11-25 20:05:10 +11:00
Simon Zeni a090655e16 d/ht: remove old ht_models API 2021-11-24 16:42:56 -05:00
Simon Zeni ee45be6f7b d/ht: use new ht_model API 2021-11-24 16:42:56 -05:00
Simon Zeni 0e53b3b87f d/ht: introduce ht_model 2021-11-24 16:42:56 -05:00
Simon Zeni e84d948fb4 d/ht: blackar takes const input 2021-11-24 16:42:56 -05:00
Simon Zeni 32330d467c d/ht: planarize takes const input 2021-11-24 16:42:56 -05:00
Jakob Bornecrantz 986cde6750 cmake: Build the IPC irrespectively of the service or not 2021-11-24 21:30:01 +00:00
Jakob Bornecrantz 63701511eb d/wmr: Tidy 2021-11-24 17:12:19 +00:00
Jakob Bornecrantz 0bd38a0a0d c/render: Error on failing to get memory type 2021-11-24 17:05:13 +00:00
Christoph Haag 01c6e4ed28 d/wmr: make wmr_config_key static
OpenHMD has a global variable wmr_config_key too which is exported in some
build configurations, causing Monado to fail linking openhmd and the wmr
driver together.
2021-11-24 14:36:55 +00:00
Christoph Haag 22d9d97e61 st/oxr: fix finding profiles for device
fixes 6627049af3
2021-11-24 01:36:25 +01:00
Christoph Haag 821c7f0f7a st/oxr: Don't create interaction profile in xrGetInputSourceLocalizedName
oxr_instance::oxr_interaction_profile is used to bind interaction profiles
available on the assigned device to interaction profiles suggested by the
application.

Creating an interaction profile that has not been suggested might interfere
with the binding code.

xrGetInputSourceLocalizedName can only be called after the action sets are
attached, meaning all the interaction profiles must have already been
suggested.
2021-11-24 01:34:13 +01:00
Christoph Haag 1a9e0750c7 st/oxr: document oxr_instance::oxr_interaction_profile 2021-11-24 01:34:13 +01:00
Christoph Haag a1c00e14fd st/oxr: Implement a basic version of XR_FB_display_refresh_rate 2021-11-22 20:44:18 +00:00
Christoph Haag eae7231f83 st/oxr: Add XR_FB_display_refresh_rate ext to script 2021-11-22 20:44:18 +00:00
Jakob Bornecrantz 3f98ea5595 xrt: Tidy s/ll/log_level/g
Also make sure all variable logging uses the right type for logging variables.
2021-11-22 14:29:10 -06:00
Christoph Haag 431857dd16 d/ohmd: use os_nanosleep for delay_after_initialization 2021-11-22 00:45:08 +01:00
Christoph Haag 8a4a09bb1b d/ohmd: Remove duplicate delay_after_initialization code 2021-11-22 00:40:13 +01:00
Jakob Bornecrantz 839ada7115 d/wmr: Add more to the I/O 2021-11-20 18:54:16 +00:00
Jakob Bornecrantz 7fa3109e2a d/wmr: Minimum to bind and return a pose 2021-11-20 17:44:34 +00:00
Jakob Bornecrantz 673ac5ee6c d/wmr: Add support for Samsung Odyssey controllers 2021-11-20 17:33:25 +00:00
Ryan Pavlik 27a8ec675b a/util: Add utility for lists of strings, like extension lists. 2021-11-20 17:21:02 +00:00
Jakob Bornecrantz ea38309c86 d/wmr: Bracemaggedon 2021-11-20 15:37:15 +00:00
Jakob Bornecrantz 50e0e7783e d/wmr: Shuffle and group things in camera file 2021-11-20 15:00:02 +00:00
Jakob Bornecrantz 85f79f935b d/wmr: Tidy 2021-11-20 15:00:02 +00:00
Jakob Bornecrantz 1441453d5f d/wmr: Add log level to variable tracking 2021-11-20 13:54:51 +00:00
Jakob Bornecrantz 4329b755a9 d/wmr: Document camera start and constify argument 2021-11-20 13:50:54 +00:00
Jakob Bornecrantz 16c75e7cc7 d/wmr: Tidy variable tracking 2021-11-20 13:29:24 +00:00
Jan Schmidt 733d463ec4 d/wmr: Use proximity sensor value in IPD message.
The first byte after the packet ID toggles when
the proximity sensor is activated.
2021-11-20 12:52:45 +00:00
Jan Schmidt 5efe0da713 d/wmr: Handle 0x17 packets
Add a debug report for 0x17 packets on Reverb G2 that
report controller statuses. The statuses seen so far
are 0x0 for unpaired, 0x1 for paired but offline, and
0x2 for online. Paired reports provide VID and PID for the
associated motion controller.
2021-11-20 12:52:45 +00:00
Jan Schmidt 7b95755f07 d/wmr: Implement bluetooth debug message handling
Handle the debug message packet from the bluetooth
interface on the HP G2. There might be other packet
types, but that's the only one I've seen so far.
2021-11-20 12:52:45 +00:00
Jan Schmidt e0b5070f49 d/wmr: Rename controller related packets
Rename the controller and bluetooth related packets
according to their usage, and split out the
controller update handling function.
2021-11-20 12:52:45 +00:00
Jan Schmidt e18288cc57 d/wmr: Ignore all other packets when reading config
Any other WMR packets can arrive while we're reading the
config block - ignore all of them, not just a few. Fixes
config reading failures.
2021-11-20 12:52:45 +00:00
Jan Schmidt a14d6f1c2b d/wmr: Parse and log HMD debug messages 2021-11-20 12:52:45 +00:00
Jan Schmidt 6bb2972443 d/wmr: Set default camera gain
Add API for gain control on headset cameras,
and use it to set a mid-range default exposure gain
2021-11-20 12:52:45 +00:00
Jan Schmidt 0da1bd74ce d/wmr: Debug output for camera frames
Compute the frame size required for the cameras on a given
headset.

Copy the pixels out into an xrt_frame, then send it
to a debug sink - one for SLAM tracking exposures, and
1 for controller frames.

Based on a patch by Jakob Bornecrantz
2021-11-20 12:52:45 +00:00
Jan Schmidt 5fe935a5b0 d/wmr: Add camera reading loop
Calculate and configure USB transfers to read the
cameras on a WMR headset. Needs more work to
make use of the received frames.
2021-11-20 12:52:45 +00:00
Jan Schmidt e422be89fa d/wmr: Add camera configuration block parsing
Read camera configuration info from the HMD JSON
block
2021-11-20 12:52:45 +00:00
Jan Schmidt 7fb94889a8 d/wmr: Fix a small lock handling mistake
In the wmr handling thread, make sure lock
handling is symmetrical in all code paths.
2021-11-20 12:52:45 +00:00
Moses Turner cef025a546 Revert "st/oxr: fix building on linux with OPENGL_GLX OFF"
This reverts commit d20f8f4363
2021-11-20 00:11:06 +00:00
Jakob Bornecrantz be5b9c9d88 st/gui: Prober or tracking is no longer needed for debug sink 2021-11-19 14:38:31 +00:00
Jakob Bornecrantz 6627049af3 st/oxr: Don't hardcode profiles for devices 2021-11-19 14:38:31 +00:00
Jakob Bornecrantz 974f42f068 st/oxr: Debug print devices 2021-11-19 14:26:44 +00:00
Jakob Bornecrantz a56ea7cad6 c/multi: Fix copy-pasto 2021-11-18 20:14:05 +00:00
Nima01 e536a02b33 d/wmr: Factor out parsing of controller messages and minor cleanup. 2021-11-18 17:19:07 +00:00
Nima01 c4db3dfccc d/wmr: Add basic Reverb (G1, Bluetooth) motion controller support. 2021-11-18 17:19:07 +00:00
Nima01 acd8a0986e d/wmr: Prepare for WMR motion controller driver - Change ambiguous names and traces. 2021-11-18 17:19:07 +00:00
Jan Schmidt 760e8dd3ad meson: Add GStreamer recording support 2021-11-19 04:05:40 +11:00
nima01 70263a6b16 c/util: Use GPU index specified by XRT_COMPOSITOR_FORCE_CLIENT_GPU_INDEX 2021-11-18 14:14:32 +00:00
Ryan Pavlik 0a9b098a37 cmake: Build fix re SDL on some systems 2021-11-17 10:09:57 -06:00
Antonio Ospite 14cc4f1ba2 d/v4l2: fix building with older linux kernel like 4.15
Older linux kernels like 4.15 don't have V4L2_CID_DIGITAL_GAIN or
V4L2_CTRL_FLAG_MODIFY_LAYOUT, add conditional guards to build
successfully on systems with such kernels.
2021-11-13 13:48:00 +00:00
Jakob Bornecrantz 79ec1bd695 d/wmr: Add basic support for Samsung Odyssey+
Display start-up sequence still probably needed.
2021-11-13 12:36:25 +00:00
Ryan Pavlik 9a41a1a8be d/ulv2: Improve source docs 2021-11-13 12:29:58 +00:00
Ryan Pavlik 0fa5876a5c drivers: Add references to xrt_prober_found_function_t in all relevant docs 2021-11-13 12:29:58 +00:00
Ryan Pavlik 3a22c74aa6 xrt: Update some xrt_device docs 2021-11-13 12:29:58 +00:00
Ryan Pavlik b5bcea758d xrt: Rename a prober-related define that wasn't namespaced. 2021-11-13 12:29:58 +00:00
Ryan Pavlik 46fdb32991 xrt: Factor out a function pointer type for the prober "found" functions. 2021-11-13 12:24:15 +00:00
Antonio Ospite d20f8f4363 st/oxr: fix building on linux with OPENGL_GLX OFF
When building on linux and OPENGL_GLX OFF compilation fails with the
following error:

-----------------------------------------------------------------------
../../state_trackers/oxr/libst_oxr.a(oxr_session_gfx_gl.c.o): In function `oxr_session_populate_gl_xlib':
oxr_session_gfx_gl.c:(.text+0x5c): undefined reference to `xrt_gfx_provider_create_gl_xlib'
collect2: error: ld returned 1 exit status
src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/build.make:126: recipe for target 'src/xrt/targets/openxr/libopenxr_monado.so' failed
make[2]: *** [src/xrt/targets/openxr/libopenxr_monado.so] Error 1
CMakeFiles/Makefile2:2490: recipe for target 'src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/all' failed
make[1]: *** [src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
-----------------------------------------------------------------------

Apparently the gl_xlib backend really depends on GLX specifically, so
fix the issue by reflecting that in the conditionally compiled blocks.
2021-11-13 12:16:29 +00:00
Ryan Pavlik 185bf61dd8 comp: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik 2e323add6f drivers: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik 4957f6577f st/p: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik dfa0aba496 aux: Migrate num_ to _count 2021-11-13 12:04:38 +00:00
Ryan Pavlik 469b9d907d st/oxr: Rename all num_ in the state tracker, too. 2021-11-13 12:04:38 +00:00
Ryan Pavlik 33c0287f8b xrt: Rename all "num" parameters and fields to "count" (or "capacity" as appropriate)
This matches the OpenXR usage: the array is the plural of the element type,
and the count is the singular element type plus "count" (usually CountOutput
because of the two-call idiom)

Includes fixes to other code to match API changes.
2021-11-13 12:04:38 +00:00
Ryan Pavlik 5e55b9d992 xrt: Prober docs. 2021-11-13 12:04:38 +00:00
Mateo de Mayo b94b7d1f52 u/json: Implement C++ wrapper for cJSON 2021-11-12 15:33:06 -03:00
Mateo de Mayo 87a1198b0a misc: Address compilation warnings and fix u_json_get_bool 2021-11-12 15:33:06 -03:00
Ryan Pavlik cc4007a69e cmake: Substantial cleanups and simplifications
We now have a cmake-format config file.
We no longer use list variables for sources, instead using
target_sources when we need to add, in accordance with current
best practice. (This makes it a lot easier to edit too.) There's no more
include_directories(), add_definitions(), or other gently-deprecated
directory-scoped commands, nor any CMake scripts that include
a parent directory reference (named targets instead)
2021-11-12 09:48:37 -06:00
Ryan Pavlik 19947a2d27 cmake: Refactor how we build imgui 2021-11-12 09:38:50 -06:00
Jakob Bornecrantz 62ca16c70e a/math: Make sure it's safe to pass in the result as either left or right 2021-11-12 10:27:54 +00:00
Ryan Pavlik b180b244e3 st/oxr: Populate oxr_system's blend modes list from the system compositor, not the device. 2021-11-12 03:05:10 +00:00
Ryan Pavlik 201765d3a7 comp: Populate blend mode list in system compositor info from device 2021-11-12 03:05:10 +00:00
Ryan Pavlik cd5ac5f1c9 xrt: Support multiple blend modes in system compositor info 2021-11-12 03:05:10 +00:00
Jakob Bornecrantz 7ecf649ac2 c/render: Use new Vulkan helpers 2021-11-10 14:22:28 +00:00
Jakob Bornecrantz e8b0ab3b35 aux/vk: Add many more helper functions 2021-11-10 14:22:28 +00:00
Jakob Bornecrantz 5554b0fa00 st/prober: Fix warning and tidy code 2021-11-10 11:32:54 +00:00
Ryan Pavlik 35d7e85266 a/vk: Return of the justification and function rename 2021-11-09 15:36:24 -06:00
Ryan Pavlik b816c08141 a/vk: Add to the file comments mentioning the script. 2021-11-09 11:05:15 -06:00
Ryan Pavlik 8a56046c1d a/vk: Also generate the extension list/checking 2021-11-09 11:05:15 -06:00
Ryan Pavlik 9fc992d540 a/vk: Normalize member names in extensions 2021-11-09 11:05:15 -06:00
Ryan Pavlik 01c02897dc a/vk: Update vulkan files: generate from script 2021-11-09 11:05:15 -06:00
Nima01 2a1e6debfb st/prober: Support for querying of 'Product name' from Bluetooth devices. 2021-11-09 01:10:20 +00:00
Jakob Bornecrantz a081bacc5d aux/vk: Guard vkSignalSemaphore with VK_KHR_timeline_semaphore 2021-11-08 17:36:58 +00:00
Jakob Bornecrantz 4c4e30d875 aux/vk: Add more functions 2021-11-08 17:21:31 +00:00
Ryan Pavlik fa308848ab android: Update source link for licenses 2021-11-08 09:45:00 -06:00
Moses Turner c1d4314aad d/ht: move DEBUG_GET_ONCE_LOG_OPTION to ht_driver.cpp (NFC)
Fixes an annoying warning.
2021-11-08 08:11:26 -06:00
Simon Zeni 49d2d81940 d/ht: split ht_algorithm into source and header 2021-11-08 13:56:37 +00:00
Simon Zeni 39bc129564 d/ht: split ht_models into source and header 2021-11-08 13:56:37 +00:00
Simon Zeni 7618a7e34d d/ht: split ht_nms into source and header 2021-11-08 13:56:37 +00:00
Simon Zeni 83630efc3d d/ht: split ht_image_math into source and header 2021-11-08 13:56:37 +00:00
Simon Zeni 44b46a28bf d/ht: split ht_hand_math into source and header 2021-11-08 13:56:37 +00:00
Jakob Bornecrantz f10951b5ac t/openxr: Only link against qwerty driver if built 2021-11-08 13:07:22 +00:00
Jakob Bornecrantz 551c1f19a9 st/prober: Depend on VF driver since we refer to it directly 2021-11-08 13:07:22 +00:00
Jakob Bornecrantz 42b0361852 c/main: Use Vulkan helper in util 2021-11-07 15:14:04 +00:00
Jakob Bornecrantz 7703b7104b c/main: Tidy extensions 2021-11-06 10:51:19 +00:00
Jakob Bornecrantz a97523591f c/util: Add Vulkan helper 2021-11-06 10:51:19 +00:00
Jakob Bornecrantz 2a536f17d1 cmake: Remove missed source array 2021-11-05 15:56:14 +00:00
Jakob Bornecrantz 56b5918d69 c/main: Fix tab CVK_ERROR macro 2021-11-04 20:57:55 +00:00
Jakob Bornecrantz c912c67dc6 c/main: Use comp_base 2021-11-04 20:57:53 +00:00
Jakob Bornecrantz a1b515616a c/render: Documentation 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz 6e28533bdc c/render: Break out into own library 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz e08c1b1f04 c/util: Add comp_base native compositor helper base class 2021-11-04 20:56:21 +00:00
Jakob Bornecrantz c3b8810bb0 c/util: Documentation 2021-11-04 20:56:20 +00:00
Jakob Bornecrantz 029031cfd3 c/util: Break out swapchain and sync into own library 2021-11-04 20:55:48 +00:00
Jakob Bornecrantz 78936d2b4e c/main: Use get_vk more 2021-11-04 20:54:11 +00:00
Jakob Bornecrantz c6031a26e8 c/main: Refactor fence to be more independent 2021-11-04 20:46:09 +00:00
Jakob Bornecrantz 293d617dd5 c/main: Refactor swapchain to be more independent 2021-11-04 20:46:03 +00:00
Ryan Pavlik 3bd0a07aa2 cmake: Split out finding GLX from the rest of OpenGL on Linux.
Fixes #132.
2021-11-04 15:36:58 +00:00
Ryan Pavlik 15c8414155 cmake: Un-nest a conditional 2021-11-04 15:36:58 +00:00
Jakob Bornecrantz 36765256a6 c/render: Free command buffer when closing rendering 2021-11-03 23:10:47 +00:00
Ryan Pavlik 4759ddda63 ipc: Fix it's vs its 2021-11-03 17:29:13 -05:00
Ryan Pavlik 9ab69a2c99 d/arduino/device: Fix it's vs its 2021-11-03 17:28:56 -05:00
Ryan Pavlik 85dab57936 a/util: Fix some it's vs its 2021-11-03 17:28:41 -05:00
Ryan Pavlik 7a26a2339b comp: Fix some it's vs its. 2021-11-03 17:28:17 -05:00
Ryan Pavlik afc2af549f xrt: Improve docs for ref-counting functions. 2021-11-03 17:27:56 -05:00
Ryan Pavlik 334bd83619 a/tracking: Fix some it's vs its and other minor doc tweaks 2021-11-03 17:27:36 -05:00
Ryan Pavlik f4b61d9e41 a/os: Fix some it's vs its. 2021-11-03 17:24:17 -05:00
Ryan Pavlik a6ae6eb095 a/math: Fix some it's vs its. 2021-11-03 17:23:51 -05:00
Ryan Pavlik 86c7a27156 a/tracking: Fix doxygen warnings about invalid link requests 2021-11-03 17:13:38 -05:00
Ryan Pavlik ebde5344a1 cmake: Make compilation of the sample driver optional. 2021-11-03 17:04:05 -05:00
Ryan Pavlik 55d16046eb doc: Update driver writing documentation 2021-11-03 17:04:02 -05:00
Ryan Pavlik 33e367ee42 drivers: Add a sample driver intended for use as a template. 2021-11-03 17:00:28 -05:00
Ryan Pavlik e2c6fbdd9a cmake: Inline lists of sources for drivers, per current best practice 2021-11-03 17:00:28 -05:00
Jakob Bornecrantz ec9cfa690d c/render: s/rts/rtr/g 2021-11-03 13:28:15 +00:00
Jakob Bornecrantz 12bfc8b5c9 c/render: Do not depend on the compositor 2021-11-03 13:26:42 +00:00
Jakob Bornecrantz c346d812c7 c/render: Add helpers to access the vk_bundle 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 648f49f4ef c/render: Change argument order to object first 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz ccc4bbcf86 c/render: Remove unused disable_atw argument 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 56f4466ffa c/render: Move shaders to render 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 8c8d72647b c/render: Refactor out timewarp matrix into util file 2021-11-03 13:25:15 +00:00
Jakob Bornecrantz 60024efba9 c/render: If we only have a projection layer skip the layer renderer 2021-11-03 13:25:14 +00:00
Jakob Bornecrantz 4ca35b8b3c c/render: Don't cache comp_rendering 2021-11-03 13:24:20 +00:00
Jakob Bornecrantz 847e322fe5 c/render: Remove stub function decls 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz d8a580d875 c/render: Tidy compute rendering 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz f74812f02e c/render: Refactor rendering code so target data is it's own struct. 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 08135b6365 c/shaders: Tidy and codestyle 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 0b9bf9c772 c/main: Do not go via target for compositor 2021-11-02 20:19:05 +00:00
Jakob Bornecrantz 765feb6fe1 c/main: Refactor mesh descriptor and UBO upload 2021-11-02 20:19:05 +00:00
Moses Turner 67430358c2 ipc: add a newline at the end of ipc_protocol_generated.h (NFC) 2021-11-01 18:01:40 -05:00
Simon Zeni c67587c066 d/ht: improve anchor data for hand detector 2021-11-01 17:54:26 -05:00
Jason McNew fd065cca6e d/wmr: Fix segfault if unsupported HoloLens Sensors device is present. 2021-10-31 17:07:55 +00:00
Jakob Bornecrantz c8ee075b8d ipc/server: Add error messages for init failures 2021-10-28 22:58:44 +00:00
Mario Kleiner a6185490e8 c/direct: Fix direct display RandR leased output on multi-X-Screen.
The old code assumes the HMD is always connected to a RandR
output on X-Screen 0, but this is not neccessarily the case
on multi-X-Screen setups. Use a loop to iterate over all
X-Screens outputs until the HMD output is found.

Tested on single and dual X-Screen setups, also with Oculus
Rift CV1 connected to 2nd X-Screen.

This is rather useful for porting applications from "OpenHMD Rift
on separate X-Screen for performance" to OpenXR Monado direct
mode, so one can quickly switch between Monado and OpenHMD native
without cumbersome xorg.conf + logout + login games.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2021-10-28 12:29:36 +00:00