diff --git a/core.proto b/core.proto index c1d5479..f1c5a15 100644 --- a/core.proto +++ b/core.proto @@ -27,4 +27,6 @@ enum Device { RELAY = 10; BASE_STATION = 11; ANTENNA = 12; + VISION = 13; + LIDAR = 14; } diff --git a/lidar.proto b/lidar.proto new file mode 100644 index 0000000..137488d --- /dev/null +++ b/lidar.proto @@ -0,0 +1,19 @@ +// Version 1.0 +syntax = "proto3"; +import "version.proto"; + +message LidarCartesianPoint { + float x = 1; + float y = 2; +} + +message LidarPolarPoint { + float angle = 1; + float distance = 2; +} + +message LidarPointCloud { + repeated LidarCartesianPoint cartesian = 1; + repeated LidarPolarPoint polar = 2; + Version version = 3; +} \ No newline at end of file diff --git a/video.proto b/video.proto index 1977a52..1f70532 100644 --- a/video.proto +++ b/video.proto @@ -1,7 +1,8 @@ -// Version: 1.1 +// Version: 1.2 syntax = "proto3"; import "version.proto"; +import "vision.proto"; enum CameraStatus { CAMERA_STATUS_UNDEFINED = 0; @@ -78,9 +79,14 @@ message VideoData { /// The latest frame from this camera. bytes frame = 3; + /// The version of this video data. Version version = 4; + /// The path that a high-quality screenshot was saved to. string imagePath = 5; + + /// Any objects that were detected in the frame. + repeated DetectedObject detectedObjects = 6; } /// Make changes to a camera feed. diff --git a/vision.proto b/vision.proto index d114494..b5bf89b 100644 --- a/vision.proto +++ b/vision.proto @@ -1,9 +1,8 @@ -// Version: 1.0 +// Version: 2.0 syntax = "proto3"; import "geometry.proto"; -import "video.proto"; enum DetectedObjectType { DETECTION_TYPE_UNDEFINED = 0; @@ -13,25 +12,27 @@ enum DetectedObjectType { } message PnpResult { - Pose3d pose = 1; - double error = 2; + Pose3d cameraToTarget = 1; + double reprojectionError = 2; } message DetectedObject { // What was detected DetectedObjectType objectType = 1; int32 arucoTagId = 2; - CameraName camera = 3; // Where it was detected float xPosition = 4; // -1 to +1 (left to right) float relativeSize = 5; // 0 to 1 (percent of frame) - // Experimental: Use pinhole model to find the object's position - float yaw = 6; - float pitch = 7; + int32 centerX = 6; + int32 centerY = 7; + + // Experimental: Use pinhole camera model to find the object's position + float yaw = 8; + float pitch = 9; // Experimental: Use PnP to determine the 3D pose - PnpResult bestPnpResult = 8; - PnpResult alternatePnpResult = 9; + PnpResult bestPnpResult = 10; + PnpResult alternatePnpResult = 11; }