Skip to content

Commit ad32258

Browse files
authored
Add DVL specific messages (#317)
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
1 parent 85102af commit ad32258

File tree

5 files changed

+260
-0
lines changed

5 files changed

+260
-0
lines changed

proto/gz/msgs/dvl_beam_state.proto

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright (C) 2022 Open Source Robotics Foundation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
syntax = "proto3";
19+
package gz.msgs;
20+
option java_package = "com.gz.msgs";
21+
option java_outer_classname = "DVLBeamStateProtos";
22+
23+
/// \ingroup gz.msgs
24+
/// \interface DVLBeamState
25+
/// \brief State of some acoustic beam in a Doppler Velocity Log sensor. Each beam, when locked,
26+
/// estimates the distance to the reflecting target as well as its velocity in some reference
27+
/// frame. Some additional attributes may also be available.
28+
29+
import "gz/msgs/dvl_kinematic_estimate.proto";
30+
import "gz/msgs/dvl_range_estimate.proto";
31+
32+
message DVLBeamState
33+
{
34+
/// \brief Beam ID.
35+
int32 id = 1;
36+
37+
/// \brief Beam velocity estimate, measured along
38+
/// its axis, in meters per second.
39+
DVLKinematicEstimate velocity = 2;
40+
41+
/// \brief Beam range estimate, in meters.
42+
DVLRangeEstimate range = 3;
43+
44+
/// \brief Beam signal strength indicator.
45+
double rssi = 4;
46+
47+
/// \brief Measured background noise spectral density,
48+
/// in watts per hertz.
49+
double nsd = 5;
50+
51+
/// \brief Whether beam is locked to its target or not.
52+
/// A beam is said to be locked when it can reliably
53+
/// measure signal reflections.
54+
bool locked = 6;
55+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright (C) 2022 Open Source Robotics Foundation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
syntax = "proto3";
19+
package gz.msgs;
20+
option java_package = "com.gz.msgs";
21+
option java_outer_classname = "DVLKinematicEstimateProtos";
22+
23+
/// \ingroup gz.msgs
24+
/// \interface DVLKinematicEstimate
25+
/// \brief Kinematic quantity (e.g. position, velocity, etc.) estimate in some reference
26+
/// frame, as reported by a Doppler Velocity Log sensor. This estimate is characterized by
27+
/// mean and covariance of some implicit multivariate distribution (typically a multivariate
28+
/// normal distribution).
29+
30+
import "gz/msgs/vector3d.proto";
31+
32+
message DVLKinematicEstimate
33+
{
34+
/// \brief Frames of reference (incl. conventions)
35+
enum ReferenceType
36+
{
37+
/// \brief Unspecific frame of reference.
38+
DVL_REFERENCE_UNSPECIFIED = 0;
39+
/// \brief Earth bound frame of reference (typically ENU).
40+
DVL_REFERENCE_EARTH = 1;
41+
/// \brief Ship bound frame of reference (typically FSK).
42+
DVL_REFERENCE_SHIP = 2;
43+
};
44+
/// \brief Estimate frame of reference (incl. conventions).
45+
ReferenceType reference = 1;
46+
47+
/// \brief Estimate mean.
48+
Vector3d mean = 2;
49+
50+
/// \brief Estimate covariance matrix.
51+
/// A 3 x 3 row-major matrix using a flat contiguous layout.
52+
repeated double covariance = 3;
53+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright (C) 2022 Open Source Robotics Foundation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
syntax = "proto3";
19+
package gz.msgs;
20+
option java_package = "com.gz.msgs";
21+
option java_outer_classname = "DVLRangeEstimateProtos";
22+
23+
/// \ingroup gz.msgs
24+
/// \interface DVLRangeEstimate
25+
/// \brief Range estimate as reported by a Doppler Velocity Log sensor. This estimate is
26+
/// characterized by mean and variance of some implicit scalar distribution (typically a
27+
/// normal distribution).
28+
29+
message DVLRangeEstimate
30+
{
31+
/// \brief Estimate mean.
32+
double mean = 1;
33+
34+
/// \brief Estimate variance.
35+
double variance = 2;
36+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright (C) 2022 Open Source Robotics Foundation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
syntax = "proto3";
19+
package gz.msgs;
20+
option java_package = "com.gz.msgs";
21+
option java_outer_classname = "DVLTrackingTargetProtos";
22+
23+
/// \ingroup gz.msgs
24+
/// \interface DVLTrackingTarget
25+
/// \brief Target used for tracking by a Doppler Velocity Log sensor. Either a bottom ground
26+
/// or a water mass target. Estimates of target range and position in some reference frame
27+
/// may be provided.
28+
29+
import "gz/msgs/dvl_kinematic_estimate.proto";
30+
import "gz/msgs/dvl_range_estimate.proto";
31+
32+
message DVLTrackingTarget
33+
{
34+
/// \brief Target types
35+
enum TargetType
36+
{
37+
/// \brief Unspecific target type.
38+
DVL_TARGET_UNSPECIFIED = 0;
39+
/// \brief Bottom ground (ie. solid) target.
40+
DVL_TARGET_BOTTOM = 1;
41+
/// \brief Water mass layer (ie. fluid) target.
42+
DVL_TARGET_WATER_MASS = 2;
43+
};
44+
/// \brief Type of target used for tracking.
45+
TargetType type = 1;
46+
47+
/// \brief Target range (or distance), in meters
48+
DVLRangeEstimate range = 2;
49+
50+
/// \brief Target position estimate, in meters.
51+
DVLKinematicEstimate position = 3;
52+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright (C) 2022 Open Source Robotics Foundation
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
syntax = "proto3";
19+
package gz.msgs;
20+
option java_package = "com.gz.msgs";
21+
option java_outer_classname = "DVLVelocityTrackingProtos";
22+
23+
/// \ingroup gz.msgs
24+
/// \interface DVLVelocityTracking
25+
/// \brief Velocity tracking estimates from a Doppler Velocity Log sensor.
26+
/// Doppler velocity logs are used by the maritime community to track the velocity
27+
/// of a vessel with respect to some (reflecting) target.
28+
29+
import "gz/msgs/header.proto";
30+
import "gz/msgs/dvl_beam_state.proto";
31+
import "gz/msgs/dvl_tracking_target.proto";
32+
import "gz/msgs/dvl_kinematic_estimate.proto";
33+
34+
message DVLVelocityTracking
35+
{
36+
/// \brief Message header.
37+
Header header = 1;
38+
39+
/// \brief DVL types.
40+
enum DVLType
41+
{
42+
/// \brief Unspecific DVL type.
43+
DVL_TYPE_UNSPECIFIED = 0;
44+
/// \brief Piston DVLs.
45+
DVL_TYPE_PISTON = 1;
46+
/// \brief Phased array DVLs.
47+
DVL_TYPE_PHASED_ARRAY = 2;
48+
};
49+
/// \brief Type of DVL.
50+
DVLType type = 2;
51+
52+
/// \brief Locked on target.
53+
DVLTrackingTarget target = 3;
54+
55+
/// \brief Estimated velocity of either target or sensor
56+
/// w.r.t. the specified frame, in meters per second.
57+
DVLKinematicEstimate velocity = 4;
58+
59+
/// \brief Tracking beams' state.
60+
repeated DVLBeamState beams = 5;
61+
62+
/// \brief Vendor-specific status (e.g. bitmask, error code).
63+
int32 status = 6;
64+
}

0 commit comments

Comments
 (0)