perturbing rotation matrices as a means to pertub points in euclidean space.

562 Views Asked by At

Assume you have a rotation matrix i.e. $R \in SO(3)$ and a point $v \in \mathbb{R}^3$ and let $w = Rv$. Assume I want to consider small perturbations of $w$ in some $\epsilon$ ball around w. Is there anyway to actually perturb the matrix $R$ such that I can realize these perturbations in the ball this way?

To clarify, I do not mean we perturb the entries of R directly but rather assume that $R = R_xR_yR_z$ is where the subscript R's are the elementary rotations in terms of euler angles. I want to be able to perturb the euler angles.

1

There are 1 best solutions below

0
On

One way to explore the question of "if R was slightly different (perturbed) what would happen to w?", which I think is what this question is driving at, is to randomly generate a perturbation rotation, $R_p$, and compute a perturbed vector $w_p$ according to,

$w_p = R_pRv$

A key point here is the effect of incorporating another rotation is multiplicative, not additive. Thus, the analog to adding a noise term such as $x_\epsilon = x + \epsilon$ for scalar $x$ and scalar $\epsilon$ is $R_\epsilon = \epsilon R $ for rotation $R$ and rotation $\epsilon$.

As for making the perturbations small, the "magnitude" of a rotation is defined as the magnitude of the corresponding angle in its axis angle representation. Thus, to generate small random perturbations, you can randomly generate an angle $\theta$, subject to whatever distribution you see appropriate for your application (e.g. gaussian, uniform within some maximum range, etc.). The "direction" (axis) of the perturbation can then be randomly generated by generating a unit vector with uniform distribution on the unit sphere via methods such as this one.

Conversion to and from axis-angle representations and rotation matrices are commonly available in existing math packages, however details on the computations are described here in case you need/want to re-implement them from scratch.

In all likelihood, expressing the perturbation rotations in axis-angle form and applying them to a single vector would also lend itself to a closed form, analytic expression. This would minimize or avoid the random sampling approach and have the advantage of allowing for an exact derivative to be calculated in order to evaluate the sensitivity of the resulting perturbed vector, $w_p$, on the magnitude of the perturbation rotation for a given rotation axis. However, the random sampling approach described above offers a simple approach that may meet your needs and will at least get you started.