Package rst.geometry

Not documented

Messages

digraph message_graph { fontname="Arial"; fontsize=11; stylesheet="../_static/graphs.css"; node [fontsize=11,fontname="Arial"] edge [fontsize=11,fontname="Arial"] "10" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.AxisAlignedBoundingBox3DFloat" TITLE="Structure rst.geometry.AxisAlignedBoundingBox3DFloat" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">AxisAlignedBoundingBox3DFloat</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation" TITLE="Structure rst.geometry.Translation" TARGET="_parent">Translation</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.AxisAlignedBoundingBox3DFloat.left_front_bottom" TITLE="Field rst.geometry.AxisAlignedBoundingBox3DFloat.left_front_bottom" TARGET="_parent" PORT="left_front_bottom">left_front_bottom</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.AxisAlignedBoundingBox3DFloat.width" TITLE="Field rst.geometry.AxisAlignedBoundingBox3DFloat.width" TARGET="_parent" PORT="width">width</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.AxisAlignedBoundingBox3DFloat.depth" TITLE="Field rst.geometry.AxisAlignedBoundingBox3DFloat.depth" TARGET="_parent" PORT="depth">depth</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.AxisAlignedBoundingBox3DFloat.height" TITLE="Field rst.geometry.AxisAlignedBoundingBox3DFloat.height" TARGET="_parent" PORT="height">height</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "9" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox3DFloat" TITLE="Structure rst.geometry.BoundingBox3DFloat" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">BoundingBox3DFloat</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Pose" TITLE="Structure rst.geometry.Pose" TARGET="_parent">Pose</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox3DFloat.transformation" TITLE="Field rst.geometry.BoundingBox3DFloat.transformation" TARGET="_parent" PORT="transformation">transformation</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox3DFloat.width" TITLE="Field rst.geometry.BoundingBox3DFloat.width" TARGET="_parent" PORT="width">width</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox3DFloat.depth" TITLE="Field rst.geometry.BoundingBox3DFloat.depth" TARGET="_parent" PORT="depth">depth</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox3DFloat.height" TITLE="Field rst.geometry.BoundingBox3DFloat.height" TARGET="_parent" PORT="height">height</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "4" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.PolygonalPatch3D" TITLE="Structure rst.geometry.PolygonalPatch3D" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">PolygonalPatch3D</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Pose" TITLE="Structure rst.geometry.Pose" TARGET="_parent">Pose</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.PolygonalPatch3D.base" TITLE="Field rst.geometry.PolygonalPatch3D.base" TARGET="_parent" PORT="base">base</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DFloat" TITLE="Structure rst.math.Vec2DFloat" TARGET="_parent">Vec2DFloat</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.PolygonalPatch3D.border" TITLE="Field rst.geometry.PolygonalPatch3D.border" TARGET="_parent" PORT="border">border</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "8" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DFloat" TITLE="Structure rst.math.Vec2DFloat" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">Vec2DFloat</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DFloat.x" TITLE="Field rst.math.Vec2DFloat.x" TARGET="_parent" PORT="x">x</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DFloat.y" TITLE="Field rst.math.Vec2DFloat.y" TARGET="_parent" PORT="y">y</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "5" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Pose" TITLE="Structure rst.geometry.Pose" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">Pose</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation" TITLE="Structure rst.geometry.Translation" TARGET="_parent">Translation</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Pose.translation" TITLE="Field rst.geometry.Pose.translation" TARGET="_parent" PORT="translation">translation</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation" TITLE="Structure rst.geometry.Rotation" TARGET="_parent">Rotation</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Pose.rotation" TITLE="Field rst.geometry.Pose.rotation" TARGET="_parent" PORT="rotation">rotation</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "7" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation" TITLE="Structure rst.geometry.Rotation" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">Rotation</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation.qw" TITLE="Field rst.geometry.Rotation.qw" TARGET="_parent" PORT="qw">qw</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation.qx" TITLE="Field rst.geometry.Rotation.qx" TARGET="_parent" PORT="qx">qx</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation.qy" TITLE="Field rst.geometry.Rotation.qy" TARGET="_parent" PORT="qy">qy</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation.qz" TITLE="Field rst.geometry.Rotation.qz" TARGET="_parent" PORT="qz">qz</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-ASCII-STRING.html#ASCII-STRING" TITLE="Fundamental ASCII-STRING" TARGET="_parent">ASCII-STRING</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Rotation.frame_id" TITLE="Field rst.geometry.Rotation.frame_id" TARGET="_parent" PORT="frame_id">frame_id</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "6" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation" TITLE="Structure rst.geometry.Translation" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">Translation</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation.x" TITLE="Field rst.geometry.Translation.x" TARGET="_parent" PORT="x">x</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation.y" TITLE="Field rst.geometry.Translation.y" TARGET="_parent" PORT="y">y</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-FLOAT64.html#FLOAT64" TITLE="Fundamental FLOAT64" TARGET="_parent">FLOAT64</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation.z" TITLE="Field rst.geometry.Translation.z" TARGET="_parent" PORT="z">z</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-ASCII-STRING.html#ASCII-STRING" TITLE="Fundamental ASCII-STRING" TARGET="_parent">ASCII-STRING</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.Translation.frame_id" TITLE="Field rst.geometry.Translation.frame_id" TARGET="_parent" PORT="frame_id">frame_id</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "3" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/sandbox/package-rst-geometry.html#rst.geometry.SphericalDirectionFloat" TITLE="Structure rst.geometry.SphericalDirectionFloat" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message-sandbox.svg"></IMG></TD><TD ALIGN="left">SphericalDirectionFloat</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/sandbox/package-rst-geometry.html#rst.geometry.SphericalDirectionFloat.azimuth" TITLE="Field rst.geometry.SphericalDirectionFloat.azimuth" TARGET="_parent" PORT="azimuth">azimuth</TD></TR><TR><TD ALIGN="left" HREF="../generated/sandbox/package-__rosetta-FLOAT32.html#FLOAT32" TITLE="Fundamental FLOAT32" TARGET="_parent">FLOAT32</TD><TD ALIGN="left" HREF="../generated/sandbox/package-rst-geometry.html#rst.geometry.SphericalDirectionFloat.elevation" TITLE="Field rst.geometry.SphericalDirectionFloat.elevation" TARGET="_parent" PORT="elevation">elevation</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "1" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox" TITLE="Structure rst.geometry.BoundingBox" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">BoundingBox</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DInt" TITLE="Structure rst.math.Vec2DInt" TARGET="_parent">Vec2DInt</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox.top_left" TITLE="Field rst.geometry.BoundingBox.top_left" TARGET="_parent" PORT="top_left">top_left</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-UINT32.html#UINT32" TITLE="Fundamental UINT32" TARGET="_parent">UINT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox.width" TITLE="Field rst.geometry.BoundingBox.width" TARGET="_parent" PORT="width">width</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-UINT32.html#UINT32" TITLE="Fundamental UINT32" TARGET="_parent">UINT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox.height" TITLE="Field rst.geometry.BoundingBox.height" TARGET="_parent" PORT="height">height</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-UINT32.html#UINT32" TITLE="Fundamental UINT32" TARGET="_parent">UINT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox.image_width" TITLE="Field rst.geometry.BoundingBox.image_width" TARGET="_parent" PORT="image_width">image_width</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-UINT32.html#UINT32" TITLE="Fundamental UINT32" TARGET="_parent">UINT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-geometry.html#rst.geometry.BoundingBox.image_height" TITLE="Field rst.geometry.BoundingBox.image_height" TARGET="_parent" PORT="image_height">image_height</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "2" [label=<<TABLE BORDER="0"><TR><TD COLSPAN="2" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DInt" TITLE="Structure rst.math.Vec2DInt" TARGET="_parent"><TABLE BORDER="0"><TR><TD ALIGN="right"><IMG SRC="../_static/message.svg"></IMG></TD><TD ALIGN="left">Vec2DInt</TD></TR></TABLE></TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-INT32.html#INT32" TITLE="Fundamental INT32" TARGET="_parent">INT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DInt.x" TITLE="Field rst.math.Vec2DInt.x" TARGET="_parent" PORT="x">x</TD></TR><TR><TD ALIGN="left" HREF="../generated/stable/package-__rosetta-INT32.html#INT32" TITLE="Fundamental INT32" TARGET="_parent">INT32</TD><TD ALIGN="left" HREF="../generated/stable/package-rst-math.html#rst.math.Vec2DInt.y" TITLE="Field rst.math.Vec2DInt.y" TARGET="_parent" PORT="y">y</TD></TR></TABLE>>,shape=box,style=filled,fillcolor="white"]; "10":left_front_bottom -> "6" []; "9":transformation -> "5" []; "4":border -> "8" []; "4":base -> "5" []; "5":rotation -> "7" []; "5":translation -> "6" []; "1":top_left -> "2" []; }

Message BoundingBox

class rst.geometry.BoundingBox

Constraint: .top_left.x < .image_width

Constraint: .top_left.x + .width <= .image_width

Constraint: .top_left.y < .image_height

Constraint: .top_left.y + .height <= .image_height

A bounding box, which is associated to a raster image.

(0,0)           Image
+----------------------------------+ ^
|                                  |
|    top_left                    |
|    +---------------+ ^           |
|    |               |             |
|    |               | height    | image_height
|    |               |             |
|    +---------------+ v           |
|    <    width     >            |
|                                  |
+----------------------------------+ v
<         image_width            >

All values are in pixels and refer to the associated image.

Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>

@create_collection

top_left
Type:rst.math.Vec2DInt

Unit: pixel

Coordinates of the top left corner.

width
Type:UINT32

Unit: pixel

Width of the bounding box.

height
Type:UINT32

Unit: pixel

Height of the bounding box.

image_width
Type:UINT32

Unit: pixel

Width of the image the bounding box is based on.

image_height
Type:UINT32

Unit: pixel

Height of the image the bounding box is based on.

Download this file

message BoundingBox {

    /**
     * Coordinates of the top left corner.
     */
    // @unit(pixel)
    required math.Vec2DInt top_left = 1;

    /**
     * Width of the bounding box.
     */
    // @unit(pixel)
    required uint32 width = 2;

    /**
     * Height of the bounding box.
     */
    // @unit(pixel)
    required uint32 height = 3;

    /**
     * Width of the image the bounding box is based on.
     */
    // @unit(pixel)
    optional uint32 image_width = 4;

    /**
     * Height of the image the bounding box is based on.
     */
    // @unit(pixel)
    optional uint32 image_height = 5;

}

Message SphericalDirectionFloat

class rst.geometry.SphericalDirectionFloat

Describes a direction using two angles in a spherical coordinate system which is grounded in a right-handed 3D Cartesian coordinate system. Rotations follow the right-hand rule.

Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>

Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>

azimuth
Type:FLOAT32

Unit: radian

Describes the rotation around the z axis of the underlying Cartesian coordinate system. A value of 0 zero points into the positive direction of the X axis.

elevation
Type:FLOAT32

Unit: radian

elevation angle with respect to the X-Y plane of the reference Cartesian coordinate system. A value of 0 points towards the “horizon”.

Download this file

message SphericalDirectionFloat {

    /**
     * Describes the rotation around the z axis of the underlying
     * Cartesian coordinate system. A value of 0 zero points into the
     * positive direction of the X axis.
     */
    // @unit(radian)
    required float azimuth = 1;

    /**
     * elevation angle with respect to the X-Y plane of the reference
     * Cartesian coordinate system. A value of 0 points towards the
     * "horizon".
     */
    // @unit(radian)
    required float elevation = 2;

}

Message PolygonalPatch3D

class rst.geometry.PolygonalPatch3D

A two-dimensional patch in 3D space bounded by a polygon.

In contrast to planes (with infinite extend) this kind of bounded patch needs a local coordinate system in order to define the borders of the patch. Thus, instead of the widely used point-normal representation, we use a complete 6D pose for describing the location of the plane. We define that the X and Y axes of the resulting coordinate system span the plane. Accordingly, the Z axis corresponds to the normal on the plane. The patch border is a 2D polygon defined by a sequence of Vec2DFloat objects.

In order to construct a 3D representation of the patch, the 2D coordinates of the polygon must be extended by a Z = 0 coordinate and transformed using the 6D pose. The polygon must not be self intersecting.

Code author: Leon Ziegler <lziegler@techfak.uni-bielefeld.de>

base
Type:rst.geometry.Pose

The 6D transformation specifying the base (X and Y axes span the plane in which the patch and its bounding polygon reside).

border
Type:array of rst.math.Vec2DFloat

Constraint: len(value) >= 3

The 2D polygon defining the border of the patch.

Winding rule: ccw w.r.t. normal (Z axis) (right-hand rule)

Linear segments arise by connecting consecutive entries of the array (including an additional implicit segment connecting the last entry to the first entry).

Order of entries is significant.

Download this file

message PolygonalPatch3D {

    /**
     * The 6D transformation specifying the base (X and Y axes span
     * the plane in which the patch and its bounding polygon reside).
     */
    required Pose base = 1;

    /**
     * The 2D polygon defining the border of the patch.
     *
     * Winding rule: ccw w.r.t. normal (Z axis) (right-hand rule)
     *
     * Linear segments arise by connecting consecutive entries of the
     * array (including an additional implicit segment connecting the
     * last entry to the first entry).
     *
     * Order of entries is significant.
     */
    // @constraint(len(value) >= 3)
    repeated math.Vec2DFloat border = 2;

}

Message BoundingBox3DFloat

class rst.geometry.BoundingBox3DFloat

Bounding-box in 3D in general position and orientation.

The general bounding-box with dimensions width x depth x height is constructed by translating and rotating (via transformation) an axis-aligned bounding-box around its center of mass.

For an axis-aligned version, see AxisAlignedBoundingBox3DFloat.

Code author: Christian Emmerich <cemmeric@cor-lab.de>

Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>

transformation
Type:rst.geometry.Pose

Transformation, consisting of translation and orientation, of the center of mass of the bounding-box.

width
Type:FLOAT32

Unit: meter

The width (along the X axis) of the box.

depth
Type:FLOAT32

Unit: meter

The depth (along the Y axis) of the box.

height
Type:FLOAT32

Unit: meter

The height (along the Z axis) of the box.

Download this file

message BoundingBox3DFloat {

    /**
     * Transformation, consisting of translation and orientation, of
     * the center of mass of the bounding-box.
     */
    required geometry.Pose transformation = 1;

    /**
     * The width (along the X axis) of the box.
     */
    // @unit(meter)
    required float width = 2;

    /**
     * The depth (along the Y axis) of the box.
     */
    // @unit(meter)
    required float depth = 3;

    /**
     * The height (along the Z axis) of the box.
     */
    // @unit(meter)
    required float height = 4;

}

Message Pose

class rst.geometry.Pose

Represents the pose (translation and rotation) of something in a coordinate system.

Code author: Arne Nordmann <anordman@techfak.uni-bielefeld.de>

@create_collection

translation
Type:rst.geometry.Translation

The translation of the object with respect to the origin of the coordinate system.

rotation
Type:rst.geometry.Rotation

The rotation of the object at the position described by translation with respect to the coordinate system.

Download this file

message Pose {

    /**
     * The translation of the object with respect to the origin of the
     * coordinate system.
     */
    required Translation translation = 1;

    /**
     * The rotation of the object at the position described by
     * @ref .translation with respect to the coordinate system.
     */
    required Rotation rotation = 2;

}

Message Rotation

class rst.geometry.Rotation

Constraint: .qw x .qw + .qx x .qx + .qy x .qy + .qz x .qz = 1

Cartesian 3-dimensional rotatory displacement or orientation.

The displacement or orientation (orientation being a rotation from an origin) is in world coordinates and expressed as unit quaternion (all-zero quaternion denotes an invalid orientation/rotation).

Code author: Arne Nordmann <anordman@cor-lab.uni-bielefeld.de>

@create_collection

qw
Type:FLOAT64

Angle component of the quaternion.

qx
Type:FLOAT64

Defines the orientation of the turning axis wrt. the X axis of the world (or the frame specified in frame_id).

qy
Type:FLOAT64

Defines the orientation of the turning axis wrt. the Y axis of the world (or the frame specified in frame_id).

qz
Type:FLOAT64

Defines the orientation of the turning axis wrt. the Y axis of the world (or the frame specified in frame_id).

frame_id
Type:ASCII-STRING

Identifier for the coordinate frame of the rotation.

Download this file

message Rotation {

    /**
     * Angle component of the quaternion.
     */
    required double qw = 4;

    /**
     * Defines the orientation of the turning axis wrt. the X axis of
     * the world (or the frame specified in @ref .frame_id).
     */
    required double qx = 5;

    /**
     * Defines the orientation of the turning axis wrt. the Y axis of
     * the world (or the frame specified in @ref .frame_id).
     */
    required double qy = 6;

    /**
     * Defines the orientation of the turning axis wrt. the Y axis of
     * the world (or the frame specified in @ref .frame_id).
     */
    required double qz = 7;

    /**
     * Identifier for the coordinate frame of the rotation.
     */
    optional string frame_id = 8;

}

Message AxisAlignedBoundingBox3DFloat

class rst.geometry.AxisAlignedBoundingBox3DFloat

An axis-aligned bounding-box in 3D.

The bounding-box is constructed by spanning at left_front_bottom a rectangular volume of lengths width x depth x height along the positive directions of the X, Y and Z axis respectively.

^ Z
|
|            +----------------------+ ^
|           /                      /|
|          /                      / |
|         /                      /  | height
|        +----------------------+   |
|        |                      |   |
|        |                      |   + v
|     Y  |                      |  / ^
|     ^  |                      | / depth
|    /   |                      |/
|   /    +----------------------+ v
|  /     left_front_bottom
| /      <     width      >
|/
+-----------------------------> X

For a bouding-box in general orientation (i.e. not axis-aligned) see BoundingBox3DFloat.

Code author: Christian Emmerich <cemmeric@cor-lab.de>

Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>

@create_collection

left_front_bottom
Type:rst.geometry.Translation

Coordinates of the bottom left front corner.

width
Type:FLOAT32

Unit: meter

The width (along the X axis) of the box.

depth
Type:FLOAT32

Unit: meter

The depth (along the Y axis) of the box.

height
Type:FLOAT32

Unit: meter

The height (along the Z axis) of the box.

Download this file

message AxisAlignedBoundingBox3DFloat {

    /**
     * Coordinates of the bottom left front corner.
     */
    required geometry.Translation left_front_bottom = 1;

    /**
     * The width (along the X axis) of the box.
     */
    // @unit(meter)
    required float width = 2;

    /**
     * The depth (along the Y axis) of the box.
     */
    // @unit(meter)
    required float depth = 3;

    /**
     * The height (along the Z axis) of the box.
     */
    // @unit(meter)
    required float height = 4;

}

Message Translation

class rst.geometry.Translation

Cartesian 3-dimensional translatory displacement or position.

The displacement or position (position being translation from an origin) is expressed in world coordinates.

Code author: Arne Nordmann <anordman@cor-lab.uni-bielefeld.de>

@create_collection

x
Type:FLOAT64

Unit: meter

Cartesian displacement along the x axis

y
Type:FLOAT64

Unit: meter

Cartesian displacement along the y axis

z
Type:FLOAT64

Unit: meter

Cartesian displacement along the z axis

frame_id
Type:ASCII-STRING

Identifier for the coordinate frame of the rotation.

Download this file

message Translation {

    /**
     * Cartesian displacement along the x axis
     */
    // @unit(meter)
    required double x = 1;

    /**
     * Cartesian displacement along the y axis
     */
    // @unit(meter)
    required double y = 2;

    /**
     * Cartesian displacement along the z axis
     */
    // @unit(meter)
    required double z = 3;

    /**
     * Identifier for the coordinate frame of the rotation.
     */
    optional string frame_id = 8;
}