Я пытался понять вывод программы aruco_test. cpp, которая включается при загрузке библиотеки Aruco.
Вывод имеет следующий формат:
22=(236.87,86.4296) (422.581,78.3856) (418.21,228.032) (261.347,228.529) Txyz=0.00813142 -0.0148134 0.140595 Rxyz=-2.14032 0.0777095 0.138929
22 - уникальный идентификатор маркера, следующие четыре пары чисел - четыре угла маркера. Моя проблема здесь заключается в двух векторах Tve c и Rve c.
. Я читал в Inte rnet, что tve c - это вектор перевода из центра моей камеры в мой объект. (маркер в данном случае), и это число c - это вращение объекта относительно моей камеры.
У меня есть несколько вопросов относительно этого:
Как я могу знаете ось моей камеры? Я имею в виду, есть ли способ узнать, где расположены x, y и z?
Как получить вращение камеры от вращения объекта относительно камеры?
Может ли кто-нибудь объяснить мне значение векторов лучше, чтобы я мог по-настоящему понять это? Я думаю, что моя главная проблема в том, что я действительно не знаю, что эти цифры означают на самом деле.
РЕДАКТИРОВАТЬ: Я провел некоторое тестирование, чтобы проверить, как работает вращение, и я не совсем понимаю результаты:
- Перемещение камеры, маркер зафиксирован на полу:
Исходное положение: камера смотрит на маркер - ось 'z' маркера смотрит на камеру , «у» идет вверх, а «х» идет вправо: Rxyz = 2,40804 -0,0823451 0,23141
Перемещение камеры по оси «X» маркера (наклоните камеру вверх): Rxyz = - 1.97658 -0.0506794 -0.020052
Перемещение камеры по оси 'y' маркера (наклон камеры вправо): Rxyz = 2.74544 -0.118551 -0.973627
Повернуть камеру на 90 градусов (справа): Rxyz = 1,80194 -1,86528 0,746029
Перемещая маркер вместо камеры, оставляя камеру неподвижной, глядя на маркер:
Использование той же начальной позиции, что и в предыдущем случае.
Перемещение маркера на его ось 'x': Rxyz = 2.23619 -0.0361307 -0.0843008
Перемещение маркера по оси 'y': Rxyz = -2.9065 -0.0291299 -1.13356
Перемещение маркера на его 'z 'ось (поворот на 90º вправо): Rxyz = 1.78398 1.74161 -0.690203
Я предполагал, что каждое число вектора было вращением на соответствующей оси, но я думаю, что это неправильно, так как значения не имеют большого смысла, если бы это было так.