Replies: 1 comment 5 replies
-
Hi, let me summarize how I understand it: tX_Y is the name of the active transformation that transforms quantities from frame Y to frame X. You can also say tX_Y is the pose of Y in coordinate system X. Now you add tm.add_transform(from_frame="tX", to_frame="tY", A2B=tX_Y) The documentation of
According to the documentation, you want to write tm.add_transform(from_frame="tY", to_frame="tX", A2B=tX_Y) In the end you want to query tm.get_transform("t2", "t0") which would result in concat(t2_to_t1, t1_to_t0) or t0_1.dot(t1_2) Output: tm = TransformManager()
tm.add_transform("t1", "t0", t0_1)
tm.add_transform("t2", "t1", t1_2)
print(tm.get_transform("t2", "t0"))
# OUTPUT:
#[[ 0.8660254 -0.5 0. 5.73205081]
# [ 0.5 0.8660254 0. 4.73205081]
# [ 0. 0. 1. 0. ]
# [ 0. 0. 0. 1. ]] I guess the confusion does not stem from the extrinsic vs. intrinsic ambiguity, but from the passive vs. active ambiguity? |
Beta Was this translation helpful? Give feedback.
5 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi there,
Just wondering what the rationale is for using the extrinsic convention? Consider the following example, where
t1
is rotated 30 degrees in z relative tot0
, andt2
is not rotated, but positioned at coordinates (2,2) relative tot1
:I thought using the
TransformManager
would be intuitive enough to use with the above example, but I was getting unexpected results due to use of extrinsic conventions. For the photo above, I decided to calculate the rotations and translations manually using a post-multiply dot product:It's not really clear to me how I could use the output of
get_transform
. For instance, if I wanted to get coordinate framet2
witht0
as the reference frame (similarly to the post-multiplied dot product), how would I go about doing this through theTransformManager
?Or alternatively, how should I be defining the above relationships using
TransformManager
?I am quite used to defining transformations relative to each other, in which situations do you want to use extrinsic convention instead?
In addition, it might be worthwhile documenting that the
TransformManager
uses extrinsic convention, it wasn't apparent until I started digging and found theconcat
function that is being used.Thanks
Aleks
Beta Was this translation helpful? Give feedback.
All reactions