Coordinate System

Inheritance diagram of hermespy.core.transformation.Transformation, hermespy.core.transformation.Transformable, hermespy.core.transformation.TransformableLink, hermespy.core.transformation.TransformableBase, hermespy.core.transformation.Direction

HermesPy’s coordinate sytem implementation defines classes for forward and backwards kinematics along a kinematic chain of multiple linked coordinate systems. They can be used to describe the position and orientation of objects in a 3D space depending on the position and orientation of other objects. More precisely, antenna elements within antenna arrays can be described in relation to the antenna array itself, which in turn can be described in relation to the device it is attached to. Devices can be described in relation to the global coordinate system, which is defined by the simulation environment and attached to moving geometric objects in the case of spatial simulations.

class Transformation[source]

Bases: ndarray, Serializable

Coordinate system transformation.

classmethod From_Quaternion(quaternion, pos, normalize_quaternion=True)[source]

Initialize a transformation from a quaternion.

Parameters:
  • quaternion (numpy.ndarray) – Quaternion in w, x, y, z representation.

  • pos (numpy.ndarray) – Cartesian position in m.

  • normalize (bool, optional) – Normalize the quaternion before computing the rotation matrix. Enabled by default.

Return type:

Transformation

Returns: The initialized transformation.

classmethod From_RPY(rpy, pos)[source]

Initialize a transformation from roll pitch yaw angles.

Parameters:
Return type:

Transformation

Returns: The initialized transformation.

classmethod From_Translation(translation)[source]
Return type:

Transformation

classmethod No()[source]
Return type:

Transformation

invert()[source]

Invert the transformation.

Returns: The inverted transformation.

Return type:

Transformation

lookat(target=array([0., 0., 0.]), up=array([0., 1., 0.]))[source]

Rotate and loook at the given coordinates. Modifies orientation property.

Parameters:
  • target (numpy.ndarray) – Cartesean coordinates to look at. Defaults to np.array([0., 0., 0.], float)

  • up (numpy.ndarray) – Global catesean sky vector. Defines the upward direction of the local viewport. Defaults to np.array([0., 1., 0.], float)

Returns:

This modified Transformation.

Return type:

self (Transformation)

rotate_direction(direction)[source]

Rotate a cartesian direction.

Parameters:

direction (numpy.ndarray) – A directional vector.

Return type:

Direction

Returns: The transformed direction.

Raises:

ValueError – If direction is invalid.

transform_direction(direction, normalize=False)[source]

Transform a direction.

Parameters:
  • direction (numpy.ndarray) – Direction to be transformed.

  • normalize (bool, optional) – Normalize the resulting transformed direction to a unit norm vector. Disabled by default.

Return type:

Direction

Returns: The transformed direction.

transform_position(position)[source]

Transform a cartesian position.

Parameters:

position (numpy.ndarray) – Numpy array representing the cartesian position.

Return type:

ndarray

Returns: The transformed position.

Raises:

ValueError – If position is invalid.

property rotation_quaternion: ndarray

Orientation in Quaternion representation.

A numpy vector representing w, x, y, z.

property rotation_rpy: ndarray

Orientation in Roll, Pitch and Yaw Angles.

Returns: Roll, Pitch and Yaw in Radians.

property translation: ndarray
class Transformable(pose=None)[source]

Bases: Serializable, TransformableLink

Representation of a Coordinate Frame within a Kinematic Chain.

Parameters:

pose (Transformation, optional) – Transformation of the transformable with respect to its reference frame. By default, no transformation is considered, i.e. Transformation.No()

lookat(target=array([0., 0., 0.]), up=array([0., 1., 0.]))[source]

Rotate and loook at the given coordinates. Modifies orientation property.

Parameters:
  • target (numpy.ndarray) – Cartesean coordinates to look at. Defaults to np.ndarray([0., 0., 0.], float).

  • up (array of 3 numbers) – Global catesean sky vector. Defines the upward direction of the local viewport. Defaults to np.ndarray([0., 1., 0.], float).

Return type:

None

set_base(base)[source]

Set the relative base coordinate frame of this link.

Parameters:

base (TransformableLink | None) – The base to be coordinate frame to be set. None to detach the link.

Return type:

None

to_local_coordinates(arg_0, arg_1=None)[source]
Return type:

Transformation

property backwards_transformation: Transformation

Transformation to convert global coordinates to local coordinates.

Updated every time the kinematic chain’s parameters change.

Returns: The transformation.

property forwards_transformation: Transformation

Transformation to convert local coordinates to global coordinates.

Updated every time the kinematic chain’s parameters change.

Returns: The transformation.

property global_orientation: ndarray

Orientation of the represented object within the global coordinate system.

Returns: Three-dimensional numpy vector representing roll, pitch and yaw in radians.

property global_position: ndarray

Position of the represented object within the global coordinate system.

Returns: Three-dimensional numpy vector representing the cartesian object coordinates.

property is_base: bool

Is this transformable acting as a base frame?

Returns: Boolean indicator.

property orientation: ndarray

Orientation of the Transformable.

Returns: The transformation in radians for roll, pitch and yaw.

Raises:

ValueError – If orientation is not a three-dimensional numpy vector.

property pose: Transformation

Pose of the Transformable with respect to its reference link.

Returns: The pose’s transformation.

property position: ndarray

Position of the Transformable.

Cartesian offset to the reference coordinate frame.

Returns:

Cartesian position x, y, z in m.

Raises:

ValueError – If position is not a valid three-dimensional vector.

Bases: object

Abstract base class of kinetmatic chain links.

Establish a new link to a coordinate frame depending on this frame.

Parameters:

link (Transformable) – The transformable frame to be registered.

Return type:

None

Remove an established link to this coordinate frame.

Parameters:
  • link (Transformable) – The coordinate frame to be linked to this frame.

  • force_removal (bool, optional) – Raise a RuntimeError if the link is not registered

Raises:

RuntimeError – If the link is not currently registerd and force_removal is enabled.

Return type:

None

abstract set_base(base)[source]

Set the relative base coordinate frame of this link.

Parameters:

base (TransformableLink | None) – The base to be coordinate frame to be set. None to detach the link.

Return type:

None

abstract property forwards_transformation: Transformation

Transformation to convert local coordinates to global coordinates.

Updated every time the kinematic chain’s parameters change.

Returns: The transformation.

property linked_frames: Set[TransformableLink]
class TransformableBase[source]

Bases: TransformableLink

Base of kinematic chains.

set_base(base)[source]

Set the relative base coordinate frame of this link.

Parameters:

base (TransformableLink | None) – The base to be coordinate frame to be set. None to detach the link.

Return type:

None

property forwards_transformation: Transformation

Transformation to convert local coordinates to global coordinates.

Updated every time the kinematic chain’s parameters change.

Returns: The transformation.

class Direction[source]

Bases: ndarray

A cartesian unit norm vector pointing towards a direction.

classmethod From_Cartesian(vector, normalize=False)[source]

Initialize a direction from a cartesian vector.

Raises:

ValueError – If vector does not represent a valid cartesian vector.

Returns: The initialized direction.

Return type:

Direction

classmethod From_Spherical(azimuth, zenith)[source]

Initialize a direction from spherical parameters.

Parameters:
  • azimuth (float) – Azimuth angle in radians.

  • zenith (float) – Zenith angle in radians.

Return type:

Direction

Returns: The initialized direction.

to_spherical()[source]

Represent the direction as spherical coordinates.

Returns: An array representing azimuth and zenith angles in radians.

Return type:

ndarray