1
$\begingroup$

I'll keep the question specific to the scenario I'm working with, which is the Lie group SO(3) and its Lie algebra so(3).

Consider two rotation matrices $R_0$ and $R_1$, and define $R_t = \exp_{R_1} ((1-t) \log_{R_1} (R_0))$, for $t \in (0, 1)$. This interpolates between $R_0$ and $R_1$. If I'm not mistaken, this can be expressed as $R_t = R_1 \exp ((1-t) \log (R_1^\top R_0))$. Computing the time derivative yields $\dot{R_t} = -R_1 \exp ((1-t) \log (R_1^\top R_0)) \log(R_1^\top R_0) = -R_t \log(R_1^\top R_0)$.

Here's my first question. If $R_t$ is a curve defined on SO(3), then $\dot{R_t}$ should lie on $so(3)$. However, the expression above, $\dot{R_t} = -R_t \log(R_1^\top R_0)$, does not necessarily lie on so(3). Where is my mistake? I'm guessing my reasoning is wrong somewhere related to the frame of reference, whether $\dot{R_t}$ actually lies on so(3) or in the tangent space of SO(3) at $R_t$.

As a follow-up, and related question related to simulating ODEs in SO(3). In general, given an ODE $\dot{R_t} = v(R_t, t)$, where $v(R_t, t)$ lies on so(3), one can simulate it using the recurrence $R_{t+\delta} = R(t) \exp(\delta v(R_t, t))$. Let's now say that I want to define an ODE whose solution traces the path $R_t = \exp_{R_1} ((1-t) \log_{R_1} (R_0))$. I happen to know that the vector field $v(R_t, t)$ that achieves this is given by $v(R_t, t) = -\log (R_1^\top R_0)$, which is the expression I gave above for $\dot{R_t}$ without the pre-multiplication by $R_t$. How can we derive this? Why is the pre-multiplication by $R_t$ not included?

