Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions acoustic_msgs/msg/PingInfo.msg
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
# the frame id of the acoustic center of the receiver
# the transmitter frame is assumed to be that specified
# in the message header
string rx_frame_id

# the ping number reported by the sonar.
# useful for matching multiple message types for a given ping
uint64 ping_no
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer to spell out "number"


# Center frequency of sonar in Hz
# Set to 0 if unavailable
float32 frequency

# the width of the transmittd pulse in seconds
float32 tx_pulse_width

# Speed of sound (m/s) used to calculate ranges;
# Set to 0 if unavailable
float32 sound_speed

# The number of samples per second that the reciever collects
float32 sample_rate

# Sonar reported -3db beamwidths
# May be empty if not reported
# reported in radians
Expand Down
24 changes: 14 additions & 10 deletions acoustic_msgs/msg/RawSonarImage.msg
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@

# The header time should be the time the ping was transmitted, not
# the time the message was received.
# Note that these two could potentially be several seconds apart,
# especially in deep water.
# All values in the header are associated the transmitter:
# - stamp references the transmit time or the start of the
# transmit cycle.
# - frame_id references the transmitter's acoustic center
std_msgs/Header header

PingInfo ping_info

float32 sample_rate # hz

uint32 samples_per_beam # the number of samples in each beam

# Many sonars have some kind of upper gate for water column data
# this represents the sample number of the first non empty sample
# for beam n
uint32 sample0

# if the image is not reported at the full resolution
# ping_info.sample_rate != image_sample_rate
# for a given sample:
# 2-way travel time = image_sample_rate*(sample_no+sample0)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This equation doesn't match how I expect "rate" to be used -- here, image_sample_rate has units of seconds, so I'd have expected it to be called "sampling period".

can we change this to be (sample_number + sample0) / image_sample_rate?


float32 image_sample_rate

# Multi-sector multibeams can transmit different sectors at different times
# The Reson doesn't but we include a TX delay for each beam anyway.
#
# Overall, therefore, our overall time is:
#
# header.stamp: TX cycle starts
# Each beam's TX time: header.stamp + transmit_delay[i]
# Each beam's RX time: header.stamp + transmit_delay[i] + sample_rate*image_row
float32[] tx_delays
# Steering angle applied to tx beam

# The angle reported for the transmitted pulse
# reported in radians
float32[] tx_angles

# Steering angle applied to rx beam
# The angle reported for the received pulse
# reported in radians
float32[] rx_angles

Expand Down
2 changes: 2 additions & 0 deletions acoustic_msgs/msg/SonarImageData.msg
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,6 @@ uint32 dtype
uint32 beam_count

# The actually pixel data in row-major (beam_index major) format
# this can be interpreted as a 2d array with indicies beam_index and
# sample_number
uint8[] data