Package rst.geometry¶
Geometry is a branch of mathematics concerned with questions of shape, size, relative position of figures, and the properties of space.
This package contains data types which represent geometrical objects.
See also
- Wikipedia article containing the definition above
- http://en.wikipedia.org/wiki/Geometry
See also
- Corresponding data types in ROS
- http://www.ros.org/wiki/geometry_msgs
Messages¶
- PointCloud2DIntCollection
- TranslationCollection
- BoundingBoxCollection
- RotationCollection
- AxisAlignedBoundingBox3DFloatCollection
- CameraPoseCollection
- LengthsCollection
- PoseCollection
- PointPairCollection
- ViewFrustumCollection
- Shape3DFloatCollection
- FieldOfViewCollection
- PointCloud2DInt
- PointCloudSet3DFloat
- PolygonalPatch3DSet
- TriangleMesh3DFloatSet
- TriangleMesh3DFloat
- Cylinder3DFloatSet
- BoundingBox3DFloatSet
- Lengths
- PointPair
- PolygonalPatch3D
- Cylinder3DFloat
- SphericalDirectionFloat
- PointCloud3DFloat
- CameraPose
- ViewFrustum
- FieldOfView
- Shape3DFloat
- BoundingBox
- BoundingBox3DFloat
- Pose
- Rotation
- AxisAlignedBoundingBox3DFloat
- Translation
Message PointCloud2DIntCollection¶
-
class
rst.geometry.
PointCloud2DIntCollection
¶ Collection of
PointCloud2DInt
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.PointCloud2DInt
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message PointCloud2DIntCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated PointCloud2DInt element = 1;
}
Message TranslationCollection¶
-
class
rst.geometry.
TranslationCollection
¶ Collection of
Translation
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.Translation
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message TranslationCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated Translation element = 1;
}
Message BoundingBoxCollection¶
-
class
rst.geometry.
BoundingBoxCollection
¶ Collection of
BoundingBox
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.BoundingBox
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message BoundingBoxCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated BoundingBox element = 1;
}
Message RotationCollection¶
-
class
rst.geometry.
RotationCollection
¶ Collection of
Rotation
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.Rotation
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message RotationCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated Rotation element = 1;
}
Message AxisAlignedBoundingBox3DFloatCollection¶
-
class
rst.geometry.
AxisAlignedBoundingBox3DFloatCollection
¶ Collection of
AxisAlignedBoundingBox3DFloat
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.AxisAlignedBoundingBox3DFloat
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message AxisAlignedBoundingBox3DFloatCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated AxisAlignedBoundingBox3DFloat element = 1;
}
Message CameraPoseCollection¶
-
class
rst.geometry.
CameraPoseCollection
¶ Collection of
CameraPose
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.CameraPose
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message CameraPoseCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated CameraPose element = 1;
}
Message LengthsCollection¶
-
class
rst.geometry.
LengthsCollection
¶ Collection of
Lengths
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.Lengths
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message LengthsCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated Lengths element = 1;
}
Message PoseCollection¶
-
class
rst.geometry.
PoseCollection
¶ Collection of
Pose
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.Pose
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message PoseCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated Pose element = 1;
}
Message PointPairCollection¶
-
class
rst.geometry.
PointPairCollection
¶ Collection of
PointPair
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.PointPair
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message PointPairCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated PointPair element = 1;
}
Message ViewFrustumCollection¶
-
class
rst.geometry.
ViewFrustumCollection
¶ Collection of
ViewFrustum
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.ViewFrustum
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message ViewFrustumCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated ViewFrustum element = 1;
}
Message Shape3DFloatCollection¶
-
class
rst.geometry.
Shape3DFloatCollection
¶ Collection of
Shape3DFloat
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.Shape3DFloat
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message Shape3DFloatCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated Shape3DFloat element = 1;
}
Message FieldOfViewCollection¶
-
class
rst.geometry.
FieldOfViewCollection
¶ Collection of
FieldOfView
instances.Auto-generated.
-
element
¶ Type: array of rst.geometry.FieldOfView
The individual elements of the collection.
Constraints regarding the empty collection, sorting, duplicated entries etc. are use case specific.
-
message FieldOfViewCollection {
/**
* The individual elements of the collection.
*
* Constraints regarding the empty collection, sorting, duplicated
* entries etc. are use case specific.
*/
repeated FieldOfView element = 1;
}
Message PointCloud2DInt¶
-
class
rst.geometry.
PointCloud2DInt
¶ A collection of points in 2D space.
Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
@create_collection
-
points
¶ Type: array of rst.math.Vec2DInt
The points.
Duplicate entries should be avoided. Order of entries is not significant.
-
message PointCloud2DInt {
/**
* The points.
*
* Duplicate entries should be avoided.
* Order of entries is not significant.
*/
repeated math.Vec2DInt points = 1;
}
Message PointCloudSet3DFloat¶
-
class
rst.geometry.
PointCloudSet3DFloat
¶ A set of 3D Point clouds.
Code author: Christian Emmerich <cemmeric@cor-lab.de>
-
clouds
¶ Type: array of rst.geometry.PointCloud3DFloat
Empty collection of clouds is allowed. The order of cloud objects is not significant.
-
message PointCloudSet3DFloat {
/**
* Empty collection of clouds is allowed.
* The order of cloud objects is not significant.
*/
repeated geometry.PointCloud3DFloat clouds = 1;
}
Message PolygonalPatch3DSet¶
-
class
rst.geometry.
PolygonalPatch3DSet
¶ A set of
PolygonalPatch3D
objects.Code author: Leon Ziegler <lziegler@techfak.uni-bielefeld.de>
-
patches
¶ Type: array of rst.geometry.PolygonalPatch3D
Empty collection is allowed. Order is not important.
-
message PolygonalPatch3DSet {
/**
* Empty collection is allowed. Order is not important.
*/
repeated PolygonalPatch3D patches = 1;
}
Message TriangleMesh3DFloatSet¶
-
class
rst.geometry.
TriangleMesh3DFloatSet
¶ A set of
TriangleMesh3DFloat
objects.Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
meshes
¶ Type: array of rst.geometry.TriangleMesh3DFloat
Empty collection is allowed. Order is not important.
-
message TriangleMesh3DFloatSet {
/**
* Empty collection is allowed. Order is not important.
*/
repeated TriangleMesh3DFloat meshes = 1;
}
Message TriangleMesh3DFloat¶
-
class
rst.geometry.
TriangleMesh3DFloat
¶ Defines a triangle mesh for describing 3D objects through vertices and their assembly to triangles. Edges are therefore only implicitly defined through the definitions of the triangles. Other typical mesh properties like faces, and surfaces are not defined.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
-
vertices
¶ Type: rst.geometry.PointCloud3DFloat
The collection of vertices in the mesh.
-
triangles
¶ Type: array of rst.geometry.TriangleMesh3DFloat.Triangle
Defines the triangles that form the mesh in the form of 3-tuples to indexes in the vertices point cloud. No particular ordering is assumed here.
-
message TriangleMesh3DFloat {
/**
* The collection of vertices in the mesh.
*/
required PointCloud3DFloat vertices = 1;
/**
* Definition of a single triangle in a mesh by means of indices to the
* vertex point cloud for all corners of the triangle. Vertices are indexed
* in counter-clockwise order to define a normal of the triangle that
* points outwards.
*/
message Triangle {
/**
* Index of the first vertex defining the triangle.
*/
required uint32 point1 = 1;
/**
* Index of the second vertex defining the triangle.
*/
required uint32 point2 = 2;
/**
* Index of the third vertex defining the triangle.
*/
required uint32 point3 = 3;
}
/**
* Defines the triangles that form the mesh in the form of 3-tuples to
* indexes in the vertices point cloud. No particular ordering is assumed
* here.
*/
repeated Triangle triangles = 2;
}
Message Triangle¶
-
class
rst.geometry.TriangleMesh3DFloat.
Triangle
¶ Definition of a single triangle in a mesh by means of indices to the vertex point cloud for all corners of the triangle. Vertices are indexed in counter-clockwise order to define a normal of the triangle that points outwards.
-
point1
¶ Type: UINT32
Index of the first vertex defining the triangle.
-
point2
¶ Type: UINT32
Index of the second vertex defining the triangle.
-
point3
¶ Type: UINT32
Index of the third vertex defining the triangle.
-
message Triangle {
/**
* Index of the first vertex defining the triangle.
*/
required uint32 point1 = 1;
/**
* Index of the second vertex defining the triangle.
*/
required uint32 point2 = 2;
/**
* Index of the third vertex defining the triangle.
*/
required uint32 point3 = 3;
}
Message Cylinder3DFloatSet¶
-
class
rst.geometry.
Cylinder3DFloatSet
¶ A set of
Cylinder3DFloat
objects.Code author: Christian Emmerich <cemmeric@cor-lab.de>
-
cylinders
¶ Type: array of rst.geometry.Cylinder3DFloat
Empty collection of cylinders is allowed. The order of cylinders is not significant.
-
message Cylinder3DFloatSet {
/**
* Empty collection of cylinders is allowed.
* The order of cylinders is not significant.
*/
repeated geometry.Cylinder3DFloat cylinders = 1;
}
Message BoundingBox3DFloatSet¶
-
class
rst.geometry.
BoundingBox3DFloatSet
¶ A set of
BoundingBox3DFloat
objects.Code author: Christian Emmerich <cemmeric@cor-lab.de>
-
boxes
¶ Type: array of rst.geometry.BoundingBox3DFloat
Empty collection of boxes is allowed. The order of box objects is not significant.
-
message BoundingBox3DFloatSet {
/**
* Empty collection of boxes is allowed.
* The order of box objects is not significant.
*/
repeated geometry.BoundingBox3DFloat boxes = 1;
}
Message Lengths¶
-
class
rst.geometry.
Lengths
¶ A sequence of length measurements (e.g. length of a link in a kinematics chain).
Code author: Arne Nordmann <anordman@techfak.uni-bielefeld.de>
@create_collection
-
lengths
¶ Type: array of FLOAT64
Unit: meter
-
message Lengths {
// @unit(meter)
repeated double lengths = 1;
}
Message PointPair¶
-
class
rst.geometry.
PointPair
¶ A pair of 2D Points with float entries.
Code author: Jordi Sanchez <Riera> <jordi.sanchez-riera@inrialpes.fr>
@create_collection
-
first
¶ Type: rst.math.Vec2DFloat
The first point.
-
second
¶ Type: rst.math.Vec2DFloat
The second point.
-
message PointPair {
/**
* The first point.
*/
required math.Vec2DFloat first = 1;
/**
* The second point.
*/
required math.Vec2DFloat second = 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.
-
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 Cylinder3DFloat¶
-
class
rst.geometry.
Cylinder3DFloat
¶ Cylinder in 3D in general position and orientation.
The general cylinder with dimensions
radius
andheight
is constructed by translating and rotating (viatransformation
) a zero-centered, z-oriented axis-aligned cylinder such as below around its center of mass.<
radius
> .---------------------. / \ / \ + + + ^ |\ /| | \ / | | `---------------------' | | | | Z ^ | | | ^ Y |height
| | / | | |/ | | +-----> X | | | ˙ | | | | | | + + v \ / \ / `---------------------'Code author: Christian Emmerich <cemmeric@cor-lab.de>
-
transformation
¶ Type: rst.geometry.Pose
Transformation, consisting of translation and orientation, of the center of mass of the cylinder.
-
radius
¶ Type: FLOAT32
Unit: meter
The radius of the cylinder.
-
height
¶ Type: FLOAT32
Unit: meter
The height of the cylinder.
-
message Cylinder3DFloat {
/**
* Transformation, consisting of translation and orientation, of
* the center of mass of the cylinder.
*/
required geometry.Pose transformation = 1;
/**
* The radius of the cylinder.
*/
// @unit(meter)
required float radius = 2;
/**
* The height of the cylinder.
*/
// @unit(meter)
required float height = 3;
}
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.
See also
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”.
-
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 PointCloud3DFloat¶
-
class
rst.geometry.
PointCloud3DFloat
¶ A collection of points in 3D space.
Code author: Jordi Sanchez Riera <jordi.sanchez-riera@inrialpes.fr>
-
points
¶ Type: array of rst.math.Vec3DFloat
The points of the cloud.
Order of elements does not matter. @unit(meter?)
-
message PointCloud3DFloat {
/**
* The points of the cloud.
*
* Order of elements does not matter.
*/
// @unit(meter?)
repeated math.Vec3DFloat points = 1;
}
Message CameraPose¶
-
class
rst.geometry.
CameraPose
¶ Pose of a camera with semantic annotation of the axes.
The pure transformation of the camera’s pose (in terms of coordinate systems) does not provide information about the viewing direction. There must be a convention about the semantic meaning of the transformation in order to convey the information about where the camera actually looks.
coordinate_frame
realizes this convention by describing the three axes of the camera’s coordinate system semantically including viewing direction and up direction.Code author: Leon Ziegler <lziegler@techfak.uni-bielefeld.de>
@create_collection
-
coordinate_frame
¶ Type: rst.geometry.CameraPose.CoordinateFrame
Annotation of the axes.
-
pose
¶ Type: rst.geometry.Pose
The pose of the camera’s coordinate system in 3d space relative to a given parent coordinate system.
-
message CameraPose {
/**
* Semantic annotation of the axes. (all right-handed)
*/
enum CoordinateFrame {
/**
* X: right - Y: down - Z: forward (depth axis)
*/
CAMERA_IMAGE_FRAME = 0;
/**
* X: up - Y: right - Z: forward (depth axis)
*/
CAMERA_X_UP_FRAME = 1;
/**
* X: left - Y: up - Z: forward (depth axis)
*/
CAMERA_Y_UP_FRAME = 2;
/**
* X: forward (depth axis) - Y: left - Z: up
*/
LASER_FRAME = 3;
/**
* X: right - Y: up - Z: towards viewer (negative depth axis)
*/
SCREEN_FRAME = 4;
}
/**
* Annotation of the axes.
*/
optional CoordinateFrame coordinate_frame = 1 [default = CAMERA_IMAGE_FRAME];
/**
* The pose of the camera's coordinate system in 3d space relative
* to a given parent coordinate system.
*/
required geometry.Pose pose = 2;
}
Message CoordinateFrame¶
-
class
rst.geometry.CameraPose.
CoordinateFrame
¶ Semantic annotation of the axes. (all right-handed)
-
CAMERA_IMAGE_FRAME
¶ -
= 0
X: right - Y: down - Z: forward (depth axis)
-
CAMERA_X_UP_FRAME
¶ -
= 1
X: up - Y: right - Z: forward (depth axis)
-
CAMERA_Y_UP_FRAME
¶ -
= 2
X: left - Y: up - Z: forward (depth axis)
-
LASER_FRAME
¶ -
= 3
X: forward (depth axis) - Y: left - Z: up
-
SCREEN_FRAME
¶ -
= 4
X: right - Y: up - Z: towards viewer (negative depth axis)
-
enum CoordinateFrame {
/**
* X: right - Y: down - Z: forward (depth axis)
*/
CAMERA_IMAGE_FRAME = 0;
/**
* X: up - Y: right - Z: forward (depth axis)
*/
CAMERA_X_UP_FRAME = 1;
/**
* X: left - Y: up - Z: forward (depth axis)
*/
CAMERA_Y_UP_FRAME = 2;
/**
* X: forward (depth axis) - Y: left - Z: up
*/
LASER_FRAME = 3;
/**
* X: right - Y: up - Z: towards viewer (negative depth axis)
*/
SCREEN_FRAME = 4;
}
Message ViewFrustum¶
-
class
rst.geometry.
ViewFrustum
¶ Constraint:
.maximal_distance > .minimal_distance
A camera’s view frustum.
Adds information about the maximal and minimal perceivable distance (
minimal_distance
,maximal_distance
) of a sensor to the definition of its field of view (fov
).Code author: Leon Ziegler <lziegler@techfak.uni-bielefeld.de>
@create_collection
-
fov
¶ Type: rst.geometry.FieldOfView
The field of view of the frustum.
-
minimal_distance
¶ Type: FLOAT32
Constraint:
value > 0
Unit: meter
The minimal perceivable distance.
-
maximal_distance
¶ Type: FLOAT32
Constraint:
value > 0
Unit: meter
The maximal perceivable distance.
-
message ViewFrustum {
/**
* The field of view of the frustum.
*/
required FieldOfView fov = 1;
/**
* The minimal perceivable distance.
*/
// @constraint(value > 0)
// @unit(meter)
optional float minimal_distance = 2 [default = 0];
/**
* The maximal perceivable distance.
*/
// @constraint(value > 0)
// @unit(meter)
optional float maximal_distance = 3 [default = 99999];
}
Message FieldOfView¶
-
class
rst.geometry.
FieldOfView
¶ The field of view of a sensor.
The sensor’s FOV is defined as the angular extent of a scene that is imaged by a visual sensor. The outermost observable ray that falls in a sensor’s FOV has the angular distance +/- AOV/2.0 from the optical axis in the respective extent (vertical/horizontal). The angles are given in radian.
Code author: Leon Ziegler <lziegler@techfak.uni-bielefeld.de>
@create_collection
-
horizontal_aov
¶ Type: FLOAT32
Constraint:
value > 0
Unit: radian
An angle defining the horizontal bounds of the FOV.
-
vertical_aov
¶ Type: FLOAT32
Constraint:
value > 0
Unit: radian
An angle defining the vertical bounds of the FOV.
-
message FieldOfView {
/**
* An angle defining the horizontal bounds of the FOV.
*/
// @constraint(value > 0)
// @unit(radian)
required float horizontal_aov = 1;
/**
* An angle defining the vertical bounds of the FOV.
*/
// @constraint(value > 0)
// @unit(radian)
required float vertical_aov = 2;
}
Message Shape3DFloat¶
-
class
rst.geometry.
Shape3DFloat
¶ Description of a 3D shape as a union of geometric primitives.
New primitive types can be added to this type.
Code author: Johannes Wienke <jwienke@techfak.uni-bielefeld.de>
Code author: Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
@create_collection
-
box
¶ Type: array of rst.geometry.BoundingBox3DFloat
Set of oriented bounding boxes contributing to the described 3D shape.
The order of bounding boxes is not significant.
-
message Shape3DFloat {
/**
* Set of oriented bounding boxes contributing to the described 3D
* shape.
*
* The order of bounding boxes is not significant.
*/
repeated geometry.BoundingBox3DFloat box = 1;
}
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.
-
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 BoundingBox3DFloat¶
-
class
rst.geometry.
BoundingBox3DFloat
¶ Bounding-box in 3D in general position and orientation.
The general bounding-box with dimensions
width
xdepth
xheight
is constructed by translating and rotating (viatransformation
) 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.
-
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.
-
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.
-
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 lengthswidth
xdepth
xheight
along the positive directions of the X, Y and Z axis respectively.^ Z | | +----------------------+ ^ | / /| | / / | | / / |
height
| +----------------------+ | | | | | | | | + v | Y | | / ^ | ^ | | /depth
| / | |/ | / +----------------------+ v | /left_front_bottom
| / <width
> |/ +-----------------------------> XFor 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.
-
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.
-
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;
}