Commit graph

1201 commits

Author SHA1 Message Date
Campbell Suter 0f8da1900b a/math: Fix math_pose_invert breaking on rotated poses, and add a test
Previously, math_pose_invert would apply a multiplication in the wrong
order. This lead to the position of the 'original' pose being rotated.

This patch fixes that, and adds a unit test to check this case.
2022-06-01 16:44:03 +01:00
Jakob Bornecrantz fc469e7d5f a/tracking: Document and fix cond var loop in psvr 2022-05-31 13:38:56 +00:00
Jakob Bornecrantz d2a2005212 a/tracking: Document and fix cond var loop in psmv 2022-05-31 13:38:56 +00:00
Charlton Rodda 803d679e11 st/oxr: Add dpad bindings 2022-05-31 13:25:48 +00:00
Jakob Bornecrantz 9b27fb1a2e WIP: aux/binding: Add dpad_emulation support 2022-05-31 13:25:48 +00:00
Jakob Bornecrantz 2715b0e144 aux/bindings: Fix a few pep8 errors 2022-05-31 13:25:48 +00:00
Jakob Bornecrantz a8c254a8cf aux/bindings: Refactor path verify function generation 2022-05-31 13:25:48 +00:00
Jakob Bornecrantz 037c49ce30 aux/bindings: Update generated file copyright 2022-05-31 13:25:48 +00:00
Mateo de Mayo 29aefe2ba8 misc: Use pretty printers and remove stale matrix print functions
Use u_pp_matrix_* instead.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 7d80729358 u/pp: Add array and array2d f64 pretty printers 2022-05-26 18:35:39 +00:00
Mateo de Mayo 8adbdc27e5 t/slam: Allow drivers to send calibration info to SLAM tracker
There were a couple of properties that didn't fit well in our current
calibration structs and so I created t_slam_calib_extras struct to store them.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 02abc49313 t/calib: Add IMU intrinsics struct 2022-05-26 18:35:39 +00:00
Mateo de Mayo 05b8e320a5 a/math: Add multiple isometry-related matrix functions
An isometry is a rigid body transform. In this context I'm using the term to
refer to 4x4 homogeneous matrices in SE(3). I.e., matrices comprised of a
3x3 rotation, a 3x1 translation, and a [0,0,0,1] last row.
This matrix represent both rigid body transforms.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 8b2fa955b9 a/math: Fix matrix identities and use isometry
Isometry3f is a 4x4 matrix transform that performs only rotation and translation
(an SE(3) matrix). Its inverse can be computed trivially by Eigen compared to a
regular 4x4 transform.
2022-05-26 18:35:39 +00:00
Mateo de Mayo 2212cf95cf a/math: Add missing extern C 2022-05-26 18:35:39 +00:00
Jakob Bornecrantz 433915b0bf u/pp: Add math object printers 2022-05-26 14:10:06 +01:00
Moses Turner 5652ddd718 a/util: Fix function signature for u_builder_find_prober_device
Was this ever working?
2022-05-25 20:53:46 +00:00
bjorn d523001b6e aux/vk: Use correct image type for 3D images; 2022-05-25 20:24:17 +00:00
Ryan Pavlik 2da547ce66 a/util: Update pretty printing of results 2022-05-25 18:12:22 +00:00
Ryan Pavlik 596d15a50c a/d3d: Further namespace the d3d11-specific functions 2022-05-25 18:12:22 +00:00
Ryan Pavlik 903fd01272 a/d3d: Add a fence waiting helper 2022-05-24 16:55:45 -05:00
Ryan Pavlik 3f777350e1 a/d3d: Fix docs for fence helper 2022-05-24 16:11:36 -05:00
Ryan Pavlik bb94363f94 a/d3d: Turn off some swapchain formats that we can't roundtrip properly 2022-05-24 16:11:36 -05:00
Mateo de Mayo 2cf07dedf2 t/euroc: Fix crash when recording euroc dataset by providing UI button
Previously, a crash occurred in some situations when the second sample was
written before the first sample was able to create the necessary CSV files.
2022-05-23 17:51:11 -03:00
Jakob Bornecrantz a4983fa5b1 auxiliary: Break apart CMakeLists.txt file 2022-05-23 09:12:54 -05:00
Jakob Bornecrantz 935de808c0 a/bindings: Do not depend on util 2022-05-23 09:12:54 -05:00
Jakob Bornecrantz b64660d458 a/util: Include u_time.h in hand tracking helper 2022-05-23 09:12:54 -05:00
Ryan Pavlik 5656de8b72 a/d3d: Fence helpers 2022-05-23 14:11:43 +00:00
Jakob Bornecrantz 658a21a177 a/d3d: Tidy headers 2022-05-23 14:11:43 +00:00
Moses Turner 9386e56c3d a/util: Paranoia for u_frame_times_widget 2022-05-23 13:19:58 +00:00
Jakob Bornecrantz 490e90b493 a/vk: Also check for d3d12 fence semaphores 2022-05-21 13:37:28 +01:00
Ryan Pavlik 9337ea375c auxiliary: Add new d3d helper library 2022-05-20 22:37:15 +01:00
Ryan Pavlik 907edf10a3 a/os: Add more docs for correct use of condition variables 2022-05-20 21:30:41 +00:00
Ryan Pavlik 588b4831a2 a/util: Improve docs structure 2022-05-20 15:48:19 -05:00
Ryan Pavlik fd25fc75bc a/os: Rearrange time header to get the docs outside of the ifdefs.
Easier to read, easure to be sure we don't accidentally miss something
for doxygen.
2022-05-20 15:48:02 -05:00
Ryan Pavlik ea4c14c3aa a/os: Rename os_thread_helper_stop to os_thread_helper_stop_and_wait 2022-05-20 18:46:37 +01:00
Ryan Pavlik 14aed90183 a/os: Add "initialized" flags to threading primitives (in debug builds)
Failling to init these (other than zero-init) works fine on Linux, but fails on Windows.
So now we at least have an assert on Linux.
2022-05-20 18:40:18 +01:00
Ryan Pavlik 1aba4348dc a/os: Fix naming convention for function pointer 2022-05-20 18:40:16 +01:00
Jakob Bornecrantz 6de4e4afaa u/worker: Init mutex and cond var 2022-05-19 23:13:48 +01:00
Mateo de Mayo 3e6fd9ba73 u/aeg: Fix clang warnings 2022-05-19 18:21:36 -03:00
Mateo de Mayo 85bdbc1817 u/aeg: Implement state machine to correct overshooting and avoid oscillations 2022-05-19 14:03:17 +00:00
Mateo de Mayo bf311f3c2e u/aeg: Add log functions 2022-05-19 14:03:17 +00:00
Mateo de Mayo 63b477d250 a/math: Add MIN, MAX and CLAMP macros 2022-05-19 14:03:17 +00:00
Mateo de Mayo 77139b02a1 u/aeg: Add utility for automatic exposure and gain computation 2022-05-19 14:03:17 +00:00
Mateo de Mayo 7ea7cce930 u/var: Add u_var_histogram_f32 2022-05-19 14:03:17 +00:00
Mateo de Mayo 7d266c76b5 u/var: Add u_var_draggable_u16 2022-05-19 14:03:17 +00:00
Arkadiusz Drohomirecki d444412221 a/math: Add a clear() method to RelationHistory/m_relation_history 2022-05-18 14:45:12 +00:00
Ryan Pavlik 3b54152563 auxiliary: Improve word choice/clarity 2022-05-17 17:40:56 -05:00
Ryan Pavlik 6e78ec1127 a/util: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 276f24c9ad a/tracking: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 2a54dcdb19 a/math: Improve word choice/clarity 2022-05-17 17:39:52 -05:00
Ryan Pavlik 9edc6dd0bf a/util: Doc improvements 2022-05-17 14:42:02 -05:00
Ryan Pavlik cc8c034556 a/vk: Improve comment 2022-05-17 14:42:02 -05:00
Jakob Bornecrantz 61323c32d2 xrt: Use error messages in various instance and prober functions 2022-05-17 20:10:40 +01:00
Jakob Bornecrantz 58438db241 xrt: Add some error messages 2022-05-17 20:10:40 +01:00
Jakob Bornecrantz cf9c5b9dc7 u/var: Put in a namespace and add some documentation 2022-05-17 20:09:19 +01:00
Ryan Pavlik 8bd7d199cb a/os: Improve docs in the threading header. 2022-05-17 12:39:44 -05:00
Ryan Pavlik 1e307e8e9f a/os: Add a function to set thread name. 2022-05-17 12:39:44 -05:00
Ryan Pavlik 147624348f a/vk: Add an internal check to ensure graphics buffer ref worked. 2022-05-17 17:38:07 +00:00
Jakob Bornecrantz 9285bee210 u/system_helpers: Use new xrt_prober_create_system function 2022-05-17 11:20:40 +01:00
Jakob Bornecrantz f91db16dac u/builders: Add xrt_builder_helpers 2022-05-17 11:20:40 +01:00
Frederic Plourde 2e42373d21 aux/os: Fix os_semaphore_get_realtime_clock()
Function was previously using output param 'ts' as
input for computing 'now' internally.
2022-05-16 20:56:53 +00:00
Ryan Pavlik 213f4b6003 a/util: Add a COM guard object.
Need COM initialized to do some things (like d3d11) on Windows,
don't know if the app already initialized it, don't have a big preference
for "how" we initialize it.
2022-05-16 11:00:27 -05:00
Jakob Bornecrantz f4ab51f78b u/pp: Add xrt_result_t printing 2022-05-15 15:02:08 +01:00
Jakob Bornecrantz 535cb839fa u/pp: Add stack only sink for printing messages 2022-05-15 14:54:00 +01:00
Moses Turner bcfd50c839 u/sink: Make sure gen-locked frames have the same timestamp 2022-05-13 14:18:02 +01:00
Jakob Bornecrantz faca646193 u/logging: Change suffix to _func_t 2022-05-12 11:59:12 +00:00
Jakob Bornecrantz ceed09d9b5 u/prober: Add helper file for prober functions 2022-05-12 11:59:12 +00:00
Jakob Bornecrantz 1a358d3a92 u/sink: Remove unused downstream2 2022-05-12 12:53:14 +01:00
Jakob Bornecrantz fc093e2c7b u/sink: Assert on downstream being null 2022-05-12 12:53:12 +01:00
Jakob Bornecrantz d84819eee7 u/system_helpers: Add helper code for system devices 2022-05-11 10:14:00 +01:00
Moses Turner e25ee4058d xrt: Remove xrt_tracked_hand 2022-05-10 18:53:58 +01:00
Jakob Bornecrantz e140cfad5c u/pacing: Add vblank timing function for display control 2022-05-10 11:22:04 +01:00
Jakob Bornecrantz 57070ad620 u/pacing: Make the comp time be at least 2ms in fake pacer 2022-05-10 11:18:52 +01:00
Jakob Bornecrantz b9b9ced43d u/pacing: Predict present time and then calculate display time in fake pacer 2022-05-10 11:18:52 +01:00
Jakob Bornecrantz 6c9c1e9249 u/pacing: Make present_to_display_offset_ns more clear 2022-05-10 11:18:51 +01:00
Jakob Bornecrantz 2b042d48ff a/vk: Add function to print opened device info 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 6c61965790 a/vk: Tidy vk_print_device_info 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz e092a3687b a/vk: Pass external_[fence|samaphore]_fd status to vk_init_from_given 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 6a8e679f87 a/vk: Check for VK_KHR_external_fence_fd and VK_KHR_external_semaphore_fd 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 308aeb8e21 a/vk: Sort checked extensions 2022-05-09 14:01:20 +00:00
Jakob Bornecrantz 56b77248c9 a/vive: Add bindings to touch controller 2022-05-09 10:46:44 +00:00
Jakob Bornecrantz 7d4b19766c a/vive: Add bindings 2022-05-09 10:46:44 +00:00
Mateo de Mayo e3fadb5364 doc: Fix some doxygen warnings 2022-05-07 15:53:56 +00:00
Ryan Pavlik e79a13f0ac a/util: Fix log corruption on Windows. 2022-05-06 00:26:39 +01:00
Ryan Pavlik 3287c984aa cmake: Reorganize options, renaming some.
Rename XRT_HAVE_SLAM to XRT_FEATURE_SLAM,
moving it from xrt_config_have.h to xrt_config_build.h
accordingly.
2022-05-04 11:24:02 -05:00
Jakob Bornecrantz 4ba23faa6b auxiliary: Deal with clang-format-14 fallout (NFC) 2022-05-04 15:58:01 +01:00
Ryan Pavlik f9b4af04e4 a/tracking: Fix conversion warnings 2022-05-03 22:44:37 +01:00
Ryan Pavlik d8970f25f9 a/math: Fix conversion warnings 2022-05-03 22:44:28 +01:00
Jakob Bornecrantz d1d58c4bce u/distortion: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz d8003b4c8f u/pacing: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz fa988a7f74 u/time: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 5981a508d2 u/sink: Fix conversion warnings 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 1afc18108e m/3dof: Fix conversion warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 0a0d4a49d5 m/space: Fix function call warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz d1512f0005 m/lowpass: Fix no define parameter warning 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 6d2011abfd u/file: Avoid using fopen 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 42ba279050 u/file: Avoid using getenv 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz fbc51366e6 u/config: Avoid using strncpy 2022-05-02 17:16:04 +01:00
Antonio Ospite bd06961188 a/util: Silence percetto warnings also when building with g++
Percetto is using designated struct initializers, but those are not
supported in standard C++ before C++20, resulting in some compilation
warnings.

