.. _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
Translationleft_front_bottom
FLOAT32width
FLOAT32depth
FLOAT32height
>,shape=box,style=filled,fillcolor="white"]; "9" [label=<
BoundingBox3DFloat
Posetransformation
FLOAT32width
FLOAT32depth
FLOAT32height
>,shape=box,style=filled,fillcolor="white"]; "4" [label=<
PolygonalPatch3D
Posebase
Vec2DFloatborder
>,shape=box,style=filled,fillcolor="white"]; "8" [label=<
Vec2DFloat
FLOAT32x
FLOAT32y
>,shape=box,style=filled,fillcolor="white"]; "5" [label=<
Pose
Translationtranslation
Rotationrotation
>,shape=box,style=filled,fillcolor="white"]; "7" [label=<
Rotation
FLOAT64qw
FLOAT64qx
FLOAT64qy
FLOAT64qz
ASCII-STRINGframe_id
>,shape=box,style=filled,fillcolor="white"]; "6" [label=<
Translation
FLOAT64x
FLOAT64y
FLOAT64z
ASCII-STRINGframe_id
>,shape=box,style=filled,fillcolor="white"]; "3" [label=<
SphericalDirectionFloat
FLOAT32azimuth
FLOAT32elevation
>,shape=box,style=filled,fillcolor="white"]; "1" [label=<
BoundingBox
Vec2DInttop_left
UINT32width
UINT32height
UINT32image_width
UINT32image_height
>,shape=box,style=filled,fillcolor="white"]; "2" [label=<
Vec2DInt
INT32x
INT32y
>,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 ` .. 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 ` .. 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 ` .. 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 ` .. 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 ` .. 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 ` .. 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 ` .. 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 ` .. 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