Git Product home page Git Product logo

Comments (8)

narcispr avatar narcispr commented on July 30, 2024

I have no experience with Acoustic Doppler Current Profiler devices. The current message was designed for DVL devices only and it is based on the UUVSimulator DVL message. However, if adding some extra fields it can be used also as ADCP it will be great!

from marine_ros_conventions_discussion.

ivaughn avatar ivaughn commented on July 30, 2024

Any thoughts on:

  • watertrack vs. bottom track?
  • Figure-of-merit for each beam? RDI has some per-beam correlation or SNR or something that's very handy when second-guessing the good beam detection

Personally, I'd vote for splitting DVL from ADCP. DVLs almost always report a single bottom track velocity; ADCPs report several velocities as a function of range. That's a non-trivial difference. I've seen ADCPs and DVLs used quite differently in practice-- with the possible exception of DVLs in water-track mode.

... but two opinions is hardly enough! C'mon everyone!

from marine_ros_conventions_discussion.

smaria avatar smaria commented on July 30, 2024

merging messages

The possibility of merging may be a misconception on my side. When coming up with this suggestion, I misread DVBeam.msg and thought it already included an array for each of the beams, allowing to put in the velocity data for each bin for a DVL in water-track mode, and thus close to ADCP data. To further understand the merging decision (or make some way towards defining the separate ADCP message type) I wonder:

  • Which fields in the DVL message would not be used by an ADCP?
  • Besides the profile array field I imagined, which fields are still missing for use as an ADCP?

water track vs. bottom track

As I understand it, the DVL can have no valid tracking, bottom tracking, or (exclusive!) water tracking, so it can be handled with constants as in the current message suggestion:

# Instrument reference data
uint8 VELOCITY_REFERENCE_UNKNOWN = 0
uint8 VELOCITY_REFERENCE_WATER = 1
uint8 VELOCITY_REFERENCE_BOTTOM = 2

uint8 velocity_reference

@ivaughn does this cover what you meant, or is there information missing?

missing fields in the current message

Going over the notes from the workshop and comparing them to the current message, I believe the following are covered in the current suggestion:

  • velocity -> given per beam in the DVLBeam[] array, and in the velocity_reference field
  • range (#) -> given in the range field, and per beam in the DVLBeam[] array
  • velocity covariance -> given per beam in the DVLBeam[] array

For the following I have open questions:

  • reference frame (depth)
  • frame of beams wrt sensors
  • internal beamframe
    Not sure what the difference between those three is. The frame of the overall direction of the sensor is given in the header, the frame for each individual beam is given in the entries in the DVLBeam[] array. I can't think of a third frame that needs to be given?

This information currently doesn't have a field in the message:

  • number of good beams
    DVLBeam includes the option to set the range to a value smaller than zero for individual beams, to indicate an invalid range. However, I believe that is different information and there is merit in adding a field for this in the main message.
  • number of bins
  • sensor timestamp -> I assume this is distinct from the message timestamp which is included in the header
  • time delta? -> is there a use-case for this information, that could not simply rely on the sensor timestamp information?
  • configured sound velocity

from marine_ros_conventions_discussion.

ivaughn avatar ivaughn commented on July 30, 2024

As far as I know, RDI DVLs usually report a single value for water-track velocity, in part so they can upcharge us for ADCP capabilities. RDI systems can alternate bottom and watertrack pings, but that's not universal. Nortek DVLs claim to report bottom and watertrack velocities on each ping-- I haven't had a chance to try that out yet, ask again in 6 months.

Does the proposed message require RDI DVLs to operate in beam reference frame and then run a driver that does the beam frame to instrument frame conversion? The conversion is non-trivial, but presumably that's why we all want to run a single driver! The RDI format we're using can report either instrument-frame velocity (XYZ+Errors) OR beam velocities but not both-- although, again, many of the non-RDI DVLs appear willing to spend the extra 8 bytes.

As far as timestamp delta: we use the DVL clock as a monotonic clock with perfect ping synchronization for integrating velocities. The timestamp field should come from the computer's system clock which is subject to adjustments by NTP or in our case an external PPS from an OXCO clock. This is enough of an issue that Linux exposes a separate CLOCK_MONOTONIC in its timing API. See also: https://linux.die.net/man/3/clock_gettime. We use the DVL's internal clock instead to avoid any communications latencies. It's a good idea to include the DVL's internal clock in messages to help resolve issues synchronizing the vehicle clock to the instrument clock in post-processing. That's probably redundant with the timetamp delta. It's also worth asking if the internal clock more properly belongs in a hyper-detailed not-standardized message that gets logged for post-processing instead of this generic message. But we need a high-quality monotonic clock either way.

More generally, are we at all concerned about the performance requirements necessary to hit up TF for each beam? The PR2 had to compact its TF tree for performance reasons, just curious where that limiti is.

I concur on the need for number of good beams & configured sound velocity. What's the usecase for number of bins?

Should we add some sort of per-beam figure-of-merit? A correlation, SNR, something like that?

from marine_ros_conventions_discussion.

smaria avatar smaria commented on July 30, 2024

More generally, are we at all concerned about the performance requirements necessary to hit up TF for each beam? The PR2 had to compact its TF tree for performance reasons, just curious where that limiti is.

This is a more general question, I extracted it to #7

from marine_ros_conventions_discussion.

narcispr avatar narcispr commented on July 30, 2024

Some comments about what you say:

  • number of good beams: we can use the velocity_covariance field to know if the beam is ok or just have an extra field.
  • number of bins: I don't know for an ADCP but I can see if this is going to be useful in a DVL.
  • sensor timestamp: In the message header there is a time stamp. Does this field have to come from the PC or the DVL? Is it possible to receive the DVL internal time toguether with the measures? Can this be decided per driver not in the general message?
  • time delta and configured sound velocity: Are these parameters changing to each measure? Maybe, like there are an Image and a CameraInfo messages we can have a DVL and a DVLInfo messages for these parameters (i.e., max range, water mass layer params, time per ensemble,...).
  • tf per beam: I don't think that 4 more TFs will slow down the system. Another thing is for a multibeam (#7).

from marine_ros_conventions_discussion.

dulanad avatar dulanad commented on July 30, 2024

Hi to anyone still subscribed to this after 11 months. Any chance the discussions in this package auto-magically resolved and created a standard underwater sensor package somewhere ? :) Or is this still in "active" discussion ?

from marine_ros_conventions_discussion.

smaria avatar smaria commented on July 30, 2024

No magic resolution yet ;)

from marine_ros_conventions_discussion.

Related Issues (10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.