Point-to-Point Trajectory Interpolation in SO(3)

Feb 16, 2025 | Tech Robotics

Preface

Point-to-Point Trajectory Interpolation Concepts and Implementation discussed point-to-point trajectory interpolation in $\mathbb{R}^n$. This post extends such interpolation methods to $SO(3)$, as discussed in Eigen ยท Orientation Difference and SO(3) Matrices.

Mathematics

Similar to $\mathbb{R}^n$ point-to-point trajectory interpolation, in $SO(3)$, one can use the concepts of Quaternion slerp and orientation difference based on physical intuition, and write cubic and quintic interpolation as below. $$ q(s) = q_s(q_s^{-1} \, q_e)^s $$ $$ \dot{q} = \dot{s} \, \Big[ 2 \, \text{log}(q_e q_s^*) \Big]$$ $$ \ddot{q} = \ddot{s} \, \Big[ 2 \, \text{log}(q_e q_s^*) \Big] $$ where $q_s, q_e$ stand for $q_{\text{start}}, q_{\text{end}}$, respectively.

Provided below is the implementation of above equations, note that neither the math nor the implementation is fully proved or tested. Only the orientation interpolation via Quaternion slerp is guaranteed to be correct.