I suppose both questions are very related, as in both cases the problematic bit is the multiplication by $R_t$. Any clarifications are extremely welcome, and pointers and recommendations to study and understand these things are also appreciated (hopefully introductory material, I'm a computer scientist not a mathematician, but somewhat advanced could also work). (Is any of this related to the adjoint operator to move between tangent spaces at different points?)

(For the interested reader, I'm trying to derive things in this paper, specifically trying to go from equation 4 to equation 5, the expression for $\dot r_t$)

Update The first question I believe is solved by noting that the tangent space of SO(3) at some arbitrary rotation matrix $R$ is given by $R S$, where $S$ is skew-symmetric. This is exactly the form given above. So that appears to be correct.

The question that remains for me then is: Why, if I want to update $R(t)$ in the direction of $\dot R(t)$ (like simulating the dynamics using Euler discretization), we get the update $R(t + \delta) = R(t) \exp(\delta S)$, where $S=-\log(R_1^\top R_0)$.

Update #2 I think I solved my doubts. I was confused by the $\exp$ and $\log$ maps when applied at the tangent space at some rotation $R \neq I$ (denote them by $\exp_R$ and $\log_R$). $\exp_R$ takes as inputs elements in the tangent space at $R$ (which are given by $R v$ with $v$ skew symmetric), and $\log_R$ takes as input rotations relative to $R$, and outputs elements of the form $R w$, with $w$ skew symmetric.

Now it all adds up. The ODE would be given by $\dot{R_t} = R_t v(R_t, t)$, with $v$ skew symmetric, and the Euler step looks like $$R_{t+\delta} = R_t \exp_{R_t}(\delta R_t v(R_t, t)) = R_t \exp(\delta v(R_t, t)).$$

Overall, using $v_R$ to denote an element of the tangent space of SO(3) at $R$ (i.e. $v_R = R v$ for some skew symmetric v) and $M$ a rotation matrix (expressed as $M = R M_\Delta$), the $\exp_R$ map can be computed as (expressing the result in an absolute way and not relative to $R$) $$\exp_R(v_R) = R\exp(R^\top v_R) = R \exp(v) = M \rightarrow \exp(v) = M_\Delta.$$

Then $\log_R$ can be computed as $$\log_R(M) = v_R = R \log (R^\top M) = R \log(M_\Delta).$$

$\endgroup$

1 Answer 1

4
$\begingroup$

$\newcommand\SOg{\mathrm{SO}}\newcommand\sog{\mathfrak{so}}\newcommand\TT{\mathsf{T}}$ Key points to remember:

  • $\sog(3)$ is the tangent space to $\SOg(3)$ at the identity element.
  • $\SOg(3)$ is a Lie group, so associated to each element $g\in \SOg(3)$, there is a diffeomorphism $l_g: \SOg(3) \to \SOg(3)$ that sends $h\mapsto gh$. (Left multiplication; you can also do right multiplication if you prefer.)
  • In particular, the induced tangent mapping $\TT l_g$ provides a vector space isomorphism $\sog(3) = \TT_\mathrm{id} \SOg(3) \to \TT_{g}\SOg(3)$. And so you have a parametrization of the tangent bundle $\TT\SOg(3) \cong \SOg(3) \times \sog(3)$.
  • On the other hand, you can also realize $\SOg(3)$ as a set of $3\times 3$ matrices. Then at a particular $g$ (realized as a matrix), the tangent space $\TT_g\SOg(3)$ is a vector subspace of the space of $3\times 3$ matrices. But this vector subspace is in general different, depending on $g$.
  • Working through the matrix multiplication process you see that the vector subspace turns out to be $g\cdot \sog(3)$.

When one writes "$\dot{R} = v$ with $v\in \sog(3)$", one is being a bit lazy, what one really means is that $\dot{R}(t)$ is the element in $\TT_{R(t)}\SOg(3)$ that corresponds to $v\in \sog(3)$ through the parametrization described above.

If you choose to realize $R$ as a curve in the space of $3\times 3$ matrices, the matrix corresponding to $\dot{R}(t)$ should be the matrix $R(t) \cdot v$, where $v$ is interpreted also as a $3\times 3$ (skew-symmetric) matrix.


The following may help you understand what is going on. Imagine making the following (somewhat absurd) choice to study the dynamics on $\mathbb{R}^3$: you choose to parametrize tangent vectors using the standard Euclidean system. But you choose to parametrize points in $\mathbb{R}^3$ using the cylindrical coordinates system.

Then given a curve $\gamma:(a,b)\to\mathbb{R}^3$, in the coordinate system you can write $\gamma = (r(t), z(t), \theta(t))$. But the velocity vector of $\gamma$, parametrized in the Euclidean system, is not given by $(\dot{r}(t), \dot{z}(t), \dot{\theta}(t))$, instead, its components should be $$ (\dot{r}(t) \cos(\theta(t)) - r(t) \sin(\theta(t)) \dot{\theta}(t), \dot{r}(t) \sin(\theta(t)) + r(t) \cos(\theta(t)) \dot{\theta}(t), \dot{z}(t) ) $$ which we can also write as $$ \begin{pmatrix} \cos(\theta(t)) & 0 & -r(t) \sin(\theta(t)) \\ \sin(\theta(t)) & 0 & r(t) \cos(\theta(t)) \\ 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} \dot{r}(t) \\ \dot{z}(t) \\ \dot{\theta}(t) \end{pmatrix} $$

Essentially the same thing is happening: you are parameterizing the tangent space using $\sog(3)$ in a way that is not "directly compatible" with the choice of "coordinates" realizing $\SOg(3)$ as a group of matrices.


For references: you probably want to look for a book that introduces Lie Group theory with focus on Matrix Groups. Andrew Baker's Matrix Groups seems okay, except that the material most relevant to what I wrote above is relegated to an exercise or two at the end of Chapter 3. (On the other hand, if you work through and really understand Chapter 3, the exercise is very easy.)

$\endgroup$
4
  • $\begingroup$ Thanks! Very useful. I'll check the reference in detail. In the meantime, quick follow-up on the example (might be pushing it a bit too far, if so let me know). In the example, we have a curve in cylindrical coords, call it $c_t$. Let $M_t$ be the matrix you wrote down. Then, we essentially have $\dot{c_t}=M_t^{-1} \dot{x_t}$, where $M$ is needed to go between coord systems. Similar thing is happening in SO(3) etc? The curve is in SO(3), but the velocity $\dot{R_t}=R_t S$ ($R$ rotation, $S$ skew-sym) is expressed in the tangent space at $R_t$, that's why we transform with $R^{-1}$? $\endgroup$
    – CComp
    Commented Apr 9 at 18:01
  • $\begingroup$ @CComp: yes! It just happens that the coordinate change in the cylindrical example is entirely artificial, while the one in the Lie Group has much more natural meaning. $\endgroup$ Commented Apr 9 at 22:42
  • $\begingroup$ Thanks! I've just updated the question with what I think summarizes my confusion and the final answer. Please let me know if that looks correct to you! (The part after Update #2). If so, I'll mark this as solved. $\endgroup$
    – CComp
    Commented Apr 11 at 22:15
  • $\begingroup$ Quick glance looks fine. $\endgroup$ Commented Apr 11 at 22:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .