From ee7e2043d3bac915d78f0aeb23267497ff1d7779 Mon Sep 17 00:00:00 2001 From: Leon Ziegler Date: Fri, 31 May 2013 17:34:15 +0200 Subject: [PATCH] Added more types represent classification results and sensor properties. --- .../rst/classification/ClassifiedRegion2D.proto | 27 ++++++++++ .../rst/classification/ClassifiedRegion3D.proto | 27 ++++++++++ proto/sandbox/rst/geometry/CameraPose.proto | 55 ++++++++++++++++++++ proto/sandbox/rst/geometry/FieldOfView.proto | 24 +++++++++ proto/sandbox/rst/geometry/Frustum.proto | 48 +++++++++++++++++ proto/sandbox/rst/vision/LocatedXYZImage.proto | 24 +++++++++ 6 files changed, 205 insertions(+) create mode 100644 proto/sandbox/rst/classification/ClassifiedRegion2D.proto create mode 100644 proto/sandbox/rst/classification/ClassifiedRegion3D.proto create mode 100644 proto/sandbox/rst/geometry/CameraPose.proto create mode 100644 proto/sandbox/rst/geometry/FieldOfView.proto create mode 100644 proto/sandbox/rst/geometry/Frustum.proto create mode 100644 proto/sandbox/rst/vision/LocatedXYZImage.proto diff --git a/proto/sandbox/rst/classification/ClassifiedRegion2D.proto b/proto/sandbox/rst/classification/ClassifiedRegion2D.proto new file mode 100644 index 0000000..1accb94 --- /dev/null +++ b/proto/sandbox/rst/classification/ClassifiedRegion2D.proto @@ -0,0 +1,27 @@ +package rst.classification; + +import "rst/geometry/BoundingBox.proto"; +import "rst/classification/ClassificationResult.proto"; + +option java_outer_classname = "ClassifiedRegion2DType"; + +/** + * Focus on image coordinate systems (vision-based). + * + * A image region with a classification result. + * + * @author Leon Ziegler + */ +message ClassifiedRegion2D { + + /** + * Region in the input image. + */ + optional geometry.BoundingBox region = 1; + + /** + * The class represented by the image region. + */ + optional classification.ClassificationResult result = 2; + +} diff --git a/proto/sandbox/rst/classification/ClassifiedRegion3D.proto b/proto/sandbox/rst/classification/ClassifiedRegion3D.proto new file mode 100644 index 0000000..57af907 --- /dev/null +++ b/proto/sandbox/rst/classification/ClassifiedRegion3D.proto @@ -0,0 +1,27 @@ +package rst.classification; + +import "rst/geometry/BoundingBox3DFloat.proto"; +import "rst/classification/ClassificationResult.proto"; + +option java_outer_classname = "ClassifiedRegion3DType"; + +/** + * Focus on image coordinate systems (vision-based). + * + * A region in 3D space with a classification result. + * + * @author Leon Ziegler + */ +message ClassifiedRegion3D { + + /** + * Region in 3D space. + */ + optional geometry.BoundingBox3DFloat region = 1; + + /** + * The class represented by the 3D region. + */ + optional classification.ClassificationResult result = 2; + +} diff --git a/proto/sandbox/rst/geometry/CameraPose.proto b/proto/sandbox/rst/geometry/CameraPose.proto new file mode 100644 index 0000000..8bf2b93 --- /dev/null +++ b/proto/sandbox/rst/geometry/CameraPose.proto @@ -0,0 +1,55 @@ +package rst.geometry; + +import "rst/geometry/Pose.proto"; + +option java_outer_classname = "CameraPoseType"; + +/** + * Pose of a camera with semantic annotation of the axes. + * @todo "extend explanation" + * + * @author Leon Ziegler + */ +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 coordinateFrame = 1 [default = CAMERA_IMAGE_FRAME]; + + /** + * TODO + */ + required rst.geometry.Pose pose = 2; +} \ No newline at end of file diff --git a/proto/sandbox/rst/geometry/FieldOfView.proto b/proto/sandbox/rst/geometry/FieldOfView.proto new file mode 100644 index 0000000..0b5782e --- /dev/null +++ b/proto/sandbox/rst/geometry/FieldOfView.proto @@ -0,0 +1,24 @@ +package rst.geometry; + +option java_outer_classname = "FieldOfViewType"; + +/** + * The field of view of a sensor. + * @todo "extend explanation" + * + * @author Leon Ziegler + */ +message FieldOfView { + + /** + * An angle defining the horizontal bounds of the FOV. + */ + // @unit(radian) + required float horizontalAOV = 1; + + /** + * An angle defining the vertical bounds of the FOV. + */ + // @unit(radian) + required float verticalAOV = 2; +} \ No newline at end of file diff --git a/proto/sandbox/rst/geometry/Frustum.proto b/proto/sandbox/rst/geometry/Frustum.proto new file mode 100644 index 0000000..008783e --- /dev/null +++ b/proto/sandbox/rst/geometry/Frustum.proto @@ -0,0 +1,48 @@ +package rst.geometry; + +import "rst/geometry/CameraPose.proto"; +import "rst/geometry/FieldOfView.proto"; + +option java_outer_classname = "FrustumType"; + +/** + * A camera's view frustum. + * + * @author Leon Ziegler + */ +message Frustum { + + /** + * Origin of the frustum. + */ + required CameraPose camera = 1; + + /** + * The field of view of the frustum. + */ + required FieldOfView fov = 2; + + /** + * The minimal perceivable distance. + */ + // @unit(meter) + optional float minDist = 3 [default = 0]; + + /** + * The maximal perceivable distance. + */ + // @unit(meter) + optional float maxDist = 4 [default = 99999]; + + /** + * The angular difference between the individual pixels in the image + */ + // @unit(radian) + optional float angularResolutionX = 5 [default = 0]; + + /** + * The angular difference between the individual pixels in the image + */ + // @unit(radian) + optional float angularResolutionY = 6 [default = 0]; +} \ No newline at end of file diff --git a/proto/sandbox/rst/vision/LocatedXYZImage.proto b/proto/sandbox/rst/vision/LocatedXYZImage.proto new file mode 100644 index 0000000..f37049c --- /dev/null +++ b/proto/sandbox/rst/vision/LocatedXYZImage.proto @@ -0,0 +1,24 @@ +package rst.vision; + +import "rst/geometry/Frustum.proto"; +import "rst/vision/SimpleXYZImage.proto"; + +option java_outer_classname = "LocatedXYZImageType"; + +/** + * A simple pointcloud represented in 2D structure with information from where it was taken. + * + * @author Leon Ziegler + */ +message LocatedXYZImage { + + /** + * The camera's frustum. + */ + required rst.geometry.Frustum camera = 1; + + /** + * The background model. + */ + required rst.vision.SimpleXYZImage image = 2; +} \ No newline at end of file -- 1.7.9.5