I'm reading Siciliano et al.'s Robotics: Modeling, Planning and Control, and I'm confused about the notation used in definiting rotation matrices.

On page 46, they state

If $\textbf{R}_i^j$ denotes the rotation matrix of Frame $i$ with respect to Frame $j$, it is $$ \begin{equation} \textbf{p}^1 = \textbf{R}_2^1\textbf{p}^2. \end{equation} $$

To me, this notation says, "$\textbf{R}_2^1$ 'rotates' a vector from frame 2 to frame 1." However, in the discussion of fixed frames on page 47, they state that

$$ \begin{equation} \bar{\textbf{R}}_2^0 = \textbf{R}_1^0\textbf{R}_0^1\bar{\textbf{R}}_2^1 \textbf{R}_1^0 \end{equation} = \bar{\textbf{R}}_2^1 \textbf{R}_1^0. $$

If I try to apply my original interpretation, it would say that $\textbf{R}_1^0$ rotates a vector from frame 1 to 0, and then $\bar{\textbf{R}}_1^2$ rotates that vector from its frame 1 to frame 2, which doesn't make sense.

If I instead interpret it as, " $\textbf{R}_1^0$ rotates a vector from frame 0 to frame 1, and then $\bar{\textbf{R}}_2^1$ rotates that vector from frame 1 to frame 2," then that make sense too.

But then the first equation from page 46 doesn't make sense, since it would say, "rotate $\textbf{p}^2$ from frame 1 to frame 2."

Any suggestions on the proper way to interpret these expressions? Thank you!


2 Answers 2


There's a subtle difference involved here. It's the difference between an active and a passive transformation, whose representations are inverses of each other. $R^a_b$ is the matrix for which:

  • left multiplying it with $p_b$ results in the point being expressed in the $a$ frame
  • left multiplying it's inverse ${R^{a}_b}^{-1}=R^b_a$ with $p_b$ rotates the point in the $b$ frame such that it occupies the same relative position in the $a$ frame

(This is sort of intuitive because for the equation $y=f(x)$, $f$ transforms from point $x$ space to $y$ space and it's inverse $f^{-1}$ expresses what $x$ would need to be for $y$ to have that value)

The passage previous to the one you mentioned talks about simple composition by subsequently changing the frame that the point is expressed in. The passage you're referring to is saying that instead of first changing the frame your point is expressed in, you can transform it to an equivalent position relative to another frame, rotate it from that frame to another new frame, with the transform expressed in your initial frame.

  • $\begingroup$ So $p_a = R_b^a p_b$ is a passive transformation since $R_b^a$ just expresses $p_b$ in the frame $a$, and the vector isn't actually being moved in space, but $R_a^b$ is an active transformation since it really does move $p_b$. In that case, how would you define $R_a^b p_b$? I guess you can't also call it $p_a$ $\endgroup$ Commented Jan 18, 2023 at 17:13

I'm building on Raghav's helpful answer to get to my original confusion. In short, I believe reading these matrix compositions comes down to how you interpret the transformations.

A current frame rotation like

$$ \begin{equation} R_2^0 = R_1^0R_2^1 \end{equation} $$

Can be understood two ways.

Way 1:

we rotate frame 0 $(F_0)$ to $F_2$ by rotating $F_0$ to $F_1$ and then $F_1$ to $F_2$. In this interpretation, we read the numbers on the matrices top-to-bottom.

Way 2:

we can express a vector currently in $F_2$ in terms of $F_0$ by rotating it from $F_2$ to $F_1$ and then from $F_1$ to $F_0$. In this interpretation, we read the numbers in the matrices from bottom to top.

Rotation Matrix Composition

At least with Siciliano's notation, we interpret compositions of current frame rotations with Way 1 because the focus is on how frames are being shifted at each step with post-multiplication.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.