The previous fix for that was using a diagnostic valid for clang but not
for g++ resulting in another warning when building with g++:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/math/m_relation_history.cpp:19:
../monado/src/xrt/auxiliary/util/u_trace_marker.h:21:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas]
   21 | #pragma GCC diagnostic ignored "-Wc99-designator"
      |                                ^~~~~~~~~~~~~~~~~~
-----------------------------------------------------------------------

For GCC the diagnostics to disable is actually "-Wpedantic", as shown
below:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/util/u_trace_marker.h:25,
                 from ../monado/src/xrt/auxiliary/math/m_relation_history.cpp:19:
../external/percetto/src/percetto.h: In function ‘void percetto_event_with_args(percetto_category*, uint32_t, const char*, int32_t, const percetto_track*, int64_t, uint64_t)’:
../external/percetto/src/percetto.h:424:5: warning: C++ designated initializers only available with ‘-std=c++2a’ or ‘-std=gnu++2a’ [-Wpedantic]
  424 |     .track = track,
      |     ^
-----------------------------------------------------------------------

And for clang "-Wc++20-designator" should be slightly more accurate:

-----------------------------------------------------------------------
In file included from ../monado/src/xrt/auxiliary/util/u_trace_marker.h:29:
../external/percetto/src/percetto.h:424:5: warning: designated initializers are a C++20 extension [-Wc++20-designator]
    .track = track,
    ^
-----------------------------------------------------------------------

Fix all the warnings by ignoring the right diagnostics depending on the
compiler, taking care of differentiating clang++ from g++ as they both
define __GNUC__.
2022-05-02 17:31:11 +02:00