.. _package-rst-geometry:
======================
Package rst.geometry
======================
*Not documented*
Messages
========
.. container:: mess4ge-multi
.. container:: mess4ge-graph
.. digraph:: message_graph
fontname="Arial";
fontsize=11;
stylesheet="../_static/graphs.css";
node [fontsize=11,fontname="Arial"]
edge [fontsize=11,fontname="Arial"]
"10" [label=<
| AxisAlignedBoundingBox3DFloat |
|
Translation | left_front_bottom |
FLOAT32 | width |
FLOAT32 | depth |
FLOAT32 | height |
>,shape=box,style=filled,fillcolor="white"];
"9" [label=< | BoundingBox3DFloat |
|
Pose | transformation |
FLOAT32 | width |
FLOAT32 | depth |
FLOAT32 | height |
>,shape=box,style=filled,fillcolor="white"];
"4" [label=< | PolygonalPatch3D |
|
Pose | base |
Vec2DFloat | border |
>,shape=box,style=filled,fillcolor="white"];
"8" [label=< | Vec2DFloat |
|
FLOAT32 | x |
FLOAT32 | y |
>,shape=box,style=filled,fillcolor="white"];
"5" [label=< | Pose |
|
Translation | translation |
Rotation | rotation |
>,shape=box,style=filled,fillcolor="white"];
"7" [label=< | Rotation |
|
FLOAT64 | qw |
FLOAT64 | qx |
FLOAT64 | qy |
FLOAT64 | qz |
ASCII-STRING | frame_id |
>,shape=box,style=filled,fillcolor="white"];
"6" [label=< | Translation |
|
FLOAT64 | x |
FLOAT64 | y |
FLOAT64 | z |
ASCII-STRING | frame_id |
>,shape=box,style=filled,fillcolor="white"];
"3" [label=< | SphericalDirectionFloat |
|
FLOAT32 | azimuth |
FLOAT32 | elevation |
>,shape=box,style=filled,fillcolor="white"];
"1" [label=< | BoundingBox |
|
Vec2DInt | top_left |
UINT32 | width |
UINT32 | height |
UINT32 | image_width |
UINT32 | image_height |
>,shape=box,style=filled,fillcolor="white"];
"2" [label=< | Vec2DInt |
|
INT32 | x |
INT32 | y |
>,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" [];
.. container:: mess4ge-list
.. container:: messages
* :ref:`BoundingBox `
* :ref:`SphericalDirectionFloat `
* :ref:`PolygonalPatch3D `
* :ref:`BoundingBox3DFloat `
* :ref:`Pose `
* :ref:`Rotation `
* :ref:`AxisAlignedBoundingBox3DFloat `
* :ref:`Translation `
.. container:: clearer
clearer: should be made invisible via css
.. _message-rst-geometry-boundingbox:
Message BoundingBox
-------------------
.. container:: message-rst-geometry-boundingbox-multi
.. container:: message-rst-geometry-boundingbox-documentation
.. py: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.
.. parsed-literal::
(0,0) Image
+----------------------------------+ ^
| |
| :py:attr:`top_left ` |
| +---------------+ ^ |
| | | |
| | | :py:attr:`height ` | :py:attr:`image_height `
| | | |
| +---------------+ v |
| < :py:attr:`width ` > |
| |
+----------------------------------+ v
< :py:attr:`image_width ` >
All values are in pixels and refer to the associated image.
.. codeauthor:: Johannes Wienke
@create_collection
.. py:attribute:: top_left
:type: :py:class:`rst.math.Vec2DInt`
**Unit**: pixel
Coordinates of the top left corner.
.. py:attribute:: width
:type: :py:class:`UINT32`
**Unit**: pixel
Width of the bounding box.
.. py:attribute:: height
:type: :py:class:`UINT32`
**Unit**: pixel
Height of the bounding box.
.. py:attribute:: image_width
:type: :py:class:`UINT32`
**Unit**: pixel
Width of the image the bounding box is based on.
.. py:attribute:: image_height
:type: :py:class:`UINT32`
**Unit**: pixel
Height of the image the bounding box is based on.
.. container:: message-rst-geometry-boundingbox-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/BoundingBox.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/BoundingBox.proto
:lines: 35-67
:language: protobuf
:emphasize-lines: 7-7,13-13,19-19,25-25,31-31
.. _message-rst-geometry-sphericaldirectionfloat:
Message SphericalDirectionFloat
-------------------------------
.. container:: message-rst-geometry-sphericaldirectionfloat-multi
.. container:: message-rst-geometry-sphericaldirectionfloat-documentation
.. py: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.
.. seealso::
NIL
https://en.wikipedia.org/wiki/Spherical_coordinate_system
.. seealso::
NIL
https://en.wikipedia.org/wiki/Right-hand_rule
.. codeauthor:: Jan Moringen
.. codeauthor:: Johannes Wienke
.. py:attribute:: azimuth
:type: :py:class:`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.
.. py:attribute:: elevation
:type: :py:class:`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".
.. container:: message-rst-geometry-sphericaldirectionfloat-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/sandbox/rst/geometry/SphericalDirectionFloat.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/sandbox/rst/geometry/SphericalDirectionFloat.proto
:lines: 16-34
:language: protobuf
:emphasize-lines: 9-9,17-17
.. _message-rst-geometry-polygonalpatch3d:
Message PolygonalPatch3D
------------------------
.. container:: message-rst-geometry-polygonalpatch3d-multi
.. container:: message-rst-geometry-polygonalpatch3d-documentation
.. py: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 :py:class:`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.
.. codeauthor:: Leon Ziegler
.. py:attribute:: base
:type: :py:class:`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).
.. py:attribute:: border
:type: array of :py:class:`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.
.. container:: message-rst-geometry-polygonalpatch3d-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/PolygonalPatch3D.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/PolygonalPatch3D.proto
:lines: 27-49
:language: protobuf
:emphasize-lines: 7-7,21-21
.. _message-rst-geometry-boundingbox3dfloat:
Message BoundingBox3DFloat
--------------------------
.. container:: message-rst-geometry-boundingbox3dfloat-multi
.. container:: message-rst-geometry-boundingbox3dfloat-documentation
.. py:class:: rst.geometry.BoundingBox3DFloat
Bounding-box in 3D in general position and orientation.
The general bounding-box with dimensions :py:attr:`width ` x :py:attr:`depth `
x :py:attr:`height ` is constructed by translating and rotating (via :py:attr:`transformation `) an axis-aligned bounding-box around its center of
mass.
For an axis-aligned version, see :py:class:`AxisAlignedBoundingBox3DFloat `.
.. codeauthor:: Christian Emmerich
.. codeauthor:: Jan Moringen
.. py:attribute:: transformation
:type: :py:class:`rst.geometry.Pose`
Transformation, consisting of translation and orientation, of
the center of mass of the bounding-box.
.. py:attribute:: width
:type: :py:class:`FLOAT32`
**Unit**: meter
The width (along the X axis) of the box.
.. py:attribute:: depth
:type: :py:class:`FLOAT32`
**Unit**: meter
The depth (along the Y axis) of the box.
.. py:attribute:: height
:type: :py:class:`FLOAT32`
**Unit**: meter
The height (along the Z axis) of the box.
.. container:: message-rst-geometry-boundingbox3dfloat-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/BoundingBox3DFloat.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/BoundingBox3DFloat.proto
:lines: 22-48
:language: protobuf
:emphasize-lines: 7-7,13-13,19-19,25-25
.. _message-rst-geometry-pose:
Message Pose
------------
.. container:: message-rst-geometry-pose-multi
.. container:: message-rst-geometry-pose-documentation
.. py:class:: rst.geometry.Pose
Represents the pose (translation and rotation) of something in a
coordinate system.
.. codeauthor:: Arne Nordmann
@create_collection
.. py:attribute:: translation
:type: :py:class:`rst.geometry.Translation`
The translation of the object with respect to the origin of the
coordinate system.
.. py:attribute:: rotation
:type: :py:class:`rst.geometry.Rotation`
The rotation of the object at the position described by
:py:attr:`translation ` with respect to the coordinate system.
.. container:: message-rst-geometry-pose-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Pose.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Pose.proto
:lines: 15-29
:language: protobuf
:emphasize-lines: 7-7,13-13
.. _message-rst-geometry-rotation:
Message Rotation
----------------
.. container:: message-rst-geometry-rotation-multi
.. container:: message-rst-geometry-rotation-documentation
.. py: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).
.. codeauthor:: Arne Nordmann
@create_collection
.. py:attribute:: qw
:type: :py:class:`FLOAT64`
Angle component of the quaternion.
.. py:attribute:: qx
:type: :py:class:`FLOAT64`
Defines the orientation of the turning axis wrt. the X axis of
the world (or the frame specified in :py:attr:`frame_id `).
.. py:attribute:: qy
:type: :py:class:`FLOAT64`
Defines the orientation of the turning axis wrt. the Y axis of
the world (or the frame specified in :py:attr:`frame_id `).
.. py:attribute:: qz
:type: :py:class:`FLOAT64`
Defines the orientation of the turning axis wrt. the Y axis of
the world (or the frame specified in :py:attr:`frame_id `).
.. py:attribute:: frame_id
:type: :py:class:`ASCII-STRING`
Identifier for the coordinate frame of the rotation.
.. container:: message-rst-geometry-rotation-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Rotation.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Rotation.proto
:lines: 16-46
:language: protobuf
:emphasize-lines: 6-6,12-12,18-18,24-24,29-29
.. _message-rst-geometry-axisalignedboundingbox3dfloat:
Message AxisAlignedBoundingBox3DFloat
-------------------------------------
.. container:: message-rst-geometry-axisalignedboundingbox3dfloat-multi
.. container:: message-rst-geometry-axisalignedboundingbox3dfloat-documentation
.. py:class:: rst.geometry.AxisAlignedBoundingBox3DFloat
An axis-aligned bounding-box in 3D.
The bounding-box is constructed by spanning at :py:attr:`left_front_bottom ` a rectangular volume of lengths :py:attr:`width ` x
:py:attr:`depth ` x :py:attr:`height ` along the positive directions of the X,
Y and Z axis respectively.
.. parsed-literal::
^ Z
|
| +----------------------+ ^
| / /|
| / / |
| / / | :py:attr:`height `
| +----------------------+ |
| | | |
| | | + v
| Y | | / ^
| ^ | | / :py:attr:`depth `
| / | |/
| / +----------------------+ v
| / :py:attr:`left_front_bottom `
| / < :py:attr:`width ` >
|/
+-----------------------------> X
For a bouding-box in general orientation (i.e. not axis-aligned)
see :py:class:`BoundingBox3DFloat `.
.. codeauthor:: Christian Emmerich
.. codeauthor:: Jan Moringen
@create_collection
.. py:attribute:: left_front_bottom
:type: :py:class:`rst.geometry.Translation`
Coordinates of the bottom left front corner.
.. py:attribute:: width
:type: :py:class:`FLOAT32`
**Unit**: meter
The width (along the X axis) of the box.
.. py:attribute:: depth
:type: :py:class:`FLOAT32`
**Unit**: meter
The depth (along the Y axis) of the box.
.. py:attribute:: height
:type: :py:class:`FLOAT32`
**Unit**: meter
The height (along the Z axis) of the box.
.. container:: message-rst-geometry-axisalignedboundingbox3dfloat-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/AxisAlignedBoundingBox3DFloat.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/AxisAlignedBoundingBox3DFloat.proto
:lines: 42-67
:language: protobuf
:emphasize-lines: 6-6,12-12,18-18,24-24
.. _message-rst-geometry-translation:
Message Translation
-------------------
.. container:: message-rst-geometry-translation-multi
.. container:: message-rst-geometry-translation-documentation
.. py: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.
.. codeauthor:: Arne Nordmann
@create_collection
.. py:attribute:: x
:type: :py:class:`FLOAT64`
**Unit**: meter
Cartesian displacement along the x axis
.. py:attribute:: y
:type: :py:class:`FLOAT64`
**Unit**: meter
Cartesian displacement along the y axis
.. py:attribute:: z
:type: :py:class:`FLOAT64`
**Unit**: meter
Cartesian displacement along the z axis
.. py:attribute:: frame_id
:type: :py:class:`ASCII-STRING`
Identifier for the coordinate frame of the rotation.
.. container:: message-rst-geometry-translation-source
:download:`Download this file /home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Translation.proto>`
.. literalinclude:: //home/jenkins/workspace/rst-manual-0.14-merge-simulator/upstream/RST-0.14.2-Linux/share/rst0.14/proto/stable/rst/geometry/Translation.proto
:lines: 14-38
:language: protobuf
:emphasize-lines: 7-7,13-13,19-19,24-24