From 2f52bec323017caa20244eca29e56c3792941115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Folles=C3=B8?= Date: Tue, 21 Jan 2025 10:05:59 +0100 Subject: [PATCH 1/5] Adds error flags to MultibeamDiscovery Co-Authored-By: Juan Pablo Pino Bravo --- protobuf_definitions/message_formats.proto | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/protobuf_definitions/message_formats.proto b/protobuf_definitions/message_formats.proto index 5b9483ea..3c3e8b2b 100644 --- a/protobuf_definitions/message_formats.proto +++ b/protobuf_definitions/message_formats.proto @@ -996,6 +996,7 @@ message MedusaSpectrometerData { uint32 cosmics = 5; // Detected counts above the last channel } +// The frequency mode to use for multibeam devices with dual frequency. enum MultibeamFrequencyMode { MULTIBEAM_FREQUENCY_MODE_UNSPECIFIED = 0; MULTIBEAM_FREQUENCY_MODE_AUTO = 1; // Auto switching mode (if available) @@ -1071,6 +1072,18 @@ message MultibeamDiscovery { string fw_version = 5; // Firmware version of the sonar string connected_ip = 6; // IP address of the connected device GuestPortDeviceID device_id = 7; // Device ID of the sonar + MultibeamErrorFlags error_flags = 8; // Error flags specific for the connceted multibeam device. +} + +// Error flags for multibeam sonar devices. +message MultibeamErrorFlags { + /* + If the sonar is captured by another client than the drone. + The connected client IP is reported in connected_ip property. + */ + bool connected_to_another_client = 1; + bool device_overheating = 2; // If the multibeam is reporting to overheat. + bool out_of_water = 3; // If a TriTech multibeam is reporting to be out of water. } // Frame offset for multibeam recordings index cache From c71b7445aa6398b2a099a715837e34f5915183a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Folles=C3=B8?= Date: Tue, 21 Jan 2025 10:44:30 +0100 Subject: [PATCH 2/5] Add gain boost property Co-Authored-By: Juan Pablo Pino Bravo --- protobuf_definitions/message_formats.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protobuf_definitions/message_formats.proto b/protobuf_definitions/message_formats.proto index 3c3e8b2b..f6c4e38e 100644 --- a/protobuf_definitions/message_formats.proto +++ b/protobuf_definitions/message_formats.proto @@ -1045,6 +1045,7 @@ message MultibeamConfig { PingRate ping_rate = 2; // Sets the maximum ping rate. double gamma_correction = 3; // Gamma correction (0..1.0) bool gain_assist = 4; // Enable gain assist + bool gain_boost = 11; // Enable gain boost (only available on Blueprint devices). enum MaximumNumberOfBeams { MAXIMUM_NUMBER_OF_BEAMS_UNSPECIFIED = 0; From a9178098bd1702f35bfe102f32c201030cb26ac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Folles=C3=B8?= Date: Tue, 21 Jan 2025 11:06:08 +0100 Subject: [PATCH 3/5] Update documentation Adds a period at the end of all sentences and text fragments. After discussions with Johannes, Juan, Andreas, and ChatGPT, we concluded that consistency is more critical than grammatical correctness. Also adds documentation for some missing properties and types. --- protobuf_definitions/aquatroll.proto | 32 +- protobuf_definitions/control.proto | 32 +- protobuf_definitions/message_formats.proto | 1175 ++++++++++--------- protobuf_definitions/mission_planning.proto | 224 ++-- protobuf_definitions/req_rep.proto | 8 +- protobuf_definitions/telemetry.proto | 92 +- 6 files changed, 785 insertions(+), 778 deletions(-) diff --git a/protobuf_definitions/aquatroll.proto b/protobuf_definitions/aquatroll.proto index 01c6514c..9f1def55 100644 --- a/protobuf_definitions/aquatroll.proto +++ b/protobuf_definitions/aquatroll.proto @@ -1,6 +1,6 @@ // Aquatroll // -// These messages are emitted by the In-Situ AquaTroll 500 probe. +// These messages are emitted by the In-Situ AquaTroll series of probes. syntax = "proto3"; package blueye.protocol; @@ -21,7 +21,7 @@ enum Type { TYPE_TIME = 9; } -// Aqua Troll Device IDs +// Aqua Troll Device IDs. enum AquaTrollDevice { AQUA_TROLL_DEVICE_UNSPECIFIED = 0; AQUA_TROLL_DEVICE_LEVEL_TROLL_500 = 1; @@ -45,7 +45,7 @@ enum AquaTrollDevice { AQUA_TROLL_DEVICE_AQUA_TROLL_500_VENTED = 34; } -// Aqua Troll Quality IDs +// Aqua Troll Quality IDs. enum AquaTrollQuality { AQUA_TROLL_QUALITY_NORMAL = 0; // protolint:disable:this ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH AQUA_TROLL_QUALITY_USER_CAL_EXPIRED = 1; @@ -57,7 +57,7 @@ enum AquaTrollQuality { AQUA_TROLL_QUALITY_OFF_LINE = 7; } -// Aqua Troll Parameter IDs +// Aqua Troll Parameter IDs. enum AquaTrollParameter { AQUA_TROLL_PARAMETER_UNSPECIFIED = 0; AQUA_TROLL_PARAMETER_TEMPERATURE = 1; @@ -119,7 +119,7 @@ enum AquaTrollParameter { AQUA_TROLL_PARAMETER_COLORED_DISSOLVED_ORGANIC_MATTER_CONCENTRATION = 87; } -// Aqua Troll Unit IDs +// Aqua Troll Unit IDs. enum AquaTrollUnit { AQUA_TROLL_UNIT_UNSPECIFIED = 0; AQUA_TROLL_UNIT_TEMP_CELSIUS = 1; @@ -207,7 +207,7 @@ enum AquaTrollUnit { AQUA_TROLL_UNIT_METERS_PER_SECOND = 306; } -// Aqua Troll Sensor IDs +// Aqua Troll Sensor IDs. enum AquaTrollSensor { AQUA_TROLL_SENSOR_UNSPECIFIED = 0; AQUA_TROLL_SENSOR_TEMPERATURE = 1; @@ -299,9 +299,9 @@ enum AquaTrollDeviceStatus { AQUA_TROLL_DEVICE_STATUS_LOW_MEMORY = 14; } -// In-Situ Parameter Block +// In-Situ Parameter Block. // -// Up to NUMBER_OF_SENSOR_PARAMETERS blocks may be part of a sensor +// Up to NUMBER_OF_SENSOR_PARAMETERS blocks may be part of a sensor. message AquaTrollParameterBlock { reserved 4; reserved "data_quality_id"; @@ -314,12 +314,12 @@ message AquaTrollParameterBlock { repeated AquaTrollUnit available_units = 6; } -// In-Situ AquaTroll 500 sensor metadata +// In-Situ AquaTroll 500 sensor metadata. // // (Mostly) static information about a connected sensor. // // Refer to Section 7 Sensor Common Registers in the In-Situ Modbus -// Communication Protocol +// Communication Protocol. message AquaTrollSensorMetadata { reserved 4; reserved "sensor_status"; @@ -392,14 +392,14 @@ message AquaTrollSensorParametersArray { repeated AquaTrollSensorParameters sensors = 2; } -// Request to set an In-Situ Aqua Troll parameter unit +// Request to set an In-Situ Aqua Troll parameter unit. message SetAquaTrollParameterUnit { - AquaTrollSensor sensor_id = 1; // Sensor id, f. ex. "SENSOR_CONDUCTIVITY_SENSOR" - AquaTrollParameter parameter_id = 2; // Parameter name, f. ex. "PARAMETER_TEMPERATURE" - AquaTrollUnit unit_id = 3; // Unit, f. ex. "UNIT_TEMP_CELSIUS" + AquaTrollSensor sensor_id = 1; // Sensor id, f. ex. "SENSOR_CONDUCTIVITY_SENSOR". + AquaTrollParameter parameter_id = 2; // Parameter name, f. ex. "PARAMETER_TEMPERATURE". + AquaTrollUnit unit_id = 3; // Unit, f. ex. "UNIT_TEMP_CELSIUS". } -// Request to change the In-Situ Aqua Troll connection status +// Request to change the In-Situ Aqua Troll connection status. message SetAquaTrollConnectionStatus { - bool connected = 1; // True to connect, false to disconnect + bool connected = 1; // True to connect, false to disconnect. } diff --git a/protobuf_definitions/control.proto b/protobuf_definitions/control.proto index 456f0280..3a224f78 100644 --- a/protobuf_definitions/control.proto +++ b/protobuf_definitions/control.proto @@ -70,37 +70,37 @@ message FinishCalibrationCtrl { // Issue a command to set auto heading to a desired state. message AutoHeadingCtrl { - AutoHeadingState state = 1; // State of the heading controller + AutoHeadingState state = 1; // State of the heading controller. } // Issue a command to set auto depth to a desired state. message AutoDepthCtrl { - AutoDepthState state = 1; // State of the depth controller + AutoDepthState state = 1; // State of the depth controller. } // Issue a command to set auto altitude to a desired state. message AutoAltitudeCtrl { - AutoAltitudeState state = 1; // State of the altitude controller + AutoAltitudeState state = 1; // State of the altitude controller. } // Issue a command to set station keeping to a desired state. message StationKeepingCtrl { - StationKeepingState state = 1; // State of the station keeping controller + StationKeepingState state = 1; // State of the station keeping controller. } // Issue a command to set station keeping with weather vaning to a desired state. message WeatherVaningCtrl { - WeatherVaningState state = 1; // State of the weather vaning controller + WeatherVaningState state = 1; // State of the weather vaning controller. } // Issue a command to set Auto Pilot for cruising and turning to a desired state. message AutoPilotSurgeYawCtrl { - AutoPilotSurgeYawState state = 1; // State of the auto pilot surge yaw controller + AutoPilotSurgeYawState state = 1; // State of the auto pilot surge yaw controller. } // Issue a command to set Auto Pilot for vertiacl movement to a desired state. message AutoPilotHeaveCtrl { - AutoPilotHeaveState state = 1; // State of the auto pilot heave controller + AutoPilotHeaveState state = 1; // State of the auto pilot heave controller- } // Issue a command to start and pause the loaded mission. @@ -163,42 +163,42 @@ message MultibeamServoCtrl { MultibeamServo servo = 1; // Message with the desired servo angle. } -// Deactivate the guest port power +// Deactivate the guest port power. message DeactivateGuestPortsCtrl { } -// Activated the guest port power +// Activated the guest port power. message ActivateGuestPortsCtrl { } -// Restart the guest ports by turning power on and off +// Restart the guest ports by turning power on and off. message RestartGuestPortsCtrl { GuestPortRestartInfo restart_info = 1; // Message with information about how long to keep the guest ports off. } -// Request to set an In-Situ Aqua Troll parameter unit +// Request to set an In-Situ Aqua Troll parameter unit. message SetAquaTrollParameterUnitCtrl { // Message with information about which parameter to set and the unit to set it to. SetAquaTrollParameterUnit parameter_info = 1; } -// Request to change the In-Situ Aqua Troll connection status +// Request to change the In-Situ Aqua Troll connection status. message SetAquaTrollConnectionStatusCtrl { // Message with information about which parameter to set and the unit to set it to. SetAquaTrollConnectionStatus connection_status = 1; } -// Update multibeam settings +// Update the multibeam settings. message SetMultibeamConfigCtrl { MultibeamConfig config = 1; // Message with the multibeam ping configuration to set. } -// Activate multibeam +// Activate the multibeam with specified configuration. message ActivateMultibeamCtrl { - MultibeamConfig config = 1; // Message with the multibeam ping configuration to set on connect + MultibeamConfig config = 1; // Message with the multibeam ping configuration to set on connect. } -// Deactivate multibeam +// Deactivate the multibeam. message DeactivateMultibeamCtrl { } diff --git a/protobuf_definitions/message_formats.proto b/protobuf_definitions/message_formats.proto index f6c4e38e..e15b78b2 100644 --- a/protobuf_definitions/message_formats.proto +++ b/protobuf_definitions/message_formats.proto @@ -32,19 +32,19 @@ message BinlogRecord { // If you use both values at the same time they cancel each other out. message MotionInput { - float surge = 1; // Forward (positive) and backwards (negative) movement. (-1..1) - float sway = 2; // Right (positive) and left (negative) lateral movement (-1..1) - float heave = 3; // Descend (positive) and ascend (negative) movement (-1..1) - float roll = 7; // Roll left (negative) or right (positive). (-1..1) - float pitch = 8; // Pitch down (negative) or up (positive). (-1..1) - float yaw = 4; // Left (positive) and right (negative) movement (-1..1) - float slow = 5; // Modifier used to reduce the speed of the motion (0..1) - float boost = 6; // Modifier used to increase the speed of the motion (0..1) + float surge = 1; // Forward (positive) and backwards (negative) movement. (-1..1). + float sway = 2; // Right (positive) and left (negative) lateral movement (-1..1). + float heave = 3; // Descend (positive) and ascend (negative) movement (-1..1). + float roll = 7; // Roll left (negative) or right (positive). (-1..1). + float pitch = 8; // Pitch down (negative) or up (positive). (-1..1). + float yaw = 4; // Left (positive) and right (negative) movement (-1..1). + float slow = 5; // Modifier used to reduce the speed of the motion (0..1). + float boost = 6; // Modifier used to increase the speed of the motion (0..1). } // Lights message used to represent the intensity of the main light or external lights. message Lights { - float value = 1; // Light intensity (0..1) + float value = 1; // Light intensity (0..1). } // Laser message used to represent the intensity of connected laser. @@ -53,64 +53,64 @@ message Lights { // a value of 0 turns the laser off, and any value above 0 // turns the laser on. message Laser { - float value = 1; // Laser intensity, any value above 0 turns the laser on (0..1) + float value = 1; // Laser intensity, any value above 0 turns the laser on (0..1). } // Latitude and longitude position in WGS 84 decimal degrees format. message LatLongPosition { - double latitude = 1; // Latitude (°) - double longitude = 2; // Longitude (°) + double latitude = 1; // Latitude (°). + double longitude = 2; // Longitude (°). } // Connection duration of a remote client. message ConnectionDuration { - int32 value = 1; // time since connected to drone (s) + int32 value = 1; // Time since connected to drone (s). } // Auto heading state. message AutoHeadingState { - bool enabled = 1; // If auto heading is enabled + bool enabled = 1; // If auto heading is enabled. } // Auto depth state. message AutoDepthState { - bool enabled = 1; // If auto depth is enabled + bool enabled = 1; // If auto depth is enabled. } // Auto altitude state. message AutoAltitudeState { - bool enabled = 1; // If auto altitude is enabled + bool enabled = 1; // If auto altitude is enabled. } // Station keeping state. message StationKeepingState { - bool enabled = 1; // If station keeping is enabled + bool enabled = 1; // If station keeping is enabled. } // Weather vaning state. message WeatherVaningState { - bool enabled = 1; // If weather vaning is enabled + bool enabled = 1; // If weather vaning is enabled. } // Auto pilot surge yaw state. message AutoPilotSurgeYawState { - bool enabled = 1; // If auto pilot surge yaw is enabled + bool enabled = 1; // If auto pilot surge yaw is enabled. } // Auto pilot heave state. message AutoPilotHeaveState { - bool enabled = 1; // If auto pilot heave is enabled + bool enabled = 1; // If auto pilot heave is enabled. } // Control mode from drone supervisor message ControlMode { - bool auto_depth = 1; // If auto depth is enabled - bool auto_heading = 2; // If auto heading is enabled - bool auto_altitude = 3; // If auto altitude is enabled - bool station_keeping = 4; // If station keeping is enabled - bool weather_vaning = 5; // If weather vaning is enabled - bool auto_pilot_surge_yaw = 6; // If auto pilot surge yaw is enabled - bool auto_pilot_heave = 7; // If auto pilot heave is enabled + bool auto_depth = 1; // If auto depth is enabled. + bool auto_heading = 2; // If auto heading is enabled. + bool auto_altitude = 3; // If auto altitude is enabled. + bool station_keeping = 4; // If station keeping is enabled. + bool weather_vaning = 5; // If weather vaning is enabled. + bool auto_pilot_surge_yaw = 6; // If auto pilot surge yaw is enabled. + bool auto_pilot_heave = 7; // If auto pilot heave is enabled. } // Tilt stabilization state. @@ -118,62 +118,64 @@ message ControlMode { // Blueye drones with mechanical tilt has the ability to enable // camera stabilization. message TiltStabilizationState { - bool enabled = 1; // If tilt stabilization is enabled + bool enabled = 1; // If tilt stabilization is enabled. } // System time. message SystemTime { - google.protobuf.Timestamp unix_timestamp = 1; // Unix timestamp + google.protobuf.Timestamp unix_timestamp = 1; // Unix timestamp. } // Gripper velocity values. +// +// Rotating velocity is only used if the gripper supports rotation. message GripperVelocities { - float grip_velocity = 1; // The gripping velocity (-1.0..1.0) - float rotate_velocity = 2; // The rotating velocity (-1.0..1.0) + float grip_velocity = 1; // The gripping velocity (-1.0..1.0). + float rotate_velocity = 2; // The rotating velocity (-1.0..1.0). } // Information about a remote client. message ClientInfo { - string type = 1; // The type of client (such as Blueye App, Observer App, SDK, etc) - string version = 2; // Client software version string - string device_type = 3; // Device type, such as mobile, tablet, or computer - string platform = 4; // Platform, such as iOS, Android, Linux, etc - string platform_version = 5; // Platform software version string - string name = 6; // Name of the client - bool is_observer = 7; // If the client should be connected as an observer or not + string type = 1; // The type of client (such as Blueye App, Observer App, SDK, etc). + string version = 2; // Client software version string. + string device_type = 3; // Device type, such as mobile, tablet, or computer. + string platform = 4; // Platform, such as iOS, Android, Linux, etc. + string platform_version = 5; // Platform software version string. + string name = 6; // Name of the client. + bool is_observer = 7; // If the client should be connected as an observer or not. } // Information about a connected client with an id assigned by the drone. message ConnectedClient { - uint32 client_id = 1; // The assigned client id + uint32 client_id = 1; // The assigned client id. ClientInfo client_info = 2; // Client information. } // Camera recording state. message RecordState { - bool main_is_recording = 1; // If the main camera is recording - int32 main_seconds = 2; // Main record time (s) - float main_fps = 7; // Main record fps - bool guestport_is_recording = 3; // If the guestport camera is recording - int32 guestport_seconds = 4; // Guestport record time (s) - float guestport_fps = 8; // Guestport record fps - bool multibeam_is_recording = 5; // If the multibeam is recording - int32 multibeam_seconds = 6; // Multibeam record time (s) - float multibeam_fps = 9; // Multibeam record fps + bool main_is_recording = 1; // If the main camera is recording. + int32 main_seconds = 2; // Main record time (s). + float main_fps = 7; // Main record fps. + bool guestport_is_recording = 3; // If the guestport camera is recording. + int32 guestport_seconds = 4; // Guestport record time (s). + float guestport_fps = 8; // Guestport record fps. + bool multibeam_is_recording = 5; // If the multibeam is recording. + int32 multibeam_seconds = 6; // Multibeam record time (s). + float multibeam_fps = 9; // Multibeam record fps. } // Interval type for time-lapse photos. enum IntervalType { - INTERVAL_TYPE_UNSPECIFIED = 0; // Unspecified - INTERVAL_TYPE_TIME = 1; // Time interval - INTERVAL_TYPE_DISTANCE = 2; // Distance interval + INTERVAL_TYPE_UNSPECIFIED = 0; // Unspecified. + INTERVAL_TYPE_TIME = 1; // Time interval. + INTERVAL_TYPE_DISTANCE = 2; // Distance interval. } // Time-lapse state published if time-lapse mission is running. message TimeLapseState { - float interval = 1; // Interval between photos - int32 photos_taken = 2; // Number of photos taken - IntervalType interval_type = 3; // Interval type for photos, distance or time + float interval = 1; // Interval between photos. + int32 photos_taken = 2; // Number of photos taken. + IntervalType interval_type = 3; // Interval type for photos, distance or time. } // Water density. @@ -181,7 +183,7 @@ message TimeLapseState { // Used to specify the water density the drone is operating in, // to achieve more accurate depth measurements, f. ex. influenced by salinity. message WaterDensity { - float value = 1; // Water density (g/l) + float value = 1; // Water density (g/l). } // Pinger configuration. @@ -189,22 +191,22 @@ message WaterDensity { // Used to specify the configuration the BR 1D-Pinger. message PingerConfiguration { enum MountingDirection { - MOUNTING_DIRECTION_UNSPECIFIED = 0; // Mounting direction is unspecified - MOUNTING_DIRECTION_FORWARDS = 1; // Pointing forwards from the drones perspective - MOUNTING_DIRECTION_DOWNWARDS = 2; // Pointing downwards from the drones perspective + MOUNTING_DIRECTION_UNSPECIFIED = 0; // Mounting direction is unspecified. + MOUNTING_DIRECTION_FORWARDS = 1; // Pointing forwards from the drones perspective. + MOUNTING_DIRECTION_DOWNWARDS = 2; // Pointing downwards from the drones perspective. } - MountingDirection mounting_direction = 1; // Mounting direction of the pinger + MountingDirection mounting_direction = 1; // Mounting direction of the pinger. } // Water temperature measured by the drone's combined depth and temperature sensor. message WaterTemperature { - float value = 1; // Water temperature (°C) + float value = 1; // Water temperature (°C). } // CPU temperature. message CPUTemperature { - float value = 1; // CPU temperature (°C) + float value = 1; // CPU temperature (°C). } // Canister temperature. @@ -212,7 +214,7 @@ message CPUTemperature { // Temperature measured in the top or bottom canister of the drone. message CanisterTemperature { reserved 1, 2; - float temperature = 3; // Temperature (°C) + float temperature = 3; // Temperature (°C). } // Canister humidity. @@ -220,14 +222,14 @@ message CanisterTemperature { // Humidity measured in the top or bottom canister of the drone. message CanisterHumidity { reserved 1, 2; - float humidity = 3; // Air humidity (%) + float humidity = 3; // Air humidity (%). } // Essential battery information. message Battery { - float voltage = 1; // Battery voltage (V) - float level = 2; // Battery level (0..1) - float temperature = 3; // Battery temperature (°C) + float voltage = 1; // Battery voltage (V). + float level = 2; // Battery level (0..1). + float temperature = 3; // Battery temperature (°C). } // Battery information message. @@ -239,23 +241,23 @@ message BatteryBQ40Z50 { // Battery voltage levels. message Voltage { - float total = 1; // Battery pack voltage level (V) - float cell_1 = 2; // Cell 1 voltage level (V) - float cell_2 = 3; // Vell 2 voltage level (V) - float cell_3 = 4; // Cell 3 voltage level (V) - float cell_4 = 5; // Cell 4 voltage level (V) + float total = 1; // Battery pack voltage level (V). + float cell_1 = 2; // Cell 1 voltage level (V). + float cell_2 = 3; // Vell 2 voltage level (V). + float cell_3 = 4; // Cell 3 voltage level (V). + float cell_4 = 5; // Cell 4 voltage level (V). } - Voltage voltage = 1; // Voltage of the battery cells + Voltage voltage = 1; // Voltage of the battery cells. // Battery temperature. message Temperature { - float average = 1; // Average temperature accross cells (°C) - float cell_1 = 2; // Cell 1 temperature (°C) - float cell_2 = 3; // Cell 2 temperature (°C) - float cell_3 = 4; // Cell 3 temperature (°C) - float cell_4 = 5; // Cell 4 temperature (°C) + float average = 1; // Average temperature accross cells (°C). + float cell_1 = 2; // Cell 1 temperature (°C). + float cell_2 = 3; // Cell 2 temperature (°C). + float cell_3 = 4; // Cell 3 temperature (°C). + float cell_4 = 5; // Cell 4 temperature (°C). } - Temperature temperature = 2; // Temperature of the battery cells + Temperature temperature = 2; // Temperature of the battery cells. // Battery status from BQ40Z50 ref data sheet 0x16. message BatteryStatus { @@ -283,144 +285,145 @@ message BatteryBQ40Z50 { BATTERY_ERROR_BAD_SIZE = 7; BATTERY_ERROR_UNKNOWN_ERROR = 8; } - BatteryError error = 11; // Battery error codes + BatteryError error = 11; // Battery error codes. } - BatteryStatus status = 4; // Battery status flags - - float current = 6; // Measured current from the coulomb counter (A) - float average_current = 7; // Average current (A) - float relative_state_of_charge = 8; // Predicted remaining battery capacity as a factor of full_charge_capacity (0..1) - float absolute_state_of_charge = 9; // Predicted remaining battery capacity (0..1) - float calculated_state_of_charge = 26; // Calculated state of charge (0..1) - float remaining_capacity = 10; // Predicted remaining battery capacity (Ah) - float full_charge_capacity = 11; // Predicted battery capacity when fully charged (Ah) - uint32 runtime_to_empty = 12; // Predicted remaining battery capacity based on the present rate of discharge (s) - uint32 average_time_to_empty = 13; // Predicted remaining battery capacity based on average_current (s) - uint32 average_time_to_full = 14; // Predicted time-to-full charge based on average_current (s) - float charging_current = 17; // Desired charging current (A) - float charging_voltage = 18; // Desired charging voltage (V) - - uint32 cycle_count = 19; // Number of charging cycles - float design_capacity = 20; // Design capacity (Ah) - google.protobuf.Timestamp manufacture_date = 21; // Manufacture date - uint32 serial_number = 22; // Serial number - string manufacturer_name = 23; // Manufacturer name - string device_name = 24; // Device name - string device_chemistry = 25; // Battery chemistry + BatteryStatus status = 4; // Battery status flags. + + float current = 6; // Measured current from the coulomb counter (A). + float average_current = 7; // Average current (A). + float relative_state_of_charge = 8; // Predicted remaining battery capacity as a factor of full_charge_capacity (0..1). + float absolute_state_of_charge = 9; // Predicted remaining battery capacity (0..1). + float calculated_state_of_charge = 26; // Calculated state of charge (0..1). + float remaining_capacity = 10; // Predicted remaining battery capacity (Ah). + float full_charge_capacity = 11; // Predicted battery capacity when fully charged (Ah). + uint32 runtime_to_empty = 12; // Predicted remaining battery capacity based on the present rate of discharge (s). + uint32 average_time_to_empty = 13; // Predicted remaining battery capacity based on average_current (s). + uint32 average_time_to_full = 14; // Predicted time-to-full charge based on average_current (s). + float charging_current = 17; // Desired charging current (A). + float charging_voltage = 18; // Desired charging voltage (V). + + uint32 cycle_count = 19; // Number of charging cycles. + float design_capacity = 20; // Design capacity (Ah). + google.protobuf.Timestamp manufacture_date = 21; // Manufacture date. + uint32 serial_number = 22; // Serial number. + string manufacturer_name = 23; // Manufacturer name. + string device_name = 24; // Device name. + string device_chemistry = 25; // Battery chemistry. message BatteryLifetimes { message CellVoltages { - float cell_1 = 1; // Voltage for cell number 1 (V) - float cell_2 = 2; // Voltage for cell number 2 (V) - float cell_3 = 3; // Voltage for cell number 3 (V) - float cell_4 = 4; // Voltage for cell number 4 (V) + float cell_1 = 1; // Voltage for cell number 1 (V). + float cell_2 = 2; // Voltage for cell number 2 (V). + float cell_3 = 3; // Voltage for cell number 3 (V). + float cell_4 = 4; // Voltage for cell number 4 (V). } - CellVoltages max_cell_voltages = 1; // Maximum reported cell voltages - CellVoltages min_cell_voltages = 2; // Minimum reported cell voltages - float max_delta_cell_voltage = 3; // Max delta between cells (V) - float max_charge_current = 4; // Max reported current in the charge direction (A) - float max_discharge_current = 5; // Max reported current in the discharge direction (A) - float max_avg_discharge_current = 6; // Max reported average current in the discharge direction (A) - float max_avg_discharge_power = 7; // Max reported power in discharge direction (W) - float max_cell_temperature = 8; // Max reported cell temperature (°C) - float min_cell_temperature = 9; // Min reported cell temperature (°C) - // Max reported temperature delta for TSx inputs configured as cell temperature (°C) + CellVoltages max_cell_voltages = 1; // Maximum reported cell voltages. + CellVoltages min_cell_voltages = 2; // Minimum reported cell voltages. + float max_delta_cell_voltage = 3; // Max delta between cells (V). + float max_charge_current = 4; // Max reported current in the charge direction (A). + float max_discharge_current = 5; // Max reported current in the discharge direction (A). + float max_avg_discharge_current = 6; // Max reported average current in the discharge direction (A). + float max_avg_discharge_power = 7; // Max reported power in discharge direction (W). + float max_cell_temperature = 8; // Max reported cell temperature (°C). + float min_cell_temperature = 9; // Min reported cell temperature (°C). + // Max reported temperature delta for TSx inputs configured as cell temperature (°C). float max_delta_cell_temperature = 10; - float max_temperature_internal_sensor = 11; // Max reported internal temperature sensor temperature (°C) - float min_temperature_internal_sensor = 12; // Min reported internal temperature sensor temperature (°C) - float max_temperature_fet = 13; // Max reported FET temperature (°C) + float max_temperature_internal_sensor = 11; // Max reported internal temperature sensor temperature (°C). + float min_temperature_internal_sensor = 12; // Min reported internal temperature sensor temperature (°C). + float max_temperature_fet = 13; // Max reported FET temperature (°C). } - BatteryLifetimes lifetimes = 27; // Battery lifetimes + BatteryLifetimes lifetimes = 27; // Battery lifetimes. message BatterySafetyEvents { - uint32 cov_events_count = 1; // Number of cell over voltage (COV) events (events) - uint32 cov_last_event = 2; // Last COV event in cycle count cycles (cycles) - uint32 cuv_events_count = 3; // Number of cell under voltage (CUV) events (events) - uint32 cuv_last_event = 4; // Last CUV event in cycle count cycles (cycles) - uint32 ocd1_events_count = 5; // Number of over current in Discharge 1 (OCD1) events (events) - uint32 ocd1_last_event = 6; // Last OCD1 event in cycle count cycles (cycles) - uint32 ocd2_events_count = 7; // Number of over current in Discharge 2 (OCD2) events (events) - uint32 ocd2_last_event = 8; // Last OCD2 event in cycle count cycles (cycles) - uint32 occ1_events_count = 9; // Number of over current in Charge 1 (OCC1) events (events) - uint32 occ1_last_event = 10; // Last OCC1 event in cycle count cycles (cycles) - uint32 occ2_events_count = 11; // Number of over current in Charge 2 (OCC2) events (events) - uint32 occ2_last_event = 12; // Last OCC2 event in cycle count cycles (cycles) - uint32 aold_events_count = 13; // Number of Overload in discharge (AOLD) events (events) - uint32 aold_last_event = 14; // Last AOLD event in cycle count cycles (cycles) - uint32 ascd_events_count = 15; // Number of Short Circuit in Discharge (ASCD) events (events) - uint32 ascd_last_event = 16; // Last ASCD event in cycle count cycles (cycles) - uint32 ascc_events_count = 17; // Number of Short Circuit in Charge (ASCC) events (events) - uint32 ascc_last_event = 18; // Last ASCC event in cycle count cycles (cycles) - uint32 otc_events_count = 19; // Number of over temperature in Charge (OTC) events (events) - uint32 otc_last_event = 20; // Last OTC event in cycle count cycles (cycles) - uint32 otd_events_count = 21; // Number of over temperature in Discharge (OTD) events (events) - uint32 otd_last_event = 22; // Last OTD event in cycle count cycles (cycles) - uint32 otf_events_count = 23; // Number of over temperature in FET (OTF) events (events) - uint32 otf_last_event = 24; // Last OTF event in cycle count cycles (cycles) + uint32 cov_events_count = 1; // Number of cell over voltage (COV) events (events). + uint32 cov_last_event = 2; // Last COV event in cycle count cycles (cycles). + uint32 cuv_events_count = 3; // Number of cell under voltage (CUV) events (events). + uint32 cuv_last_event = 4; // Last CUV event in cycle count cycles (cycles). + uint32 ocd1_events_count = 5; // Number of over current in Discharge 1 (OCD1) events (events). + uint32 ocd1_last_event = 6; // Last OCD1 event in cycle count cycles (cycles). + uint32 ocd2_events_count = 7; // Number of over current in Discharge 2 (OCD2) events (events). + uint32 ocd2_last_event = 8; // Last OCD2 event in cycle count cycles (cycles). + uint32 occ1_events_count = 9; // Number of over current in Charge 1 (OCC1) events (events). + uint32 occ1_last_event = 10; // Last OCC1 event in cycle count cycles (cycles). + uint32 occ2_events_count = 11; // Number of over current in Charge 2 (OCC2) events (events). + uint32 occ2_last_event = 12; // Last OCC2 event in cycle count cycles (cycles). + uint32 aold_events_count = 13; // Number of Overload in discharge (AOLD) events (events). + uint32 aold_last_event = 14; // Last AOLD event in cycle count cycles (cycles). + uint32 ascd_events_count = 15; // Number of Short Circuit in Discharge (ASCD) events (events). + uint32 ascd_last_event = 16; // Last ASCD event in cycle count cycles (cycles). + uint32 ascc_events_count = 17; // Number of Short Circuit in Charge (ASCC) events (events). + uint32 ascc_last_event = 18; // Last ASCC event in cycle count cycles (cycles). + uint32 otc_events_count = 19; // Number of over temperature in Charge (OTC) events (events). + uint32 otc_last_event = 20; // Last OTC event in cycle count cycles (cycles). + uint32 otd_events_count = 21; // Number of over temperature in Discharge (OTD) events (events). + uint32 otd_last_event = 22; // Last OTD event in cycle count cycles (cycles). + uint32 otf_events_count = 23; // Number of over temperature in FET (OTF) events (events). + uint32 otf_last_event = 24; // Last OTF event in cycle count cycles (cycles). } - BatterySafetyEvents safety_events = 28; // Battery safety events + BatterySafetyEvents safety_events = 28; // Battery safety events. message BatteryChargingEvents { - uint32 charge_termination_events_count = 1; // Total number of valid charge termination events (events) - uint32 charge_termination_last_event = 2; // Last valid charge termination in cycle count cycles (cycles) + uint32 charge_termination_events_count = 1; // Total number of valid charge termination events (events). + uint32 charge_termination_last_event = 2; // Last valid charge termination in cycle count cycles (cycles). } - BatteryChargingEvents charging_events = 29; // Battery charging events + BatteryChargingEvents charging_events = 29; // Battery charging events. } // The attitude of the drone. message Attitude { - float roll = 1; // Roll angle (-180°..180°) - float pitch = 2; // Pitch angle (-180°..180°) - float yaw = 3; // Yaw angle (-180°..180°) + float roll = 1; // Roll angle (-180°..180°). + float pitch = 2; // Pitch angle (-180°..180°). + float yaw = 3; // Yaw angle (-180°..180°). } // Drone altitude over seabed, typically obtained from a DVL. message Altitude { - float value = 1; // Drone altitude over seabed (m) - bool is_valid = 2; // If altitude is valid or not + float value = 1; // Drone altitude over seabed (m). + bool is_valid = 2; // If altitude is valid or not. } -// Distance to an object in front of the drone +// Distance to an object in front of the drone. // // Typically obtained from a 1D pinger. message ForwardDistance { - float value = 1; // Distance in front of drone (m) - bool is_valid = 2; // If distance reading is valid or not + float value = 1; // Distance in front of drone (m). + bool is_valid = 2; // If distance reading is valid or not. } // Position estimate from the Extended Kalman filter based observer if a DVL is connected. message PositionEstimate { - float northing = 1; // Position from reset point (m) - float easting = 2; // Position from reset point (m) - float heading = 3; // Continuous heading estimate (rad) - float surge_rate = 4; // Velocity in surge (m/s) - float sway_rate = 5; // Velocity in sway (m/s) - float yaw_rate = 6; // Rotaion rate in yaw (rad/s) - float ocean_current = 7; // Estimated ocean current (m/s) - float odometer = 8; // Travelled distance since reset (m) - bool is_valid = 9; // If the estimate can be trusted - LatLongPosition global_position = 10; // Best estimate of the global position in decimal degrees - repeated NavigationSensorStatus navigation_sensors = 11; // List of available sensors with status - float speed_over_ground = 12; // Speed over ground (m/s) - float course_over_ground = 13; // Course over ground (°) - int32 time_since_reset_sec = 14; // Time since reset (s) + float northing = 1; // Position from reset point (m). + float easting = 2; // Position from reset point (m). + float heading = 3; // Continuous heading estimate (rad). + float surge_rate = 4; // Velocity in surge (m/s). + float sway_rate = 5; // Velocity in sway (m/s). + float yaw_rate = 6; // Rotaion rate in yaw (rad/s). + float ocean_current = 7; // Estimated ocean current (m/s). + float odometer = 8; // Travelled distance since reset (m). + bool is_valid = 9; // If the estimate can be trusted. + LatLongPosition global_position = 10; // Best estimate of the global position in decimal degrees. + repeated NavigationSensorStatus navigation_sensors = 11; // List of available sensors with status. + float speed_over_ground = 12; // Speed over ground (m/s). + float course_over_ground = 13; // Course over ground (°). + int32 time_since_reset_sec = 14; // Time since reset (s). } // Heading source used during reset of the position estimate. enum HeadingSource { - HEADING_SOURCE_UNSPECIFIED = 0; // Unspecified - HEADING_SOURCE_DRONE_COMPASS = 1; // Uses the drone compass to set the heading - HEADING_SOURCE_MANUAL_INPUT = 2; // Used when the user sets the heading manually + HEADING_SOURCE_UNSPECIFIED = 0; // Unspecified. + HEADING_SOURCE_DRONE_COMPASS = 1; // Uses the drone compass to set the heading. + HEADING_SOURCE_MANUAL_INPUT = 2; // Used when the user sets the heading manually. } -// ResetPositionSettings used during reset of the position estimate. +// Settings used when resetting the position estimate. message ResetPositionSettings { - HeadingSource heading_source_during_reset = 1; // Option to use the drone compass or due North as heading during reset - float manual_heading = 2; // Heading in degrees (0-359) + HeadingSource heading_source_during_reset = 1; // Option to use the drone compass or due North as heading during reset. + float manual_heading = 2; // Heading in degrees (0-359). ResetCoordinateSource reset_coordinate_source = 3; // Option to use the device GPS or a manual coordinate. - LatLongPosition reset_coordinate = 4; // Reset coordinate in decimal degrees + LatLongPosition reset_coordinate = 4; // Reset coordinate in decimal degrees. } +// The coordinate source to use when resetting the position estimate. enum ResetCoordinateSource { RESET_COORDINATE_SOURCE_UNSPECIFIED = 0; // Unspecified, fallback to device GPS RESET_COORDINATE_SOURCE_DEVICE_GPS = 1; // Uses the device GPS to set the reset point @@ -429,130 +432,130 @@ enum ResetCoordinateSource { // DVL raw transducer data. message DvlTransducer { - int32 id = 1; // Transducer ID, 3 beams for Nucleus DVL, 4 beams for DVL A50 - float velocity = 2; // Velocity (m/s) - float distance = 3; // Distance (m) - bool beam_valid = 4; // Beam validity - float rssi = 5; // Received signal strength indicator: strength of the signal received by this transducer (dBm) - float nsd = 6; // Noise spectral density: strength of the background noise received by this transducer (dBm) + int32 id = 1; // Transducer ID, 3 beams for Nucleus DVL, 4 beams for DVL A50. + float velocity = 2; // Velocity (m/s). + float distance = 3; // Distance (m). + bool beam_valid = 4; // Beam validity. + float rssi = 5; // Received signal strength indicator: strength of the signal received by this transducer (dBm). + float nsd = 6; // Noise spectral density: strength of the background noise received by this transducer (dBm). } // DVL raw velocity data. message DvlVelocity { - NavigationSensorID sensor_id = 1; // Sensor id - int32 status = 2; // Vendor-specific status of the DVL - float delta_time = 3; // Time since last velocity measurement (ms) - float fom = 4; // Figure of merit, a measure of the accuracy of the velocities (m/s) - Vector3 velocity = 5; // Velocity, x forward, y left, z down (m/s) - bool is_water_tracking = 6; // Water tracking status - repeated DvlTransducer transducers = 7; // List of transducers + NavigationSensorID sensor_id = 1; // Sensor id. + int32 status = 2; // Vendor-specific status of the DVL. + float delta_time = 3; // Time since last velocity measurement (ms). + float fom = 4; // Figure of merit, a measure of the accuracy of the velocities (m/s). + Vector3 velocity = 5; // Velocity, x forward, y left, z down (m/s). + bool is_water_tracking = 6; // Water tracking status. + repeated DvlTransducer transducers = 7; // List of transducers. } // Water depth of the drone. message Depth { - float value = 1; // Drone depth below surface (m) + float value = 1; // Drone depth below surface (m). } // Reference for the control system. // Note that the internal heading reference is not relative to North, use // (ControlHealth.heading_error + pose.yaw) instead. message Reference { - float surge = 1; // Reference from joystick surge input (0..1) - float sway = 2; // Reference from joystick sway input (0..1) - float heave = 3; // Reference from joystick heave input (0..1) - float yaw = 4; // Reference from joystick yaw input (0..1) - float depth = 5; // Reference drone depth below surface (m) - float heading = 6; // Reference used in auto heading mode, gyro based (°) - float altitude = 7; // Reference used in auto altitude mode (m) + float surge = 1; // Reference from joystick surge input (0..1). + float sway = 2; // Reference from joystick sway input (0..1). + float heave = 3; // Reference from joystick heave input (0..1). + float yaw = 4; // Reference from joystick yaw input (0..1). + float depth = 5; // Reference drone depth below surface (m). + float heading = 6; // Reference used in auto heading mode, gyro based (°). + float altitude = 7; // Reference used in auto altitude mode (m). } // Notification is used for displaying info, warnings, and errors to the user. message Notification { - NotificationType type = 1; // Notification to be displayed to the user - NotificationLevel level = 2; // Level of the notification, info, warning or error - google.protobuf.Any value = 3; // Optional value to be displayed in the message - google.protobuf.Timestamp timestamp = 4; // Timestamp of the notification + NotificationType type = 1; // Notification to be displayed to the user. + NotificationLevel level = 2; // Level of the notification, info, warning or error. + google.protobuf.Any value = 3; // Optional value to be displayed in the message. + google.protobuf.Timestamp timestamp = 4; // Timestamp of the notification. } // Notification is used for displaying info, warnings, and errors to the user. enum NotificationType { - NOTIFICATION_TYPE_UNSPECIFIED = 0; // Unspecified - NOTIFICATION_TYPE_POSITION_ESTIMATE_IS_INACCURATE = 1; // Position estimate is inaccurate - NOTIFICATION_TYPE_DRONE_POSITION_IS_UNKNOWN = 2; // Drone position is unknown - NOTIFICATION_TYPE_USER_POSITION_IS_UNKNOWN = 3; // User position is unknown - NOTIFICATION_TYPE_NO_MISSION_LOADED = 4; // No mission is loaded - NOTIFICATION_TYPE_MISSION_LOADED = 5; // Mission is loaded - NOTIFICATION_TYPE_FAILED_TO_LOAD_MISSION = 6; // Failed to load mission - NOTIFICATION_TYPE_MISSION_COMPLETE = 7; // Mission is complete - NOTIFICATION_TYPE_INSTRUCTION_COMPLETE = 8; // Instruction is complete - NOTIFICATION_TYPE_WAYPOINT_REACHED = 9; // Waypoint reached - NOTIFICATION_TYPE_DEPTH_TARGET_REACHED = 10; // Depth set point is reached - NOTIFICATION_TYPE_ALTITUDE_TARGET_REACHED = 11; // Altitude set point is reached - NOTIFICATION_TYPE_WAYPOINT_IS_TOO_FAR_AWAY = 12; // The waypoint is too far away - NOTIFICATION_TYPE_DEPTH_SET_POINT_IS_TOO_FAR_AWAY = 13; // The depth set point is too far away - NOTIFICATION_TYPE_TIME_TO_COMPLETE_IS_TOO_LONG = 14; // The time to complete the mission is too long - NOTIFICATION_TYPE_RETURNING_TO_HOME = 15; // Returning to home - NOTIFICATION_TYPE_GO_TO_SURFACE = 16; // Go to surface - NOTIFICATION_TYPE_GO_TO_SEABED = 17; // Go to seabed with an altimeter - NOTIFICATION_TYPE_GO_TO_WAYPOINT = 18; // Go to waypoint - NOTIFICATION_TYPE_GO_TO_DEPTH_SET_POINT = 19; // Go to depth set point - NOTIFICATION_TYPE_GO_TO_WAYPOINT_WITH_DEPTH_SET_POINT = 20; // Go to waypoint with depth set point - NOTIFICATION_TYPE_MISSION_STARTED = 21; // Mission is started - NOTIFICATION_TYPE_MISSION_PAUSED = 22; // Mission is paused - NOTIFICATION_TYPE_MISSION_RESUMED = 23; // Mission is resumed - NOTIFICATION_TYPE_MISSION_ABORTED = 24; // Mission is aborted - NOTIFICATION_TYPE_DRONE_IS_STUCK = 25; // Drone is stuck during a mission - NOTIFICATION_TYPE_WAIT_FOR = 26; // Wait for instruction running - NOTIFICATION_TYPE_CAMERA_ACTION = 27; // Camera action initiated - NOTIFICATION_TYPE_SET_TILT_MAIN_CAMERA = 28; // Set tilt for main camera - NOTIFICATION_TYPE_SET_TILT_MULTIBEAM = 29; // Set tilt for multibeam - NOTIFICATION_TYPE_INSTRUCTION_SKIPPED = 30; // When an instruction is not available in the ROV - NOTIFICATION_TYPE_DVL_HIGH_TEMPERATURE_DETECTED = 31; // DVL high temperature detected - NOTIFICATION_TYPE_DVL_THERMAL_PROTECTION_MODE_DETECTED = 32; // DVL thermal protection mode detected + NOTIFICATION_TYPE_UNSPECIFIED = 0; // Unspecified. + NOTIFICATION_TYPE_POSITION_ESTIMATE_IS_INACCURATE = 1; // Position estimate is inaccurate. + NOTIFICATION_TYPE_DRONE_POSITION_IS_UNKNOWN = 2; // Drone position is unknown. + NOTIFICATION_TYPE_USER_POSITION_IS_UNKNOWN = 3; // User position is unknown. + NOTIFICATION_TYPE_NO_MISSION_LOADED = 4; // No mission is loaded. + NOTIFICATION_TYPE_MISSION_LOADED = 5; // Mission is loaded. + NOTIFICATION_TYPE_FAILED_TO_LOAD_MISSION = 6; // Failed to load mission. + NOTIFICATION_TYPE_MISSION_COMPLETE = 7; // Mission is complete. + NOTIFICATION_TYPE_INSTRUCTION_COMPLETE = 8; // Instruction is complete. + NOTIFICATION_TYPE_WAYPOINT_REACHED = 9; // Waypoint reached. + NOTIFICATION_TYPE_DEPTH_TARGET_REACHED = 10; // Depth set point is reached. + NOTIFICATION_TYPE_ALTITUDE_TARGET_REACHED = 11; // Altitude set point is reached. + NOTIFICATION_TYPE_WAYPOINT_IS_TOO_FAR_AWAY = 12; // The waypoint is too far away. + NOTIFICATION_TYPE_DEPTH_SET_POINT_IS_TOO_FAR_AWAY = 13; // The depth set point is too far away. + NOTIFICATION_TYPE_TIME_TO_COMPLETE_IS_TOO_LONG = 14; // The time to complete the mission is too long. + NOTIFICATION_TYPE_RETURNING_TO_HOME = 15; // Returning to home. + NOTIFICATION_TYPE_GO_TO_SURFACE = 16; // Go to surface. + NOTIFICATION_TYPE_GO_TO_SEABED = 17; // Go to seabed with an altimeter. + NOTIFICATION_TYPE_GO_TO_WAYPOINT = 18; // Go to waypoint. + NOTIFICATION_TYPE_GO_TO_DEPTH_SET_POINT = 19; // Go to depth set point. + NOTIFICATION_TYPE_GO_TO_WAYPOINT_WITH_DEPTH_SET_POINT = 20; // Go to waypoint with depth set point. + NOTIFICATION_TYPE_MISSION_STARTED = 21; // Mission is started. + NOTIFICATION_TYPE_MISSION_PAUSED = 22; // Mission is paused. + NOTIFICATION_TYPE_MISSION_RESUMED = 23; // Mission is resumed. + NOTIFICATION_TYPE_MISSION_ABORTED = 24; // Mission is aborted. + NOTIFICATION_TYPE_DRONE_IS_STUCK = 25; // Drone is stuck during a mission. + NOTIFICATION_TYPE_WAIT_FOR = 26; // Wait for instruction running. + NOTIFICATION_TYPE_CAMERA_ACTION = 27; // Camera action initiated. + NOTIFICATION_TYPE_SET_TILT_MAIN_CAMERA = 28; // Set tilt for main camera. + NOTIFICATION_TYPE_SET_TILT_MULTIBEAM = 29; // Set tilt for multibeam. + NOTIFICATION_TYPE_INSTRUCTION_SKIPPED = 30; // When an instruction is not available in the ROV. + NOTIFICATION_TYPE_DVL_HIGH_TEMPERATURE_DETECTED = 31; // DVL high temperature detected. + NOTIFICATION_TYPE_DVL_THERMAL_PROTECTION_MODE_DETECTED = 32; // DVL thermal protection mode detected. } // List of available notification levels. enum NotificationLevel { - NOTIFICATION_LEVEL_UNSPECIFIED = 0; // Unspecified - NOTIFICATION_LEVEL_INFO = 1; // Info - NOTIFICATION_LEVEL_WARNING = 2; // Warning - NOTIFICATION_LEVEL_ERROR = 3; // Error + NOTIFICATION_LEVEL_UNSPECIFIED = 0; // Unspecified. + NOTIFICATION_LEVEL_INFO = 1; // Information. + NOTIFICATION_LEVEL_WARNING = 2; // Warning. + NOTIFICATION_LEVEL_ERROR = 3; // Error. } // Control Force is used for showing the requested control force in each direction in Newtons. message ControlForce { - float surge = 1; // Force in surge (N) - float sway = 2; // Force in sway (N) - float heave = 3; // Force in heave (N) - float yaw = 4; // Moment in yaw (Nm) + float surge = 1; // Force in surge (N). + float sway = 2; // Force in sway (N). + float heave = 3; // Force in heave (N). + float yaw = 4; // Moment in yaw (Nm). } // Controller health is used for showing the state of the controller with an relative error and load from 0 to 1. message ControllerHealth { - float depth_error = 1; // Depth error in meters (m) - float depth_health = 2; // Depth controller load (0..1) - float heading_error = 3; // Heading error in degrees (°) - float heading_health = 4; // Heading controller load (0..1) + float depth_error = 1; // Depth error in meters (m). + float depth_health = 2; // Depth controller load (0..1). + float heading_error = 3; // Heading error in degrees (°). + float heading_health = 4; // Heading controller load (0..1). } // Amount of time the drone has been submerged. // // The drone starts incrementing this value when the depth is above 250 mm. message DiveTime { - int32 value = 1; // Number of seconds the drone has been submerged + int32 value = 1; // Number of seconds the drone has been submerged. } -// Which cameras are supposed to be recording +// Which cameras are supposed to be recording. message RecordOn { - bool main = 1; // Record the main camera - bool guestport = 2; // Record external camera - bool multibeam = 3; // Record multibeam + bool main = 1; // Record the main camera. + bool guestport = 2; // Record external camera. + bool multibeam = 3; // Record multibeam. } // Storage space. message StorageSpace { - int64 total_space = 1; // Total bytes of storage space (B) - int64 free_space = 2; // Available bytes of storage space (B) + int64 total_space = 1; // Total bytes of storage space (B). + int64 free_space = 2; // Available bytes of storage space (B). } // Compass calibration state. @@ -563,68 +566,68 @@ message CalibrationState { // When calibration is started, the status will indicate the active (upfacing) axis. enum Status { - STATUS_UNSPECIFIED = 0; // Unspecified status - STATUS_NOT_CALIBRATING = 1; // Compass is not currently calibrating - STATUS_CALIBRATING_NO_AXIS = 2; // Compass is calibrating but active calibration axis cannot be determined - STATUS_CALIBRATING_X_POSITIVE = 3; // Compass is calibrating and the positive X axis is active - STATUS_CALIBRATING_X_NEGATIVE = 4; // Compass is calibrating and the negative X axis is active - STATUS_CALIBRATING_Y_POSITIVE = 5; // Compass is calibrating and the positive Y axis is active - STATUS_CALIBRATING_Y_NEGATIVE = 6; // Compass is calibrating and the negative Y axis is active - STATUS_CALIBRATING_Z_POSITIVE = 7; // Compass is calibrating and the positive Z axis is active - STATUS_CALIBRATING_Z_NEGATIVE = 8; // Compass is calibrating and the negative Z axis is active - STATUS_CALIBRATING_THRUSTER = 9; // Compass is calibrating for thruster interferance + STATUS_UNSPECIFIED = 0; // Unspecified status. + STATUS_NOT_CALIBRATING = 1; // Compass is not currently calibrating. + STATUS_CALIBRATING_NO_AXIS = 2; // Compass is calibrating but active calibration axis cannot be determined. + STATUS_CALIBRATING_X_POSITIVE = 3; // Compass is calibrating and the positive X axis is active. + STATUS_CALIBRATING_X_NEGATIVE = 4; // Compass is calibrating and the negative X axis is active. + STATUS_CALIBRATING_Y_POSITIVE = 5; // Compass is calibrating and the positive Y axis is active. + STATUS_CALIBRATING_Y_NEGATIVE = 6; // Compass is calibrating and the negative Y axis is active. + STATUS_CALIBRATING_Z_POSITIVE = 7; // Compass is calibrating and the positive Z axis is active. + STATUS_CALIBRATING_Z_NEGATIVE = 8; // Compass is calibrating and the negative Z axis is active. + STATUS_CALIBRATING_THRUSTER = 9; // Compass is calibrating for thruster interferance. } - Status status = 1; // Current calibration status - float progress_x_positive = 2; // Progress for the positive X axis (0..1) - float progress_x_negative = 3; // Progress for the negative X axis (0..1) - float progress_y_positive = 4; // Progress for the positive Y axis (0..1) - float progress_y_negative = 5; // Progress for the negative X axis (0..1) - float progress_z_positive = 6; // Progress for the positive Z axis (0..1) - float progress_z_negative = 7; // Progress for the negative Z axis (0..1) - float progress_thruster = 8; // Progress for the thruster calibration (0..1) + Status status = 1; // Current calibration status. + float progress_x_positive = 2; // Progress for the positive X axis (0..1). + float progress_x_negative = 3; // Progress for the negative X axis (0..1). + float progress_y_positive = 4; // Progress for the positive Y axis (0..1). + float progress_y_negative = 5; // Progress for the negative X axis (0..1). + float progress_z_positive = 6; // Progress for the positive Z axis (0..1). + float progress_z_negative = 7; // Progress for the negative Z axis (0..1). + float progress_thruster = 8; // Progress for the thruster calibration (0..1). } // Connection speed between drone and Surface Unit. message IperfStatus { - float sent = 1; // Transfer rate from drone to Surface Unit (Mbit/s) - float received = 2; // Transfer rate from Surface Unit to drone (Mbit/s) + float sent = 1; // Transfer rate from drone to Surface Unit (Mbit/s). + float received = 2; // Transfer rate from Surface Unit to drone (Mbit/s). } // Number of spectators connected to video stream. message NStreamers { - int32 main = 1; // The number of clients to the main camera stream - int32 guestport = 2; // The number of clients to the guestport camera stream + int32 main = 1; // The number of clients to the main camera stream. + int32 guestport = 2; // The number of clients to the guestport camera stream. } // Angle of tilt camera in degrees. message TiltAngle { - float value = 1; // Tilt angle (°) + float value = 1; // Tilt angle (°). } -// Relative velocity of tilt +// Relative velocity of tilt. message TiltVelocity { - float value = 1; // Relative angular velocity of tilt (-1..1), negative means down and positive means up + float value = 1; // Relative angular velocity of tilt (-1..1), negative means down and positive means up. } -// Drone models produced by Blueye +// Drone models produced by Blueye. enum Model { - MODEL_UNSPECIFIED = 0; // ModelName not specified - MODEL_PIONEER = 1; // Blueye Pioneer, the first model - MODEL_PRO = 2; // Blueye Pro, features camera tilt - MODEL_X1 = 4; // Blueye X1, features camera tilt and one guest port - MODEL_X3 = 3; // Blueye X3, features support for peripherals - MODEL_X3_ULTRA = 6; // Blueye X3 Ultra + MODEL_UNSPECIFIED = 0; // ModelName not specified. + MODEL_PIONEER = 1; // Blueye Pioneer, the first model. + MODEL_PRO = 2; // Blueye Pro, features camera tilt. + MODEL_X1 = 4; // Blueye X1, features camera tilt and one guest port. + MODEL_X3 = 3; // Blueye X3, features support for peripherals. + MODEL_X3_ULTRA = 6; // Blueye X3 Ultra. MODEL_NEXT = 5; // Blueye ? } // Depth sensors used by the drone. enum PressureSensorType { - PRESSURE_SENSOR_TYPE_UNSPECIFIED = 0; // Depth sensor type not specified - PRESSURE_SENSOR_TYPE_NOT_CONNECTED = 1; // No se - PRESSURE_SENSOR_TYPE_MS5837_30BA26 = 2; // Thh MS5837 30BA26 pressure sensor - PRESSURE_SENSOR_TYPE_KELLER_PA7LD = 3; // The extended depth sensor using the Keller PA7LD pressure sensor - PRESSURE_SENSOR_TYPE_MS5637_02BA03 = 4; // The internal pressure sensor using the MS5637 02BA03 pressure sensor + PRESSURE_SENSOR_TYPE_UNSPECIFIED = 0; // Depth sensor type not specified. + PRESSURE_SENSOR_TYPE_NOT_CONNECTED = 1; // No sensor connected. + PRESSURE_SENSOR_TYPE_MS5837_30BA26 = 2; // Thh MS5837 30BA26 pressure sensor. + PRESSURE_SENSOR_TYPE_KELLER_PA7LD = 3; // The extended depth sensor using the Keller PA7LD pressure sensor. + PRESSURE_SENSOR_TYPE_MS5637_02BA03 = 4; // The internal pressure sensor using the MS5637 02BA03 pressure sensor. } // Information about the drone. @@ -633,446 +636,450 @@ enum PressureSensorType { // internal components in the drone. Primarily used for diagnostics, or to // determine the origin of a logfile. message DroneInfo { - string blunux_version = 1; // Blunux version string - bytes serial_number = 2; // Drone serial number - bytes hardware_id = 3; // Main computer unique identifier - Model model = 4; // Drone model - bytes mb_serial = 5; // Motherboard serial number - bytes bb_serial = 6; // Backbone serial number - bytes ds_serial = 10; // Drone stack serial number - bytes mb_uid = 7; // Motherboard unique identifier - bytes bb_uid = 8; // Backbone unique identifier - GuestPortInfo gp = 9; // GuestPortInfo - PressureSensorType depth_sensor = 11; // Type of depth sensor that is connected to the drone + string blunux_version = 1; // Blunux version string. + bytes serial_number = 2; // Drone serial number. + bytes hardware_id = 3; // Main computer unique identifier. + Model model = 4; // Drone model. + bytes mb_serial = 5; // Motherboard serial number. + bytes bb_serial = 6; // Backbone serial number. + bytes ds_serial = 10; // Drone stack serial number. + bytes mb_uid = 7; // Motherboard unique identifier. + bytes bb_uid = 8; // Backbone unique identifier. + GuestPortInfo gp = 9; // Guest port information. + PressureSensorType depth_sensor = 11; // Type of depth sensor that is connected to the drone. } // Known error states for the drone. message ErrorFlags { - // Acknowledge message not received for a message published to internal micro controller + // Acknowledge message not received for a message published to internal micro controller. bool pmu_comm_ack = 1; - bool pmu_comm_stream = 2; // Error in communication with internal micro controller - bool depth_read = 3; // Error reading depth sensor value - bool depth_spike = 4; // Sudden spike in value read from depth sensor - bool inner_pressure_read = 5; // Error reading inner pressure of the drone - bool inner_pressure_spike = 6; // Sudden spike in inner preassure - bool compass_calibration = 7; // Compass needs calibration - bool tilt_calibration = 8; // Error during calibration of tilt endpoints - bool gp1_read = 9; // Guest port 1 read error - bool gp2_read = 10; // Guest port 2 read error - bool gp3_read = 11; // Guest port 3 read error - bool gp1_not_flashed = 12; // Guest port 1 not flashed - bool gp2_not_flashed = 13; // Guest port 2 not flashed - bool gp3_not_flashed = 14; // Guest port 3 not flashed - bool gp1_unknown_device = 15; // Unknown device on guest port 1 - bool gp2_unknown_device = 16; // Unknown device on guest port 2 - bool gp3_unknown_device = 17; // Unknown device on guest port 3 - bool gp1_device_connection = 18; // Guest port 1 connection error - bool gp2_device_connection = 19; // Guest port 2 connection error - bool gp3_device_connection = 20; // Guest port 3 connection error - bool gp1_device = 21; // Guest port 1 device error - bool gp2_device = 22; // Guest port 2 device error - bool gp3_device = 23; // Guest port 3 device error - bool drone_serial_not_set = 24; // Drone serial number not set - bool drone_serial = 25; // Drone serial number error - bool mb_eeprom_read = 26; // MB eeprom read error - bool bb_eeprom_read = 27; // BB eeprom read error - bool mb_eeprom_not_flashed = 28; // MB eeprom not flashed - bool bb_eeprom_not_flashed = 29; // BB eeprom not flashed - bool main_camera_connection = 30; // We don't get buffers from the main camera - bool main_camera_firmware = 31; // The main camera firmware is wrong - bool guestport_camera_connection = 32; // We don't get buffers from the guestport camera - bool guestport_camera_firmware = 33; // The guestport camera firmware is wrong - bool mb_serial = 34; // MB serial number error - bool bb_serial = 35; // BB serial number error - bool ds_serial = 36; // DS serial number error - bool gp_current_read = 37; // Error reading GP current - bool gp_current = 38; // Max GP current exceeded - bool gp1_bat_current = 39; // Max battery current exceeded on GP1 - bool gp2_bat_current = 40; // Max battery current exceeded on GP2 - bool gp3_bat_current = 41; // Max battery current exceeded on GP3 - bool gp_20v_current = 42; // Max 20V current exceeded on GP - bool dvl_thermal_protection_mode = 43; // DVL is in thermal protection mode - bool dvl_no_power = 44; // GP protection has been triggered at boot or faulty DVL - bool usb_disconnect = 45; // USB disconnect - bool video_urb_error = 46; // Video URB error + bool pmu_comm_stream = 2; // Error in communication with internal micro controller. + bool depth_read = 3; // Error reading depth sensor value. + bool depth_spike = 4; // Sudden spike in value read from depth sensor. + bool inner_pressure_read = 5; // Error reading inner pressure of the drone. + bool inner_pressure_spike = 6; // Sudden spike in inner preassure. + bool compass_calibration = 7; // Compass needs calibration. + bool tilt_calibration = 8; // Error during calibration of tilt endpoints. + bool gp1_read = 9; // Guest port 1 read error. + bool gp2_read = 10; // Guest port 2 read error. + bool gp3_read = 11; // Guest port 3 read error. + bool gp1_not_flashed = 12; // Guest port 1 not flashed. + bool gp2_not_flashed = 13; // Guest port 2 not flashed. + bool gp3_not_flashed = 14; // Guest port 3 not flashed. + bool gp1_unknown_device = 15; // Unknown device on guest port 1. + bool gp2_unknown_device = 16; // Unknown device on guest port 2. + bool gp3_unknown_device = 17; // Unknown device on guest port 3. + bool gp1_device_connection = 18; // Guest port 1 connection error. + bool gp2_device_connection = 19; // Guest port 2 connection error. + bool gp3_device_connection = 20; // Guest port 3 connection error. + bool gp1_device = 21; // Guest port 1 device error. + bool gp2_device = 22; // Guest port 2 device error. + bool gp3_device = 23; // Guest port 3 device error. + bool drone_serial_not_set = 24; // Drone serial number not set. + bool drone_serial = 25; // Drone serial number error. + bool mb_eeprom_read = 26; // MB eeprom read error. + bool bb_eeprom_read = 27; // BB eeprom read error. + bool mb_eeprom_not_flashed = 28; // MB eeprom not flashed. + bool bb_eeprom_not_flashed = 29; // BB eeprom not flashed. + bool main_camera_connection = 30; // We don't get buffers from the main camera. + bool main_camera_firmware = 31; // The main camera firmware is wrong. + bool guestport_camera_connection = 32; // We don't get buffers from the guestport camera. + bool guestport_camera_firmware = 33; // The guestport camera firmware is wrong. + bool mb_serial = 34; // MB serial number error. + bool bb_serial = 35; // BB serial number error. + bool ds_serial = 36; // DS serial number error. + bool gp_current_read = 37; // Error reading GP current. + bool gp_current = 38; // Max GP current exceeded. + bool gp1_bat_current = 39; // Max battery current exceeded on GP1. + bool gp2_bat_current = 40; // Max battery current exceeded on GP2. + bool gp3_bat_current = 41; // Max battery current exceeded on GP3. + bool gp_20v_current = 42; // Max 20V current exceeded on GP. + bool dvl_thermal_protection_mode = 43; // DVL is in thermal protection mode. + bool dvl_no_power = 44; // GP protection has been triggered at boot or faulty DVL. + bool usb_disconnect = 45; // USB disconnect. + bool video_urb_error = 46; // Video URB error. } // Available camera resolutions. enum Resolution { - RESOLUTION_UNSPECIFIED = 0; // Resolution not specified - RESOLUTION_FULLHD_1080P = 1; // 1080p Full HD resolution - RESOLUTION_HD_720P = 2; // 720p HD resolution + RESOLUTION_UNSPECIFIED = 0; // Resolution not specified. + RESOLUTION_FULLHD_1080P = 1; // 1080p Full HD resolution. + RESOLUTION_HD_720P = 2; // 720p HD resolution. } // Available camera frame rates. enum Framerate { - FRAMERATE_UNSPECIFIED = 0; // Framerate not specified - FRAMERATE_FPS_30 = 1; // 30 frames per second - FRAMERATE_FPS_25 = 2; // 25 frames per second + FRAMERATE_UNSPECIFIED = 0; // Framerate not specified. + FRAMERATE_FPS_30 = 1; // 30 frames per second. + FRAMERATE_FPS_25 = 2; // 25 frames per second. } // Which camera to control. enum Camera { - CAMERA_UNSPECIFIED = 0; // Camera not specified - CAMERA_MAIN = 1; // Main camera - CAMERA_GUESTPORT = 2; // Guestport camera + CAMERA_UNSPECIFIED = 0; // Camera not specified. + CAMERA_MAIN = 1; // Main camera. + CAMERA_GUESTPORT = 2; // Guest port camera. } // Camera parameters. message CameraParameters { - int32 h264_bitrate = 1; // Bitrate of the h264 stream (bit/sec) - int32 mjpg_bitrate = 2; // Bitrate of the MJPG stream used for still pictures (bit/sec) - int32 exposure = 3; // Shutter speed (1/10000 * s), -1 for automatic exposure - int32 white_balance = 4; // White balance temperature (2800..9300), -1 for automatic white balance - int32 hue = 5; // Hue (-40..40), 0 as default + int32 h264_bitrate = 1; // Bitrate of the h264 stream (bit/sec). + int32 mjpg_bitrate = 2; // Bitrate of the MJPG stream used for still pictures (bit/sec). + int32 exposure = 3; // Shutter speed (1/10000 * s), -1 for automatic exposure. + int32 white_balance = 4; // White balance temperature (2800..9300), -1 for automatic white balance. + int32 hue = 5; // Hue (-40..40), 0 as default. - float gain = 9; // Iso gain (0..1) + float gain = 9; // Iso gain (0..1). - Resolution resolution = 6; // Stream, recording and image resolution - Framerate framerate = 7; // Stream and recording framerate + Resolution resolution = 6; // Stream, recording and image resolution. + Framerate framerate = 7; // Stream and recording framerate. Camera camera = 8; // Which camera the parameters belong to. } // Available temperature units. enum TemperatureUnit { - TEMPERATURE_UNIT_UNSPECIFIED = 0; // Temperature unit not specified - TEMPERATURE_UNIT_CELSIUS = 1; // Temperature should be displayed as Celsius - TEMPERATURE_UNIT_FAHRENHEIT = 2; // Temperature should be displayed as Fahrenheit + TEMPERATURE_UNIT_UNSPECIFIED = 0; // Temperature unit not specified. + TEMPERATURE_UNIT_CELSIUS = 1; // Temperature should be displayed as Celsius. + TEMPERATURE_UNIT_FAHRENHEIT = 2; // Temperature should be displayed as Fahrenheit. } // Available logo types. enum LogoType { LOGO_TYPE_UNSPECIFIED = 0; // Logo type not specified - LOGO_TYPE_NONE = 1; // Do not add any logo - LOGO_TYPE_DEFAULT = 2; // Add default logo - LOGO_TYPE_CUSTOM = 3; // Add user defined logo + LOGO_TYPE_NONE = 1; // Do not add any logo. + LOGO_TYPE_DEFAULT = 2; // Add default logo. + LOGO_TYPE_CUSTOM = 3; // Add user defined logo. } // Available depth units. enum DepthUnit { - DEPTH_UNIT_UNSPECIFIED = 0; // Depth unit not specified - DEPTH_UNIT_METERS = 1; // Depth should be displayed as meters - DEPTH_UNIT_FEET = 2; // Depth should be displayed as feet + DEPTH_UNIT_UNSPECIFIED = 0; // Depth unit not specified. + DEPTH_UNIT_METERS = 1; // Depth should be displayed as meters. + DEPTH_UNIT_FEET = 2; // Depth should be displayed as feet. } // Available thickness units. enum ThicknessUnit { - THICKNESS_UNIT_UNSPECIFIED = 0; // Thickness unit not specified - THICKNESS_UNIT_MILLIMETERS = 1; // Thickness should be displayed as millimeters - THICKNESS_UNIT_INCHES = 2; // Thickness should be displayed as inches + THICKNESS_UNIT_UNSPECIFIED = 0; // Thickness unit not specified. + THICKNESS_UNIT_MILLIMETERS = 1; // Thickness should be displayed as millimeters. + THICKNESS_UNIT_INCHES = 2; // Thickness should be displayed as inches. } // Available font sizes for overlay text elements. enum FontSize { - FONT_SIZE_UNSPECIFIED = 0; // Font size not specified - FONT_SIZE_PX15 = 1; // 15 px - FONT_SIZE_PX20 = 2; // 20 px - FONT_SIZE_PX25 = 3; // 25 px - FONT_SIZE_PX30 = 4; // 30 px - FONT_SIZE_PX35 = 5; // 35 px - FONT_SIZE_PX40 = 6; // 40 px + FONT_SIZE_UNSPECIFIED = 0; // Font size not specified. + FONT_SIZE_PX15 = 1; // 15 px. + FONT_SIZE_PX20 = 2; // 20 px. + FONT_SIZE_PX25 = 3; // 25 px. + FONT_SIZE_PX30 = 4; // 30 px. + FONT_SIZE_PX35 = 5; // 35 px. + FONT_SIZE_PX40 = 6; // 40 px. } // Overlay parameters. // // All available parameters that can be used to configure telemetry overlay on video recordings. message OverlayParameters { - bool temperature_enabled = 1; // If temperature should be included - bool depth_enabled = 2; // If depth should be included - bool heading_enabled = 3; // If heading should be included - bool tilt_enabled = 4; // If camera tilt angle should be included - bool thickness_enabled = 18;// If camera tilt angle should be included - bool date_enabled = 5; // If date should be included - bool distance_enabled = 20; // If distance should be included - bool altitude_enabled = 21; // If altitude should be included - bool cp_probe_enabled = 22; // If cp-probe should be included - bool medusa_enabled = 24; // If medusa measurement should be included - bool drone_location_enabled = 23; // If the drone location coordinates should be included - LogoType logo_type = 6; // Which logo should be used - DepthUnit depth_unit = 7; // Which unit should be used for depth: Meter, Feet or None - TemperatureUnit temperature_unit = 8; // Which unit should be used for temperature: Celsius or Fahrenheit - ThicknessUnit thickness_unit = 19; // Which unit should be used for thickness: Millimeters or Inches - int32 timezone_offset = 9; // Timezone offset from UTC (min) - int32 margin_width = 10; // Horizontal margins of text elements (px) - int32 margin_height = 11; // Vertical margins of text elements (px) - FontSize font_size = 12; // Font size of text elements - string title = 13; // Optional title - string subtitle = 14; // Optional subtitle - string date_format = 16; // Posix strftime format string for time stamp - float shading = 17; // Pixel intensity to subtract from text background (0..1), 0: transparent, 1: black -} - -// GuestPort device ID. + bool temperature_enabled = 1; // If temperature should be included. + bool depth_enabled = 2; // If depth should be included. + bool heading_enabled = 3; // If heading should be included. + bool tilt_enabled = 4; // If camera tilt angle should be included. + bool thickness_enabled = 18;// If camera tilt angle should be included. + bool date_enabled = 5; // If date should be included. + bool distance_enabled = 20; // If distance should be included. + bool altitude_enabled = 21; // If altitude should be included. + bool cp_probe_enabled = 22; // If cp-probe should be included. + bool medusa_enabled = 24; // If medusa measurement should be included. + bool drone_location_enabled = 23; // If the drone location coordinates should be included. + LogoType logo_type = 6; // Which logo should be used. + DepthUnit depth_unit = 7; // Which unit should be used for depth: Meter, Feet or None. + TemperatureUnit temperature_unit = 8; // Which unit should be used for temperature: Celsius or Fahrenheit. + ThicknessUnit thickness_unit = 19; // Which unit should be used for thickness: Millimeters or Inches. + int32 timezone_offset = 9; // Timezone offset from UTC (min). + int32 margin_width = 10; // Horizontal margins of text elements (px). + int32 margin_height = 11; // Vertical margins of text elements (px). + FontSize font_size = 12; // Font size of text elements. + string title = 13; // Optional title. + string subtitle = 14; // Optional subtitle. + string date_format = 16; // Posix strftime format string for time stamp. + float shading = 17; // Pixel intensity to subtract from text background (0..1), 0: transparent, 1: black. +} + +// Complete set of supported guest port devices. enum GuestPortDeviceID { - GUEST_PORT_DEVICE_ID_UNSPECIFIED = 0; // Unspecified - GUEST_PORT_DEVICE_ID_BLIND_PLUG = 1; // Blueye blind plug - GUEST_PORT_DEVICE_ID_TEST_STATION = 2; // Blueye test station - GUEST_PORT_DEVICE_ID_DEBUG_SERIAL = 3; // Blueye debug serial - GUEST_PORT_DEVICE_ID_BLUEYE_LIGHT = 4; // Blueye Light - GUEST_PORT_DEVICE_ID_BLUEYE_CAM = 5; // Blueye Cam - GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_LUMEN = 6; // Blue Robotics Lumen - GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_NEWTON = 7; // Blue Robotics Newton - GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_PING_SONAR = 8; // Blue Robotics Ping Sonar - GUEST_PORT_DEVICE_ID_BLUEPRINT_LAB_REACH_ALPHA = 9; // Blueprint Lab Reach Alpha - GUEST_PORT_DEVICE_ID_WATERLINKED_DVL_A50 = 10; // Waterlinked DVL A50 - GUEST_PORT_DEVICE_ID_IMPACT_SUBSEA_ISS360 = 11; // Impact Subsea ISS360 Sonar - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_SEATRAC_X010 = 12; // Blueprint Subsea Seatrac X110 - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M750D = 13; // Blueprint Subsea Oculus M750d - GUEST_PORT_DEVICE_ID_CYGNUS_MINI_ROV_THICKNESS_GAUGE = 14; // Cygnus Mini ROV Thickness Gauge - GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_PING360_SONAR = 15; // Blue Robotics Ping360 Scanning Imaging Sonar - GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_720IM = 16; // Tritech Gemini 720im Multibeam Sonar - GUEST_PORT_DEVICE_ID_BLUEYE_LIGHT_PAIR = 17; // Blueye Light Pair - GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_MICRON = 18; // Tritech Micron Gemini - GUEST_PORT_DEVICE_ID_OCEAN_TOOLS_DIGICP = 19; // Ocean Tools DigiCP - GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_720IK = 20; // Tritech Gemini 720ik Multibeam Sonar - GUEST_PORT_DEVICE_ID_NORTEK_NUCLEUS_1000 = 21; // Nortek Nucleus 1000 DVL - GUEST_PORT_DEVICE_ID_BLUEYE_GENERIC_SERVO = 22; // Blueye Generic Servo - GUEST_PORT_DEVICE_ID_BLUEYE_MULTIBEAM_SERVO = 23; // Blueye Multibeam Skid Servo - GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_DETACHABLE_NEWTON = 24; // Detachable Blue Robotics Newton - GUEST_PORT_DEVICE_ID_INSITU_AQUA_TROLL_500 = 25; // In-Situ Aqua TROLL 500 - GUEST_PORT_DEVICE_ID_MEDUSA_RADIOMETRICS_MS100 = 26; // Medusa Radiometrics Gamma Ray Sensor - GUEST_PORT_DEVICE_ID_LASER_TOOLS_SEA_BEAM = 27; // Laser Tools Sea Beam Underwater Laser - GUEST_PORT_DEVICE_ID_SPOT_X_LASER_SCALERS = 28; // Spot X Laser Scalers - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M1200D = 29; // Blueprint Subsea Oculus M1200d - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M3000D = 30; // Blueprint Subsea Oculus M3000d - GUEST_PORT_DEVICE_ID_INSITU_AQUA_TROLL_100 = 31; // In-Situ Aqua TROLL 100 - GUEST_PORT_DEVICE_ID_INSITU_RDO_PRO_X = 32; // In-Situ RDO PRO-X - GUEST_PORT_DEVICE_ID_INSITU_RDO_BLUE = 33; // In-Situ RDO Blue - GUEST_PORT_DEVICE_ID_BLUEYE_CAMERA_SERVO = 34; // Blueye Camera Servo - GUEST_PORT_DEVICE_ID_BLUEYE_MULTIBEAM_HEAD_SERVO = 35; // Blueye Multibeam Head Servo - GUEST_PORT_DEVICE_ID_CERULEAN_OMNISCAN_450FS = 36; // Cerulean Omniscan 450 FS - GUEST_PORT_DEVICE_ID_CERULEAN_OMNISCAN_450SS = 37; // Cerulean Omniscan 450 SS - GUEST_PORT_DEVICE_ID_BLUEYE_GNSS_DEVICE = 38; // Blueye GNSS device - GUEST_PORT_DEVICE_ID_WATERLINKED_DVL_A50_600 = 39; // Waterlinked DVL A50 600m - GUEST_PORT_DEVICE_ID_IMAGENEX_831L = 40; // Imagenex 831L Pipe Profiling Sonar - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_C550D = 41; // Blueprint Subsea Oculus C550d - GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M370S = 42; // Blueprint Subsea Oculus M370s -} - -// GuestPort number. + GUEST_PORT_DEVICE_ID_UNSPECIFIED = 0; // Unspecified. + GUEST_PORT_DEVICE_ID_BLIND_PLUG = 1; // Blueye Blind Plug. + GUEST_PORT_DEVICE_ID_TEST_STATION = 2; // Blueye Test Station. + GUEST_PORT_DEVICE_ID_DEBUG_SERIAL = 3; // Blueye Debug Serial. + GUEST_PORT_DEVICE_ID_BLUEYE_LIGHT = 4; // Blueye Light. + GUEST_PORT_DEVICE_ID_BLUEYE_CAM = 5; // Blueye Camera. + GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_LUMEN = 6; // Blue Robotics Lumen. + GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_NEWTON = 7; // Blue Robotics Newton. + GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_PING_SONAR = 8; // Blue Robotics Ping Sonar. + GUEST_PORT_DEVICE_ID_BLUEPRINT_LAB_REACH_ALPHA = 9; // Blueprint Lab Reach Alpha. + GUEST_PORT_DEVICE_ID_WATERLINKED_DVL_A50 = 10; // Waterlinked DVL A50. + GUEST_PORT_DEVICE_ID_IMPACT_SUBSEA_ISS360 = 11; // Impact Subsea ISS360 Sonar. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_SEATRAC_X010 = 12; // Blueprint Subsea Seatrac X110. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M750D = 13; // Blueprint Subsea Oculus M750d. + GUEST_PORT_DEVICE_ID_CYGNUS_MINI_ROV_THICKNESS_GAUGE = 14; // Cygnus Mini ROV Thickness Gauge. + GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_PING360_SONAR = 15; // Blue Robotics Ping360 Scanning Imaging Sonar. + GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_720IM = 16; // Tritech Gemini 720im Multibeam Sonar. + GUEST_PORT_DEVICE_ID_BLUEYE_LIGHT_PAIR = 17; // Blueye Light Pair. + GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_MICRON = 18; // Tritech Micron Gemini. + GUEST_PORT_DEVICE_ID_OCEAN_TOOLS_DIGICP = 19; // Ocean Tools DigiCP. + GUEST_PORT_DEVICE_ID_TRITECH_GEMINI_720IK = 20; // Tritech Gemini 720ik Multibeam Sonar. + GUEST_PORT_DEVICE_ID_NORTEK_NUCLEUS_1000 = 21; // Nortek Nucleus 1000 DVL. + GUEST_PORT_DEVICE_ID_BLUEYE_GENERIC_SERVO = 22; // Blueye Generic Servo. + GUEST_PORT_DEVICE_ID_BLUEYE_MULTIBEAM_SERVO = 23; // Blueye Multibeam Skid Servo. + GUEST_PORT_DEVICE_ID_BLUE_ROBOTICS_DETACHABLE_NEWTON = 24; // Detachable Blue Robotics Newton. + GUEST_PORT_DEVICE_ID_INSITU_AQUA_TROLL_500 = 25; // In-Situ Aqua TROLL 500. + GUEST_PORT_DEVICE_ID_MEDUSA_RADIOMETRICS_MS100 = 26; // Medusa Radiometrics Gamma Ray Sensor. + GUEST_PORT_DEVICE_ID_LASER_TOOLS_SEA_BEAM = 27; // Laser Tools Sea Beam Underwater Laser. + GUEST_PORT_DEVICE_ID_SPOT_X_LASER_SCALERS = 28; // Spot X Laser Scalers. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M1200D = 29; // Blueprint Subsea Oculus M1200d. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M3000D = 30; // Blueprint Subsea Oculus M3000d. + GUEST_PORT_DEVICE_ID_INSITU_AQUA_TROLL_100 = 31; // In-Situ Aqua TROLL 100. + GUEST_PORT_DEVICE_ID_INSITU_RDO_PRO_X = 32; // In-Situ RDO PRO-X. + GUEST_PORT_DEVICE_ID_INSITU_RDO_BLUE = 33; // In-Situ RDO Blue. + GUEST_PORT_DEVICE_ID_BLUEYE_CAMERA_SERVO = 34; // Blueye Camera Servo. + GUEST_PORT_DEVICE_ID_BLUEYE_MULTIBEAM_HEAD_SERVO = 35; // Blueye Multibeam Head Servo. + GUEST_PORT_DEVICE_ID_CERULEAN_OMNISCAN_450FS = 36; // Cerulean Omniscan 450 FS. + GUEST_PORT_DEVICE_ID_CERULEAN_OMNISCAN_450SS = 37; // Cerulean Omniscan 450 SS. + GUEST_PORT_DEVICE_ID_BLUEYE_GNSS_DEVICE = 38; // Blueye GNSS device. + GUEST_PORT_DEVICE_ID_WATERLINKED_DVL_A50_600 = 39; // Waterlinked DVL A50 600m. + GUEST_PORT_DEVICE_ID_IMAGENEX_831L = 40; // Imagenex 831L Pipe Profiling Sonar. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_C550D = 41; // Blueprint Subsea Oculus C550d. + GUEST_PORT_DEVICE_ID_BLUEPRINT_SUBSEA_OCULUS_M370S = 42; // Blueprint Subsea Oculus M370s. +} + +// Guest port number. enum GuestPortNumber { - GUEST_PORT_NUMBER_UNSPECIFIED = 0; // Unspecified - GUEST_PORT_NUMBER_PORT_1 = 1; // Guest port 1 - GUEST_PORT_NUMBER_PORT_2 = 2; // Guest port 2 - GUEST_PORT_NUMBER_PORT_3 = 3; // Guest port 3 + GUEST_PORT_NUMBER_UNSPECIFIED = 0; // Unspecified. + GUEST_PORT_NUMBER_PORT_1 = 1; // Guest port 1. + GUEST_PORT_NUMBER_PORT_2 = 2; // Guest port 2. + GUEST_PORT_NUMBER_PORT_3 = 3; // Guest port 3. } -// List of navigation sensors that can be used by the position observer +// List of navigation sensors that can be used by the position observer. enum NavigationSensorID { - NAVIGATION_SENSOR_ID_UNSPECIFIED = 0; // Unspecified - NAVIGATION_SENSOR_ID_WATERLINKED_DVL_A50 = 1; // Water Linked DVL A50 - NAVIGATION_SENSOR_ID_WATERLINKED_UGPS_G2 = 2; // Water Linked UGPS G2 - NAVIGATION_SENSOR_ID_NMEA = 3; // NMEA stream from external positioning system - NAVIGATION_SENSOR_ID_BLUEYE_GNSS = 4; // Blueye GNSS device on the ROV - NAVIGATION_SENSOR_ID_NORTEK_DVL_NUCLEUS = 5; // Nortek DVL Nucleus 1000 + NAVIGATION_SENSOR_ID_UNSPECIFIED = 0; // Unspecified. + NAVIGATION_SENSOR_ID_WATERLINKED_DVL_A50 = 1; // Water Linked DVL A50. + NAVIGATION_SENSOR_ID_WATERLINKED_UGPS_G2 = 2; // Water Linked UGPS G2. + NAVIGATION_SENSOR_ID_NMEA = 3; // NMEA stream from external positioning system. + NAVIGATION_SENSOR_ID_BLUEYE_GNSS = 4; // Blueye GNSS device on the ROV. + NAVIGATION_SENSOR_ID_NORTEK_DVL_NUCLEUS = 5; // Nortek DVL Nucleus 1000. } -// Navigation sensor used in the position observer with validity state +// Navigation sensor used in the position observer with validity state. message NavigationSensorStatus { - NavigationSensorID sensor_id = 1; // Sensor id - bool is_valid = 2; // Sensor validity - float northing = 3; // Position from reset point (m) - float easting = 4; // Position from reset point (m) - float heading = 5; // Heading from sensor (-pi..pi) - float fom = 6; // Figure of merit - float std = 7; // Standard deviation - LatLongPosition global_position = 8; // Global position from sensor + NavigationSensorID sensor_id = 1; // Sensor id. + bool is_valid = 2; // Sensor validity. + float northing = 3; // Position from reset point (m). + float easting = 4; // Position from reset point (m). + float heading = 5; // Heading from sensor (-pi..pi). + float fom = 6; // Figure of merit. + float std = 7; // Standard deviation. + LatLongPosition global_position = 8; // Global position from sensor. } -// GuestPort detach status. +// Status for guest port devices that can be attached and detached. enum GuestPortDetachStatus { - GUEST_PORT_DETACH_STATUS_UNSPECIFIED = 0; // Unspecified (Default for non-detachable devices) - GUEST_PORT_DETACH_STATUS_ATTACHED = 1; // Detachable device attached - GUEST_PORT_DETACH_STATUS_DETACHED = 2; // Detachable device detached + GUEST_PORT_DETACH_STATUS_UNSPECIFIED = 0; // Unspecified (Default for non-detachable devices). + GUEST_PORT_DETACH_STATUS_ATTACHED = 1; // Detachable device attached. + GUEST_PORT_DETACH_STATUS_DETACHED = 2; // Detachable device detached. } -// GuestPort device. +// Information about a device connected to one of the guest ports. message GuestPortDevice { - GuestPortDeviceID device_id = 1; // Blueye device identifier - string manufacturer = 2; // Manufacturer name - string name = 3; // Device name - string serial_number = 4; // Serial number - float depth_rating = 5; // Depth rating (m) - string required_blunux_version = 6; // Required Blunux version (x.y.z) - GuestPortDetachStatus detach_status = 7; // Detach status based on detection pin + GuestPortDeviceID device_id = 1; // Blueye device identifier. + string manufacturer = 2; // Manufacturer name. + string name = 3; // Device name. + string serial_number = 4; // Serial number. + float depth_rating = 5; // Depth rating (m). + string required_blunux_version = 6; // Required Blunux version (x.y.z). + GuestPortDetachStatus detach_status = 7; // Detach status based on detection pin. } // List of guest port devices. message GuestPortDeviceList { - repeated GuestPortDevice devices = 1; // List of guest port devices + repeated GuestPortDevice devices = 1; // List of guest port devices. } -// GuestPort error. Only indicated errors on the guest port connector itself. +// GuestPort error types. +// +// Only indicated errors on the guest port connector itself. enum GuestPortError { - GUEST_PORT_ERROR_UNSPECIFIED = 0; // Unspecified value - GUEST_PORT_ERROR_NOT_CONNECTED = 1; // Device not connected - GUEST_PORT_ERROR_READ_ERROR = 2; // EEPROM read error - GUEST_PORT_ERROR_NOT_FLASHED = 3; // Connector not flashed - GUEST_PORT_ERROR_CRC_ERROR = 4; // Wrong CRC for protobuf message - GUEST_PORT_ERROR_PARSE_ERROR = 5; // Protobuf message cannot be parsed + GUEST_PORT_ERROR_UNSPECIFIED = 0; // Unspecified value. + GUEST_PORT_ERROR_NOT_CONNECTED = 1; // Device not connected. + GUEST_PORT_ERROR_READ_ERROR = 2; // EEPROM read error. + GUEST_PORT_ERROR_NOT_FLASHED = 3; // Connector not flashed. + GUEST_PORT_ERROR_CRC_ERROR = 4; // Wrong CRC for protobuf message. + GUEST_PORT_ERROR_PARSE_ERROR = 5; // Protobuf message cannot be parsed. } // GuestPort connector information. message GuestPortConnectorInfo { oneof connected_device { - GuestPortDeviceList device_list = 1; // List of devices on this connector - GuestPortError error = 2; // Guest port connector error + GuestPortDeviceList device_list = 1; // List of devices on this connector. + GuestPortError error = 2; // Guest port connector error. } - GuestPortNumber guest_port_number = 3; // Guest port the connector is connected to + GuestPortNumber guest_port_number = 3; // Guest port the connector is connected to. } // GuestPort information. message GuestPortInfo { - GuestPortConnectorInfo gp1 = 1; // GuestPortConnectorInfo 1 - GuestPortConnectorInfo gp2 = 2; // GuestPortConnectorInfo 2 - GuestPortConnectorInfo gp3 = 3; // GuestPortConnectorInfo 3 + GuestPortConnectorInfo gp1 = 1; // Information about guest port 1. + GuestPortConnectorInfo gp2 = 2; // Information about guest port 2. + GuestPortConnectorInfo gp3 = 3; // GuestPortConnectorInfo 3. } // GuestPort restart information. message GuestPortRestartInfo { - double power_off_duration = 1; // Duration to keep the guest ports off (s) + double power_off_duration = 1; // Duration to keep the guest ports off (s). } // Thickness measurement data from a Cygnus Thickness Gauge. message ThicknessGauge { - float thickness_measurement = 1; // Thickness measurement of a steel plate - uint32 echo_count = 2; // Indicating the quality of the reading when invalid (0-3) - uint32 sound_velocity = 3; // Speed of sound in the steel member (m/s) - bool is_measurement_valid = 4; // Indicating if the measurement is valid + float thickness_measurement = 1; // Thickness measurement of a steel plate. + uint32 echo_count = 2; // Indicating the quality of the reading when invalid (0-3). + uint32 sound_velocity = 3; // Speed of sound in the steel member (m/s). + bool is_measurement_valid = 4; // Indicating if the measurement is valid. } // Reading from a Cathodic Protection Potential probe. message CpProbe { - float measurement = 1; // Potential measurement (V) - bool is_measurement_valid = 2; // Indicating if the measurement is valid + float measurement = 1; // Potential measurement (V). + bool is_measurement_valid = 2; // Indicating if the measurement is valid. } // Servo message used to represent the angle of the servo. message GenericServo { - float value = 1; // Servo value (0..1) - GuestPortNumber guest_port_number = 2; // Guest port the servo is on + float value = 1; // Servo value (0..1). + GuestPortNumber guest_port_number = 2; // Guest port the servo is on. } // Servo message used to represent the angle of the servo. message MultibeamServo { - float angle = 1; // Servo degrees (-30..30) + float angle = 1; // Servo degrees (-30..30). } // GuestPort current readings. message GuestPortCurrent { - double gp1_bat = 1; // Current on GP1 battery voltage (A) - double gp2_bat = 2; // Current on GP2 battery voltage (A) - double gp3_bat = 3; // Current on GP3 battery voltage (A) - double gp_20v = 4; // Current on common 20V supply (A) + double gp1_bat = 1; // Current on GP1 battery voltage (A). + double gp2_bat = 2; // Current on GP2 battery voltage (A). + double gp3_bat = 3; // Current on GP3 battery voltage (A). + double gp_20v = 4; // Current on common 20V supply (A). } -// Vector with 3 elements +// Vector with 3 elements. message Vector3 { - double x = 1; // x-component - double y = 2; // y-component - double z = 3; // z-component + double x = 1; // X-component. + double y = 2; // Y-component. + double z = 3; // Z-component. } -// Imu data in drone body frame +// Imu data in drone body frame: // // x - forward // y - right // z - down message Imu { - Vector3 accelerometer = 1; // Acceleration (g) - Vector3 gyroscope = 2; // Angular velocity (rad/s) - Vector3 magnetometer = 3; // Magnetic field (μT) - float temperature = 4; // Temperature (°C) + Vector3 accelerometer = 1; // Acceleration (g). + Vector3 gyroscope = 2; // Angular velocity (rad/s). + Vector3 magnetometer = 3; // Magnetic field (μT). + float temperature = 4; // Temperature (°C). } -// Medusa gamma ray sensor spectrometer data +// Medusa gamma ray sensor spectrometer data. message MedusaSpectrometerData { - google.protobuf.Timestamp drone_time = 6; // Time stamp when the data is received - google.protobuf.Timestamp sensor_time = 7; // Time stamp the sensor reports - float realtime = 1; // Time the sensor actually measured (s) - float livetime = 2; // Time the measurement took (s) - uint32 total = 3; // Total counts inside the spectrum - uint32 countrate = 4; // Counts per second inside the spectrum (rounded) - uint32 cosmics = 5; // Detected counts above the last channel + google.protobuf.Timestamp drone_time = 6; // Time stamp when the data is received. + google.protobuf.Timestamp sensor_time = 7; // Time stamp the sensor reports. + float realtime = 1; // Time the sensor actually measured (s). + float livetime = 2; // Time the measurement took (s). + uint32 total = 3; // Total counts inside the spectrum. + uint32 countrate = 4; // Counts per second inside the spectrum (rounded). + uint32 cosmics = 5; // Detected counts above the last channel. } // The frequency mode to use for multibeam devices with dual frequency. enum MultibeamFrequencyMode { MULTIBEAM_FREQUENCY_MODE_UNSPECIFIED = 0; - MULTIBEAM_FREQUENCY_MODE_AUTO = 1; // Auto switching mode (if available) - MULTIBEAM_FREQUENCY_MODE_LOW_FREQUENCY = 2; // Low frequency mode (wide aperture, navigation) - MULTIBEAM_FREQUENCY_MODE_HIGH_FREQUENCY = 3; // High frequency mode (narrow aperture, target identification) + MULTIBEAM_FREQUENCY_MODE_AUTO = 1; // Auto switching mode (if available). + MULTIBEAM_FREQUENCY_MODE_LOW_FREQUENCY = 2; // Low frequency mode (wide aperture, navigation). + MULTIBEAM_FREQUENCY_MODE_HIGH_FREQUENCY = 3; // High frequency mode (narrow aperture, target identification). } -// Multibeam sonar ping +// Multibeam sonar ping. // -// Contains all the information for rendering a multibeam sonar frame +// Contains all the information for rendering a multibeam sonar frame. message MultibeamPing { - double range = 1; // Maximum range value (m) - double gain = 2; // Percentage of gain (0 to 1) - double frequency = 3; // Ping acoustic frequency (Hz) - double speed_of_sound_used = 4; // Speed of sound used by the sonar for range calculations (m/s) - MultibeamFrequencyMode frequency_mode = 5; // Frequency mode used by the sonar for this frame + double range = 1; // Maximum range value (m). + double gain = 2; // Percentage of gain (0 to 1). + double frequency = 3; // Ping acoustic frequency (Hz). + double speed_of_sound_used = 4; // Speed of sound used by the sonar for range calculations (m/s). + MultibeamFrequencyMode frequency_mode = 5; // Frequency mode used by the sonar for this frame. uint32 number_of_ranges = 6; // Height of the ping image data. uint32 number_of_beams = 7; // Width of the ping image data. uint32 step = 8; // Size in bytes of each row in the ping data image. // Bearing angle of each column of the sonar data // (in 100th of a degree, multiply by 0.01 to get a value in degrees). - // The sonar image is not sampled uniformly in the bearing direction. + // The sonar image is not sampled uniformly in the bearing direction.. repeated float bearings = 9; - bytes ping_data = 10; // Ping data (row major, 2D, grayscale image) - GuestPortDeviceID device_id = 11; // Device ID of the sonar - google.protobuf.Timestamp frame_generation_timestamp = 12; // Timestamp when the frame was generated + bytes ping_data = 10; // Ping data (row major, 2D, grayscale image). + GuestPortDeviceID device_id = 11; // Device ID of the sonar. + google.protobuf.Timestamp frame_generation_timestamp = 12; // Timestamp when the frame was generated. } -// Configuration message for sonar devices +// Configuration message for sonar devices. message MultibeamConfig { - MultibeamFrequencyMode frequency_mode = 1; // Frequency mode used by the sonar if supported + MultibeamFrequencyMode frequency_mode = 1; // Frequency mode used by the sonar if supported. + // Defines the desired ping rate to use when capturing sonar data. enum PingRate { PING_RATE_UNSPECIFIED = 0; - PING_RATE_NORMAL = 1; // 10Hz max ping rate - PING_RATE_HIGH = 2; // 15Hz max ping rate - PING_RATE_HIGHEST = 3; // 40Hz max ping rate - PING_RATE_LOW = 4; // 5Hz max ping rate - PING_RATE_LOWEST = 5; // 2Hz max ping rate - PING_RATE_STANDBY = 6; // Disable ping + PING_RATE_NORMAL = 1; // 10Hz max ping rate. + PING_RATE_HIGH = 2; // 15Hz max ping rate. + PING_RATE_HIGHEST = 3; // 40Hz max ping rate. + PING_RATE_LOW = 4; // 5Hz max ping rate. + PING_RATE_LOWEST = 5; // 2Hz max ping rate. + PING_RATE_STANDBY = 6; // Disable ping. } PingRate ping_rate = 2; // Sets the maximum ping rate. - double gamma_correction = 3; // Gamma correction (0..1.0) - bool gain_assist = 4; // Enable gain assist + double gamma_correction = 3; // Gamma correction (0..1.0). + bool gain_assist = 4; // Enable gain assist. bool gain_boost = 11; // Enable gain boost (only available on Blueprint devices). + // The maximum number of beams to use by the multibeam sonar. enum MaximumNumberOfBeams { MAXIMUM_NUMBER_OF_BEAMS_UNSPECIFIED = 0; - MAXIMUM_NUMBER_OF_BEAMS_MAX_128 = 1; // 128 beams - MAXIMUM_NUMBER_OF_BEAMS_MAX_256 = 2; // 256 beams - MAXIMUM_NUMBER_OF_BEAMS_MAX_512 = 3; // 512 beams - MAXIMUM_NUMBER_OF_BEAMS_MAX_1024 = 4; // 1024 beams + MAXIMUM_NUMBER_OF_BEAMS_MAX_128 = 1; // 128 beams. + MAXIMUM_NUMBER_OF_BEAMS_MAX_256 = 2; // 256 beams. + MAXIMUM_NUMBER_OF_BEAMS_MAX_512 = 3; // 512 beams. + MAXIMUM_NUMBER_OF_BEAMS_MAX_1024 = 4; // 1024 beams. } MaximumNumberOfBeams maximum_number_of_beams = 5; // Maximum number of beams. Used to throttle bandwidth. - double range = 6; // The range demand (m) - double gain = 7; // The gain demand (0..1) - double salinity = 8; // Set water salinity (ppt). Defaults to zero in fresh water - GuestPortDeviceID device_id = 9; // Device ID of the sonar - uint32 bandwidth_limit = 10; // Network bandwidth limit (Mbit/s). Applies only to Oculus devices. + double range = 6; // The range demand (m). + double gain = 7; // The gain demand (0..1). + double salinity = 8; // Set water salinity (ppt). Defaults to zero in fresh water. + GuestPortDeviceID device_id = 9; // Device ID of the sonar. + uint32 bandwidth_limit = 10; // Network bandwidth limit (Mbit/s), applies only to Oculus devices. } -// Discovery message for sonar devices +// Discovery message for multibeam sonar devices. message MultibeamDiscovery { - bool enabled = 1; // If the sonar driver is enabled - string ip = 2; // IP address of the sonar - string mask = 3; // Subnet mask of the sonar - string serial_number = 4; // Serial number of the sonar - string fw_version = 5; // Firmware version of the sonar - string connected_ip = 6; // IP address of the connected device - GuestPortDeviceID device_id = 7; // Device ID of the sonar + bool enabled = 1; // If the sonar driver is enabled. + string ip = 2; // IP address of the sonar. + string mask = 3; // Subnet mask of the sonar. + string serial_number = 4; // Serial number of the sonar. + string fw_version = 5; // Firmware version of the sonar. + string connected_ip = 6; // IP address of the connected device. + GuestPortDeviceID device_id = 7; // Device ID of the sonar. MultibeamErrorFlags error_flags = 8; // Error flags specific for the connceted multibeam device. } @@ -1087,18 +1094,18 @@ message MultibeamErrorFlags { bool out_of_water = 3; // If a TriTech multibeam is reporting to be out of water. } -// Frame offset for multibeam recordings index cache +// Frame offset for multibeam recordings index cache. message MultibeamFrameOffset { - google.protobuf.Duration duration = 1; // Duration from the start of the recording - int64 offset = 2; // Offset in bytes from the start of the file + google.protobuf.Duration duration = 1; // Duration from the start of the recording. + int64 offset = 2; // Offset in bytes from the start of the file. } -// Multibeam recording index cache +// Multibeam recording index cache. message MutltibeamRecordingIndex { - repeated MultibeamFrameOffset frame_offsets = 1; // List of frame offsets + repeated MultibeamFrameOffset frame_offsets = 1; // List of frame offsets. } -// PersistentStorageSettings defines settings for writing various types of data in the persistent storage on the drone +// PersistentStorageSettings defines settings for writing various types of data in the persistent storage on the drone. // // Some of the data is written during factory calibration (acc calibration), while other data is written during user // calubration or during normal operation. @@ -1114,12 +1121,12 @@ message PersistentStorageSettings { bool acc_calibration = 9; // Indicates if accelerometer calibration data should be written to the data partition. } -// CPU information +// CPU information. // // Contains information about the CPU load and memory usage of the drone. message CPUInfo { - float cpu_load = 1; // CPU load (0..1) - float memory_bus_load = 2; // Memory bus load (0..1) - float main_queue_load = 3; // Main queue load (0..1) - float guestport_queue_load = 4 ; // Guestport queue load (0..1) + float cpu_load = 1; // CPU load (0..1). + float memory_bus_load = 2; // Memory bus load (0..1). + float main_queue_load = 3; // Main queue load (0..1). + float guestport_queue_load = 4 ; // Guestport queue load (0..1). } diff --git a/protobuf_definitions/mission_planning.proto b/protobuf_definitions/mission_planning.proto index 5d161349..7a05869b 100644 --- a/protobuf_definitions/mission_planning.proto +++ b/protobuf_definitions/mission_planning.proto @@ -1,4 +1,4 @@ -// Mission Planning Protocol +// Mission Planning Protocol. // // These messages are used to start a mission and to monitor the status of the mission. syntax = "proto3"; @@ -9,41 +9,41 @@ option csharp_namespace = "Blueye.Protocol.Protobuf"; // A list of waypoints describes a mission that the auto pilot can execute. message Mission { - uint32 id = 1; // Mission id - string name = 2; // Mission name provided from the app - repeated Instruction instructions = 3; // List of instructions in the mission - repeated PathSegment path_segments = 4; // Calculated path segments from the reference generator (optional) - uint32 total_distance = 5; // Total distance of the mission (m) (optional) - uint32 total_duration_time = 6; // Total duration time of the mission (s) (optional) - float default_surge_speed = 7; // Default cruise speed of the mission (m/s) (optional) - float default_heave_speed = 8; // Default heave speed of the mission (m/s) (optional) - float default_circle_of_acceptance = 9; // Default circle of acceptance for waypoints (m) (optional) + uint32 id = 1; // Mission id, defined by the client. + string name = 2; // Mission name provided from the app. + repeated Instruction instructions = 3; // List of instructions in the mission. + repeated PathSegment path_segments = 4; // Calculated path segments from the reference generator (optional). + uint32 total_distance = 5; // Total distance of the mission (m) (optional). + uint32 total_duration_time = 6; // Total duration time of the mission (s) (optional). + float default_surge_speed = 7; // Default cruise speed of the mission (m/s) (optional). + float default_heave_speed = 8; // Default heave speed of the mission (m/s) (optional). + float default_circle_of_acceptance = 9; // Default circle of acceptance for waypoints (m) (optional). } // A mission consists of one or multiple instructions. One instruction can be of different types. message Instruction { uint32 id = 1; - uint32 group_id = 2; // Group id used for polygons - bool auto_continue = 3; // False will pause the mission after this instruction + uint32 group_id = 2; // Group id used for polygons. + bool auto_continue = 3; // False will pause the mission after this instruction. oneof command { - WaypointCommand waypoint_command = 4; // Go to waypoint - DepthSetPointCommand depth_set_point_command = 5; // Go to depth - CameraCommand camera_command = 6; // Camera commands - ControlModeCommand control_mode_command = 7; // Set control modes - TiltMainCameraCommand tilt_main_camera_command = 8; // Set camera to angle x - TiltMultibeamCommand tilt_multibeam_command = 9; // Set multibeam tilt angle - WaitForCommand wait_for_command = 10; // Wait for x seconds - GoToSurfaceCommand go_to_surface_command = 11; // Go to surface - GoToSeabedCommand go_to_seabed_command = 12; // Go to seabed - GoToHomeCommand go_to_home_command = 13; // Go to home position + WaypointCommand waypoint_command = 4; // Go to waypoint. + DepthSetPointCommand depth_set_point_command = 5; // Go to depth. + CameraCommand camera_command = 6; // Camera commands. + ControlModeCommand control_mode_command = 7; // Set control modes. + TiltMainCameraCommand tilt_main_camera_command = 8; // Set camera to angle x. + TiltMultibeamCommand tilt_multibeam_command = 9; // Set multibeam tilt angle. + WaitForCommand wait_for_command = 10; // Wait for x seconds. + GoToSurfaceCommand go_to_surface_command = 11; // Go to surface. + GoToSeabedCommand go_to_seabed_command = 12; // Go to seabed. + GoToHomeCommand go_to_home_command = 13; // Go to home position. } } // Depth set point is used to describe a depth set-point relative to the surface or the seabed. message DepthSetPoint { - float depth = 1; // Desired depth at the wp (m) - float speed_to_depth = 2; // Desired speed to desired depth set point (m/s) - DepthZeroReference depth_zero_reference = 3; // Used to distinguish desired altitude or depth + float depth = 1; // Desired depth at the wp (m). + float speed_to_depth = 2; // Desired speed to desired depth set point (m/s). + DepthZeroReference depth_zero_reference = 3; // Used to distinguish desired altitude or depth. } // Depth zero reference from surface for depth, and seabed for altitude. @@ -55,161 +55,161 @@ enum DepthZeroReference { // Waypoints used to describe a path for the auto pilot. message Waypoint { - uint32 id = 1; // Waypoint id - string name = 2; // Waypoint name provided from the app - LatLongPosition global_position = 3; // Position if the waypoint (decimal degrees) - float circle_of_acceptance = 4; // Radius of the acceptance circle around the waypoint (m) - float speed_to_target = 5; // Desired speed over ground to waypoint (m/s) - DepthSetPoint depth_set_point = 6; // Depth set point (optional) - // auto_pilot_mode: Path fallowing, Trajectory tracking, Constant heading - // float fixed_heading + uint32 id = 1; // Waypoint id. + string name = 2; // Waypoint name provided from the app. + LatLongPosition global_position = 3; // Position if the waypoint (decimal degrees). + float circle_of_acceptance = 4; // Radius of the acceptance circle around the waypoint (m). + float speed_to_target = 5; // Desired speed over ground to waypoint (m/s). + DepthSetPoint depth_set_point = 6; // Depth set point (optional). } +// Control mode for the vertical axis of the drone. enum ControlModeVertical { - CONTROL_MODE_VERTICAL_UNSPECIFIED = 0; // Unspecified - CONTROL_MODE_VERTICAL_MANUAL = 1; // Manual control mode - CONTROL_MODE_VERTICAL_AUTO_DEPTH = 2; // Auto depth control mode - CONTROL_MODE_VERTICAL_AUTO_ALTITUDE = 3; // Auto altitude control mode + CONTROL_MODE_VERTICAL_UNSPECIFIED = 0; // Unspecified. + CONTROL_MODE_VERTICAL_MANUAL = 1; // Manual control mode. + CONTROL_MODE_VERTICAL_AUTO_DEPTH = 2; // Auto depth control mode. + CONTROL_MODE_VERTICAL_AUTO_ALTITUDE = 3; // Auto altitude control mode. } +// Control mode for the horizontal axis of the drone. enum ControlModeHorizontal { - CONTROL_MODE_HORIZONTAL_UNSPECIFIED = 0; // Unspecified - CONTROL_MODE_HORIZONTAL_MANUAL = 1; // Manual control mode - CONTROL_MODE_HORIZONTAL_AUTO_HEADING = 2; // Auto heading control mode - CONTROL_MODE_HORIZONTAL_STATION_KEEPING = 3; // Station keeping control mode + CONTROL_MODE_HORIZONTAL_UNSPECIFIED = 0; // Unspecified. + CONTROL_MODE_HORIZONTAL_MANUAL = 1; // Manual control mode. + CONTROL_MODE_HORIZONTAL_AUTO_HEADING = 2; // Auto heading control mode. + CONTROL_MODE_HORIZONTAL_STATION_KEEPING = 3; // Station keeping control mode. } // A ControlModeCommand is used to set vertical and horizontal control mode during a mission. message ControlModeCommand { - ControlModeVertical control_mode_vertical = 5; // Desired control mode in heave - ControlModeHorizontal control_mode_horizontal = 6; // Desired control mode in surge and yaw + ControlModeVertical control_mode_vertical = 5; // Desired control mode in heave. + ControlModeHorizontal control_mode_horizontal = 6; // Desired control mode in surge and yaw. } // A WaypointCommand will request the drone to drive to a point automatically. message WaypointCommand { - Waypoint waypoint = 1; // Waypoint to go to + Waypoint waypoint = 1; // Waypoint to go to. } // A DepthSetPointCommand is used to go to a desired depth or altitude. message DepthSetPointCommand { - DepthSetPoint depth_set_point = 1; // Depth set point to go to + DepthSetPoint depth_set_point = 1; // Depth set point to go to. } // The TiltMainCameraCommand can set the desired camera tilt angle. message TiltMainCameraCommand { - TiltAngle tilt_angle = 1; // Tilt angle of the camera (-30..30) + TiltAngle tilt_angle = 1; // Tilt angle of the camera (-30..30). } // The TiltMultibeamCommand is used to set the tilt angle of the servo. message TiltMultibeamCommand { - MultibeamServo multibeam_servo = 1; // Tilt angle for the multibeam servo + MultibeamServo multibeam_servo = 1; // Tilt angle for the multibeam servo. } // WaitForCommand is used to wait during a mission. message WaitForCommand { - float wait_for_seconds = 1; // Wait for x seconds + float wait_for_seconds = 1; // Wait for x seconds. } // CameraCommands are used to control the camera from a mission. message CameraCommand { - CameraAction camera_action = 1; // Camera command - float action_param = 2; // Used for taking photos based on a time or distance interval + CameraAction camera_action = 1; // Camera command. + float action_param = 2; // Used for taking photos based on a time or distance interval. } // GoToSurfaceCommand is used to go to the surface. message GoToSurfaceCommand { - float desired_speed = 1; // Desired speed to surface (m/s) + float desired_speed = 1; // Desired speed to surface (m/s). } // GoToSeabedCommand is used to go to the seabed. message GoToSeabedCommand { - float desired_speed = 1; // Desired speed to seabed (m/s) + float desired_speed = 1; // Desired speed to seabed (m/s). } // GoToHomeCommand is used to go to the home position. message GoToHomeCommand { - float desired_speed = 1; // Desired speed to home (m/s) + float desired_speed = 1; // Desired speed to home (m/s). } // List of available camera actions. enum CameraAction { - CAMERA_ACTION_UNSPECIFIED = 0; // Unspecified command - CAMERA_ACTION_TAKE_PHOTO = 1; // Take one photo - CAMERA_ACTION_TAKE_PHOTOS_TIME = 2; // Take a photo every x second - CAMERA_ACTION_TAKE_PHOTOS_DISTANCE = 3; // Take a photo every x meter - CAMERA_ACTION_STOP_TAKING_PHOTOS = 4; // Stop taking photos - CAMERA_ACTION_START_RECORDING = 5; // Start recording - CAMERA_ACTION_STOP_RECORDING = 6; // Stop recording + CAMERA_ACTION_UNSPECIFIED = 0; // Unspecified command. + CAMERA_ACTION_TAKE_PHOTO = 1; // Take one photo. + CAMERA_ACTION_TAKE_PHOTOS_TIME = 2; // Take a photo every x second. + CAMERA_ACTION_TAKE_PHOTOS_DISTANCE = 3; // Take a photo every x meter. + CAMERA_ACTION_STOP_TAKING_PHOTOS = 4; // Stop taking photos. + CAMERA_ACTION_START_RECORDING = 5; // Start recording. + CAMERA_ACTION_STOP_RECORDING = 6; // Stop recording. } // Path segment used to describe segments of a mission as a line between to waypoints. message PathSegment { - uint32 id = 1; // Path segment id starting at 0, -1 for inactive - float speed_to_target = 2; // Desired speed over ground in (m/s) - float course_to_target = 3; // Course to target relative to north (rad) [-pi, pi] - float depth_speed = 4; // Desired speed in heave (m/s) - float horizontal_length = 5; // Horizontal length of the path segment (m) - float vertical_length = 6; // Vertical length of the path segment (m) - uint32 from_wp_id = 7; // Id of the starting waypoint - uint32 to_wp_id = 8; // Id of the ending waypoint - float duration_time = 9; // Estimated time it takes to complete given length and desired speed (s) + uint32 id = 1; // Path segment id starting at 0, -1 for inactive. + float speed_to_target = 2; // Desired speed over ground in (m/s). + float course_to_target = 3; // Course to target relative to north (rad) [-pi, pi]. + float depth_speed = 4; // Desired speed in heave (m/s). + float horizontal_length = 5; // Horizontal length of the path segment (m). + float vertical_length = 6; // Vertical length of the path segment (m). + uint32 from_wp_id = 7; // Id of the starting waypoint. + uint32 to_wp_id = 8; // Id of the ending waypoint. + float duration_time = 9; // Estimated time it takes to complete given length and desired speed (s). } // List of available instruction types. enum InstructionType { - INSTRUCTION_TYPE_UNSPECIFIED = 0; // Unspecified - INSTRUCTION_TYPE_NONE = 1; // None - INSTRUCTION_TYPE_GO_TO_WAYPOINT = 2; // Go to waypoint - INSTRUCTION_TYPE_GO_TO_WAYPOINT_WITH_DEPTH_SET_POINT = 3; // Go to waypoint with depth set point - INSTRUCTION_TYPE_GO_TO_DEPTH_SET_POINT = 4; // Go to depth set point - INSTRUCTION_TYPE_SET_CAMERA_ACTION = 5; // Command used to take photo repeatedly or start, stop recording - INSTRUCTION_TYPE_SET_CONTROL_MODE = 6; // Sets a new control mode - INSTRUCTION_TYPE_SET_TILT_MAIN_CAMERA = 7; // Sets a new angle for the tilt servo - INSTRUCTION_TYPE_SET_TILT_SERVO = 8; // Sets a new angle for the tilt servo - INSTRUCTION_TYPE_WAIT_FOR_SEC = 9; // Waiting for requested time in seconds - INSTRUCTION_TYPE_GO_TO_SURFACE = 10; // Go to the surface - INSTRUCTION_TYPE_GO_TO_SEABED = 11; // Go to the seabed - INSTRUCTION_TYPE_GO_TO_HOME = 12; // Returning to home + INSTRUCTION_TYPE_UNSPECIFIED = 0; // Unspecified. + INSTRUCTION_TYPE_NONE = 1; // None. + INSTRUCTION_TYPE_GO_TO_WAYPOINT = 2; // Go to waypoint. + INSTRUCTION_TYPE_GO_TO_WAYPOINT_WITH_DEPTH_SET_POINT = 3; // Go to waypoint with depth set point. + INSTRUCTION_TYPE_GO_TO_DEPTH_SET_POINT = 4; // Go to depth set point. + INSTRUCTION_TYPE_SET_CAMERA_ACTION = 5; // Command used to take photo repeatedly or start, stop recording. + INSTRUCTION_TYPE_SET_CONTROL_MODE = 6; // Sets a new control mode. + INSTRUCTION_TYPE_SET_TILT_MAIN_CAMERA = 7; // Sets a new angle for the tilt servo. + INSTRUCTION_TYPE_SET_TILT_SERVO = 8; // Sets a new angle for the tilt servo. + INSTRUCTION_TYPE_WAIT_FOR_SEC = 9; // Waiting for requested time in seconds. + INSTRUCTION_TYPE_GO_TO_SURFACE = 10; // Go to the surface. + INSTRUCTION_TYPE_GO_TO_SEABED = 11; // Go to the seabed. + INSTRUCTION_TYPE_GO_TO_HOME = 12; // Returning to home. } // Reference for the auto pilot when a mission is active. message ReferenceAutoPilot { - InstructionType instruction_type = 1; // Instruction type - uint32 active_instruction_id = 2; // Id of the active instruction - uint32 active_path_segment_id = 3; // Id of the active path segment - float course_to_target = 4; // Course to the next waypoint from north (rad) [-pi, pi] - float speed_over_ground = 5; // Desired speed over ground (m/s) - float horizontal_distance_to_target = 6; // Horizontal distance to the next waypoint (m) - float circle_of_acceptance = 7; // Circle of acceptance to mark waypoint as visited (m) - float depth_set_point = 8; // Desired depth set point (m) - float heave_velocity = 9; // Desired heave velocity (m/s) - float vertical_distance_to_target = 10; // Vertical distance to the next waypoint (m) - DepthZeroReference depth_zero_reference = 11; // Indicates if depth is measured from the surface or seabed - float time_to_complete = 12; // Estimated time to complete the instruction (s) + InstructionType instruction_type = 1; // Instruction type. + uint32 active_instruction_id = 2; // Id of the active instruction. + uint32 active_path_segment_id = 3; // Id of the active path segment. + float course_to_target = 4; // Course to the next waypoint from north (rad) [-pi, pi]. + float speed_over_ground = 5; // Desired speed over ground (m/s). + float horizontal_distance_to_target = 6; // Horizontal distance to the next waypoint (m). + float circle_of_acceptance = 7; // Circle of acceptance to mark waypoint as visited (m). + float depth_set_point = 8; // Desired depth set point (m). + float heave_velocity = 9; // Desired heave velocity (m/s). + float vertical_distance_to_target = 10; // Vertical distance to the next waypoint (m). + DepthZeroReference depth_zero_reference = 11; // Indicates if depth is measured from the surface or seabed. + float time_to_complete = 12; // Estimated time to complete the instruction (s). } // List of mission supervisor states. enum MissionState { - MISSION_STATE_UNSPECIFIED = 0; // Unspecified - MISSION_STATE_INACTIVE = 1; // Mission supervisor is inactive - MISSION_STATE_READY = 2; // Ready to start mission - MISSION_STATE_RUNNING = 3; // Mission is running - MISSION_STATE_PAUSED = 4; // Mission is paused - MISSION_STATE_COMPLETED = 5; // Mission is completed - MISSION_STATE_ABORTED = 6; // Mission is aborted by the mission supervisor - MISSION_STATE_FAILED_TO_LOAD_MISSION = 7; // Mission has failed to load - MISSION_STATE_FAILED_TO_START_MISSION = 8; // Mission has failed to start + MISSION_STATE_UNSPECIFIED = 0; // Unspecified. + MISSION_STATE_INACTIVE = 1; // Mission supervisor is inactive. + MISSION_STATE_READY = 2; // Ready to start mission. + MISSION_STATE_RUNNING = 3; // Mission is running. + MISSION_STATE_PAUSED = 4; // Mission is paused. + MISSION_STATE_COMPLETED = 5; // Mission is completed. + MISSION_STATE_ABORTED = 6; // Mission is aborted by the mission supervisor. + MISSION_STATE_FAILED_TO_LOAD_MISSION = 7; // Mission has failed to load. + MISSION_STATE_FAILED_TO_START_MISSION = 8; // Mission has failed to start. } // Mission Status is used for showing the status of the mission. message MissionStatus { - MissionState state = 1; // State of the mission supervisor - uint32 time_elapsed = 2; // Time elapsed since mission started (s) - uint32 estimated_time_to_complete = 3; // Estimated time to complete the mission (s) - uint32 distance_to_complete = 4; // Distance left of the mission (m) - repeated uint32 completed_instruction_ids = 5; // Ids of the completed instructions - uint32 total_number_of_instructions = 6; // Total number of instructions in the mission - repeated uint32 completed_path_segment_ids = 7; // Ids of the completed path segments - uint32 total_number_of_path_segments = 8; // Total number of path segments in the mission - uint32 id = 9; // Mission id of the active mission + MissionState state = 1; // State of the mission supervisor. + uint32 time_elapsed = 2; // Time elapsed since mission started (s). + uint32 estimated_time_to_complete = 3; // Estimated time to complete the mission (s). + uint32 distance_to_complete = 4; // Distance left of the mission (m). + repeated uint32 completed_instruction_ids = 5; // Ids of the completed instructions. + uint32 total_number_of_instructions = 6; // Total number of instructions in the mission. + repeated uint32 completed_path_segment_ids = 7; // Ids of the completed path segments. + uint32 total_number_of_path_segments = 8; // Total number of path segments in the mission. + uint32 id = 9; // Mission id of the active mission. } \ No newline at end of file diff --git a/protobuf_definitions/req_rep.proto b/protobuf_definitions/req_rep.proto index ac293058..de2d51c0 100644 --- a/protobuf_definitions/req_rep.proto +++ b/protobuf_definitions/req_rep.proto @@ -124,7 +124,7 @@ message GetBatteryRep { // Issue a desired mission to the reference_generator. message SetMissionReq { - Mission mission = 1; // requested mission issued to the reference generator + Mission mission = 1; // Requested mission issued to the reference generator. } // Response after setting a new mission. @@ -137,12 +137,12 @@ message GetMissionReq { // Get active mission response. message GetMissionRep { - Mission mission = 1; // active mission with waypoints + Mission mission = 1; // Active mission with waypoints. } // Updates an instruction in current mission with a new instruction payload. message SetInstructionUpdateReq { - Instruction instruction = 1; // instruction that will replace the desired instruction + Instruction instruction = 1; // instruction that will replace the desired instruction. } // Response after updating an instruction in the current mission. @@ -162,7 +162,7 @@ message SetPubFrequencyRep { // Request to get latest telemetry data message GetTelemetryReq { - string message_type = 1; // Message name, f. ex. "AttitudeTel" + string message_type = 1; // Message name, f. ex. "AttitudeTel". } // Response with latest telemetry diff --git a/protobuf_definitions/telemetry.proto b/protobuf_definitions/telemetry.proto index 01619991..141a8e08 100644 --- a/protobuf_definitions/telemetry.proto +++ b/protobuf_definitions/telemetry.proto @@ -21,7 +21,7 @@ message AltitudeTel { // Distance to an object in front of the drone when a 1D pinger is mounted forwards. message ForwardDistanceTel { - ForwardDistance forward_distance = 1; + ForwardDistance forward_distance = 1; // The distance to an object in front of the drone. } // Dvl raw sensor data. @@ -31,72 +31,72 @@ message DvlVelocityTel { // Position estimate of the drone if a DVL or a positioning system is available. message PositionEstimateTel { - PositionEstimate position_estimate = 1; + PositionEstimate position_estimate = 1; // Position estimate of the drone. } // Measurement of the drones position relative to the sea surface. message DepthTel { - Depth depth = 1; + Depth depth = 1; // The depth of the drone. } // Reference signals indicating desired states. message ReferenceTel { - Reference reference = 1; + Reference reference = 1; // Reference signals. } // Reference for the auto pilot when a mission is active. message ReferenceAutoPilotTel { - ReferenceAutoPilot reference_auto_pilot = 1; + ReferenceAutoPilot reference_auto_pilot = 1; // Reference for the auto pilot. } // Mission status from the mission supervisor. message MissionStatusTel { - MissionStatus mission_status = 1; + MissionStatus mission_status = 1; // Mission status. } // Notification from the control system. message NotificationTel { - Notification notification = 1; + Notification notification = 1; // Notification from the control system. } // Control force in all directions. message ControlForceTel { - ControlForce control_force = 1; + ControlForce control_force = 1; // Control force in all directions. } // Controller health indicating the load of the controller, used to set a color in the heading and depth bar. message ControllerHealthTel { - ControllerHealth controller_health = 1; + ControllerHealth controller_health = 1; // Controller health. } // Receive the status of the main lights of the drone. message LightsTel { - Lights lights = 1; + Lights lights = 1; // Main light status. } // Receive the status of any guest port lights connected to the drone. message GuestPortLightsTel { - Lights lights = 1; + Lights lights = 1; // Guest port light status. } // Receive the status of any lasers connected to the drone. message LaserTel { - Laser laser = 1; + Laser laser = 1; // Laser status. } // Pilot position (originating from device GPS) for logging. message PilotGPSPositionTel { - LatLongPosition position = 1; + LatLongPosition position = 1; // The GPS position of the pilot. } // Record state from the drone. message RecordStateTel { - RecordState record_state = 1; + RecordState record_state = 1; // Record state. } // Time-lapse state from the drone. message TimeLapseStateTel { - TimeLapseState time_lapse_state = 1; + TimeLapseState time_lapse_state = 1; // Time-lapse state. } // Receive essential information about the battery status. @@ -123,12 +123,12 @@ message DroneTimeTel { // Water temperature from the depth sensor. message WaterTemperatureTel { - WaterTemperature temperature = 1; + WaterTemperature temperature = 1; // Water temperature. } // Drone CPU temperature message CPUTemperatureTel { - CPUTemperature temperature = 1; + CPUTemperature temperature = 1; // CPU temperature. } // Receive temperature information from the top canister. @@ -143,47 +143,47 @@ message CanisterBottomTemperatureTel { // Receive humidity information from the top canister. message CanisterTopHumidityTel { - CanisterHumidity humidity = 1; // Humidity information + CanisterHumidity humidity = 1; // Humidity information. } // Receive humidity information from the bottom canister. message CanisterBottomHumidityTel { - CanisterHumidity humidity = 1; // Humidity information + CanisterHumidity humidity = 1; // Humidity information. } // Video storage info. message VideoStorageSpaceTel { - StorageSpace storage_space = 1; + StorageSpace storage_space = 1; // Video storage information. } // Data storage info. message DataStorageSpaceTel { - StorageSpace storage_space = 1; + StorageSpace storage_space = 1; // Data storage information. } // Calibration state used for calibration routine. message CalibrationStateTel { - CalibrationState calibration_state = 1; + CalibrationState calibration_state = 1; // Calibration state. } // Tilt stabilization state. message TiltStabilizationTel { - TiltStabilizationState state = 1; + TiltStabilizationState state = 1; // Tilt stabilization state. } // Iperf indicates the available bandwidth on the tether from drone to surface unit. message IperfTel { - IperfStatus status = 1; + IperfStatus status = 1; // Information about the available bandwidth. } // Number of connected clients streaming video. message NStreamersTel { - NStreamers n_streamers = 1; + NStreamers n_streamers = 1; // Information about the number of connected clients. } // Tilt angle state on main camera. message TiltAngleTel { - TiltAngle angle = 1; + TiltAngle angle = 1; // Main camera tilt angle. } // Receive metadata and information about the connected drone. @@ -232,57 +232,57 @@ message ConnectedClientsTel { repeated ConnectedClient connected_clients = 2; // List of connected clients. } -// State of a generic servo +// State of a generic servo. message GenericServoTel { - GenericServo servo = 1; // Servo state + GenericServo servo = 1; // Servo state. } -// State of the servo installed in the multibeam +// State of the servo installed in the multibeam. message MultibeamServoTel { - MultibeamServo servo = 1; // Multibeam servo state + MultibeamServo servo = 1; // Multibeam servo state. } -// GuestPort current readings +// GuestPort current readings. message GuestPortCurrentTel { - GuestPortCurrent current = 1; + GuestPortCurrent current = 1; // Guest port current readings. } -// Calibrated IMU data +// Calibrated IMU data. message CalibratedImuTel { - Imu imu = 1; + Imu imu = 1; // Calibrated IMU data. } // Raw IMU data from IMU 1 message Imu1Tel { - Imu imu = 1; + Imu imu = 1; // Raw IMU data. } // Raw IMU data from IMU 2 message Imu2Tel { - Imu imu = 1; + Imu imu = 1; // Raw IMU data. } -// Medusa gamma ray sensor spectrometer data +// Medusa gamma ray sensor spectrometer data. message MedusaSpectrometerDataTel { - MedusaSpectrometerData data = 1; + MedusaSpectrometerData data = 1; // Medusa gamma ray sensor spectrometer data. } -// Multibeam sonar ping data +// Multibeam sonar ping data. message MultibeamPingTel { - MultibeamPing ping = 1; // Ping data from a multibeam sonar + MultibeamPing ping = 1; // Ping data from a multibeam sonar. } -// Multibeam sonar config +// Multibeam sonar config. message MultibeamConfigTel { - MultibeamConfig config = 1; // Config data from a multibeam sonar + MultibeamConfig config = 1; // Config data from a multibeam sonar. } -// Multibeam sonar status message +// Multibeam sonar status message. message MultibeamDiscoveryTel { - MultibeamDiscovery discovery = 1; // Discovery data from a multibeam sonar + MultibeamDiscovery discovery = 1; // Discovery data from a multibeam sonar. } -// Information about cpu and memory usage +// Information about cpu and memory usage. message CPUInfoTel { - CPUInfo cpu_info = 1; + CPUInfo cpu_info = 1; // CPU information. } \ No newline at end of file From 0fc63e655109424371bb77c7ca8c75b934ae86e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Folles=C3=B8?= Date: Tue, 21 Jan 2025 11:11:33 +0100 Subject: [PATCH 4/5] Fix protolint error on line length --- protobuf_definitions/message_formats.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protobuf_definitions/message_formats.proto b/protobuf_definitions/message_formats.proto index e15b78b2..a5720e95 100644 --- a/protobuf_definitions/message_formats.proto +++ b/protobuf_definitions/message_formats.proto @@ -291,7 +291,7 @@ message BatteryBQ40Z50 { float current = 6; // Measured current from the coulomb counter (A). float average_current = 7; // Average current (A). - float relative_state_of_charge = 8; // Predicted remaining battery capacity as a factor of full_charge_capacity (0..1). + float relative_state_of_charge = 8; // Predicted remaining battery capacity as a factor of full capacity (0..1). float absolute_state_of_charge = 9; // Predicted remaining battery capacity (0..1). float calculated_state_of_charge = 26; // Calculated state of charge (0..1). float remaining_capacity = 10; // Predicted remaining battery capacity (Ah). @@ -417,7 +417,8 @@ enum HeadingSource { // Settings used when resetting the position estimate. message ResetPositionSettings { - HeadingSource heading_source_during_reset = 1; // Option to use the drone compass or due North as heading during reset. + // Option to use the drone compass or due North as heading during reset. + HeadingSource heading_source_during_reset = 1; float manual_heading = 2; // Heading in degrees (0-359). ResetCoordinateSource reset_coordinate_source = 3; // Option to use the device GPS or a manual coordinate. LatLongPosition reset_coordinate = 4; // Reset coordinate in decimal degrees. From a8e434e8bddc8c88621c42cfe9b132ace2509cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Folles=C3=B8?= Date: Tue, 21 Jan 2025 11:14:57 +0100 Subject: [PATCH 5/5] Add new line at end of file on all files --- protobuf_definitions/control.proto | 2 +- protobuf_definitions/mission_planning.proto | 2 +- protobuf_definitions/req_rep.proto | 2 +- protobuf_definitions/telemetry.proto | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protobuf_definitions/control.proto b/protobuf_definitions/control.proto index 3a224f78..4a429454 100644 --- a/protobuf_definitions/control.proto +++ b/protobuf_definitions/control.proto @@ -214,4 +214,4 @@ message StartDiveCtrl { // The message does not do anything, but is included in the log files so we can see // at which point the user exited the dive view. message EndDiveCtrl { -} \ No newline at end of file +} diff --git a/protobuf_definitions/mission_planning.proto b/protobuf_definitions/mission_planning.proto index 7a05869b..3b8b9c43 100644 --- a/protobuf_definitions/mission_planning.proto +++ b/protobuf_definitions/mission_planning.proto @@ -212,4 +212,4 @@ message MissionStatus { repeated uint32 completed_path_segment_ids = 7; // Ids of the completed path segments. uint32 total_number_of_path_segments = 8; // Total number of path segments in the mission. uint32 id = 9; // Mission id of the active mission. -} \ No newline at end of file +} diff --git a/protobuf_definitions/req_rep.proto b/protobuf_definitions/req_rep.proto index de2d51c0..71cd61db 100644 --- a/protobuf_definitions/req_rep.proto +++ b/protobuf_definitions/req_rep.proto @@ -187,4 +187,4 @@ message GetPersistentStorageSettingsReq { // Response with the currently set persistent storage settings. message GetPersistentStorageSettingsRep { PersistentStorageSettings persistent_storage_settings = 1; // The currently set persistent storage settings. -} \ No newline at end of file +} diff --git a/protobuf_definitions/telemetry.proto b/protobuf_definitions/telemetry.proto index 141a8e08..94e109e4 100644 --- a/protobuf_definitions/telemetry.proto +++ b/protobuf_definitions/telemetry.proto @@ -285,4 +285,4 @@ message MultibeamDiscoveryTel { // Information about cpu and memory usage. message CPUInfoTel { CPUInfo cpu_info = 1; // CPU information. -} \ No newline at end of file +}