Monado OpenXR Runtime
t_documentation.h
Go to the documentation of this file.
1// Copyright 2019-2021, Collabora, Ltd.
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Documentation-only header.
6 * @author Pete Black <pblack@collabora.com>
7 * @author Jakob Bornecrantz <jakob@collabora.com>
8 * @author Rylie Pavlik <rylie.pavlik@collabora.com>
9 * @ingroup aux_tracking
10 */
11
12#pragma once
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18
19/*!
20 * @defgroup aux_tracking Tracking
21 * @ingroup aux
22 * @brief Trackers, filters and associated helper code.
23 *
24 *
25 * ### Coordinate system
26 *
27 * Right now there is no specific convention on where a tracking systems
28 * coordinate system is centered, and is something we probably need to figure
29 * out. Right now the stereo based tracking system used by the PSVR and PSMV
30 * tracking system is centered on the camera that OpenCV decided is origin.
31 *
32 * To go a bit further on the PSVR/PSMV case. Think about a idealized start up
33 * case, the user is wearing the HMD headset and holding two PSMV controllers.
34 * The HMD's coordinate system axis are perfectly parallel with the user
35 * coordinate with the user's coordinate system. Where -Z is forward. The user
36 * holds the controllers with the ball pointing up and the buttons on the back
37 * pointing forward. Which if you read the documentation of @ref psmv_device
38 * will that the axis of the PSMV are also perfectly aligned with the users
39 * coordinate system. So everything "attached" to the user has its coordinate
40 * system parallel to the user's.
41 *
42 * The camera on the other hand is looking directly at the user, its Z-axis and
43 * X-axis is flipped in relation to the user's. So to compare what is sees to
44 * what the user sees, everything is rotated 180° around the Y-axis.
45 */
46
47/*!
48 * @dir auxiliary/tracking
49 * @ingroup aux
50 *
51 * @brief Trackers, filters and associated helper code.
52 */
53
54
55#ifdef __cplusplus
56
57namespace xrt::auxiliary {
58 /*!
59 * @brief Namespace used by C++ interfaces in the auxiliary tracking library code.
60 */
61 namespace tracking {
62 // Empty
63 } // namespace tracking
64} // namespace xrt::auxiliary
65#endif
66
67
68#ifdef __cplusplus
69}
70#endif