Note
Go to the end to download the full example code.
Plot Transformation through Screw Motion#
A screw axis is represented by the parameters (q, s_axis, h). We can represent any transformation with a screw axis and an additional parameter theta that encodes the rotation angle and through h * theta the translation. Here we visualize a screw axis and the transformation generated from a specific theta.
The larger coordinate frame represents the origin of the transformation and the smaller frame represents the transformed frame. The red point indicates the position of q, which is a point on the screw axis. A straight arrow shows the direction of the screw axis. The spiral path represents a displacement of length theta along the screw axis.

/home/afabisch/Data/Projects/pytransform3d/pytransform3d/examples/plots/plot_screw.py:42: DeprecationWarning: function is deprecated, use matrix_from_euler
active_matrix_from_extrinsic_roll_pitch_yaw([0.5, -0.3, 0.2]),
import matplotlib.pyplot as plt
import numpy as np
from pytransform3d.rotations import active_matrix_from_extrinsic_roll_pitch_yaw
from pytransform3d.transformations import (
plot_transform,
plot_screw,
screw_axis_from_screw_parameters,
transform_from_exponential_coordinates,
concat,
transform_from,
)
# Screw parameters
q = np.array([-0.2, -0.1, -0.5])
s_axis = np.array([0, 0, 1])
h = 0.05
theta = 5.5 * np.pi
Stheta = screw_axis_from_screw_parameters(q, s_axis, h) * theta
A2B = transform_from_exponential_coordinates(Stheta)
origin = transform_from(
active_matrix_from_extrinsic_roll_pitch_yaw([0.5, -0.3, 0.2]),
np.array([0.0, 0.1, 0.1]),
)
ax = plot_transform(A2B=origin, s=0.4)
plot_transform(ax=ax, A2B=concat(A2B, origin), s=0.2)
plot_screw(
ax=ax, q=q, s_axis=s_axis, h=h, theta=theta, A2B=origin, s=1.5, alpha=0.6
)
ax.view_init(elev=40, azim=170)
plt.subplots_adjust(0, 0, 1, 1)
plt.show()
Total running time of the script: (0 minutes 0.072 seconds)