Geometry#

Two dimensional#

A two dimensional numpy.ndarray of type ng_float_t.

An object convertible to Vector2.

Note

Any pybind11 function that accepts Vector2 does in fact accept the less restrictive type Vector2Like, which is difficult to encode exactly using the Python type system. For example, property navground.core.Pose2.position can be set to a tuple of two numbers without any issue:

>>> from navground import core
>>> pose = core.Pose2()
>>> pose.position = (1, 2)
array([1., 2.])

On the contrary, pybind11 functions documented to return Vector2 do return this type.

Type:

str

Type:

int

Two-dimensional pose composed of planar position and orientation. When not specified, poses are assumed to be in the world-fixed frame.

Poses are also associated to rigid transformations in SE(2) translation(pose.position) . rotation(pose.orientation). We define the group operations as a multiplication and add methods like transform_pose() for a pose to operate as a rigid transformation.

Transform a relative pose to an absolute pose.

Equivalent to reference.transform_pose(self) = reference * self

Parameters:

reference – The reference pose

Returns:

The absolute pose

Returns this transformation in the desired frame of reference.

The returned transformation is defined as frame.inverse() * self * frame, so that, for any frame f, the following expressions are equivalent:

  • pose.transform(other).relative(f)

  • pose.get_transformation_in_frame(frame).transform(other.relative(f ))

Parameters:

frame – A posed defining the desired frame of reference for the transformation.

Returns:

The transformation with respect to frame

Rotate the pose by an angle.

Parameters:

angle – The rotation angle in radians.

Returns:

The rotated pose.

Invert a transformation, i.e., SE(2) inversion

Returns:

The inverse transformation

Transform an absolute pose to a relative pose.

Equivalent to reference.inverse().transform_pose(self) = reference.inverse() * self

Parameters:

reference – The reference pose

Returns:

The relative pose

Rotate the pose by an angle.

Parameters:

angle – The rotation angle in radians.

Returns:

The rotated pose.

Applies this rigid transformation to a point

Equivalent to to_absolute_point(point, self)

Parameters:

point – The point to transform

Returns:

The roto-translated point

Applies this rigid transformation to another pose

Equivalent to pose.absolute(self)

Parameters:

pose – The pose to transform

Returns:

self * pose

Applies the rigid transformation to a vector

Equivalent to to_absolute(vector, self)

Parameters:

vector – The vector to transform

Returns:

The rotated vector

Type:

float

Orientation in world frame

Type:

Vector2

Position in world frame

Two-dimensional twist composed of planar velocity and angular speed.

Twist coordinates are in the frame specified by frame.

Transform a twist to Frame.absolute().

Parameters:

reference – The pose of reference of this relative twist

Returns:

The same twist in Frame.absolute() (unchanged if already in Frame.absolute())

Determines if almost zero.

Parameters:
  • epsilon_speed – The epsilon speed

  • epsilon_angular_speed – The epsilon angular speed

Returns:

True if almost zero, False otherwise.

Transform a twist to Frame.relative() relative to a pose.

Parameters:

reference – The desired pose of reference

Returns:

The same twist in Frame.relative() (unchanged if already in Frame.relative())

Rotate the twist by an angle.

Parameters:

angle – The rotation angle in radians.

Returns:

The rotated twist.

Snap components to zero if their module is smaller than epsilon.

Parameters:

epsilon – The tolerance

Type:

float

Angular speed

Type:

navground.core.Frame

Frame of reference.

Type:

Vector2

Velocity

The orientation of a two dimensional vector

Parameters:

vector – The vector

Returns:

The orientation of the vector

Normalize an angle to a value in \([-\pi, \pi]\). Apply it when computing angular differences.

Parameters:

value – The original unbounded angle

Returns:

The equivalent angle in \([-\pi, \pi]\)

Transform an absolute to a relative vector.

Equivalent to reference.inverse().transform_vector(value)

Parameters:
  • value – The absolute vector

  • reference – The reference pose

Returns:

The absolute vector

Transform a relative to an absolute vector.

Equivalent to reference.transform_vector(value)

Parameters:
  • value – The relative vector

  • reference – The reference pose

Returns:

The relative vector

Transform an absolute to a relative vector.

Equivalent to reference.inverse().transform_point(value)

Parameters:
  • value – The absolute vector

  • reference – The reference pose

Returns:

The absolute point

Transform a relative to an absolute point.

Equivalent to reference.transform_point(value)

Parameters:
  • value – The relative point

  • reference – The reference pose

Returns:

The relative point

Unit vector with a desired orientated.

Parameters:

angle – The desired orientation

Returns:

Vector of norm one and desired orientation

Rotate a two-dimensional vector.

Parameters:
  • vector – The original vector

  • angle – The rotation angle in radians

Returns:

The rotated vector

Clamp the norm of a vector

Parameters:
  • vector – The original vector

  • max_length – The maximum length

Returns:

A vector with the original orientation but norm clamped to max_length.