Gemini Sonar Driver  1.0.0
A ROS2 Package for the Tritech Gemini 1200ikd sonar
Loading...
Searching...
No Matches
gemini_sonar_driver::glf_processor Namespace Reference

GLF (Gemini Log Format) data processing utilities. More...

Namespaces

namespace  FrequencyResolution1200ikd
 Frequency resolution constants in meters.
 
namespace  PingFlags
 Ping flags bit definitions.
 

Classes

struct  BeamData
 Processed beam data ready for ROS message conversion. More...
 
struct  PingMetadata
 Processed ping metadata extracted from GLF::GMainImage. More...
 

Enumerations

enum class  FrequencyMode : uint8_t { LOW_FREQUENCY = 0 , HIGH_FREQUENCY = 1 }
 Ping frequency modes. More...
 
enum class  SoSMode : uint8_t { SONAR_SENSOR = 0 , MANUAL = 1 }
 Speed of sound source modes. More...
 

Functions

PingMetadata extractPingMetadata (const GLF::GMainImage &mainImage, uint32_t ping_number)
 Extract ping metadata from GLF::GMainImage.
 
BeamData extractBeamData (const GLF::GMainImage &mainImage, const PingMetadata &metadata)
 Extract beam intensity data from GLF::GMainImage.
 
bool isCompressed (const GLF::GMainImage &mainImage)
 Check if data is compressed and needs decompression.
 
bool decompress (GLF::GMainImage &mainImage)
 Decompress GLF image data if needed.
 
marine_acoustic_msgs::msg::PingInfo createPingInfo (const PingMetadata &metadata)
 Create PingInfo message from conversion parameters.
 
marine_acoustic_msgs::msg::SonarImageData createSonarImageData (const BeamData &beam_data, const PingMetadata &metadata, uint8_t dtype)
 Create SonarImageData message from beam data (OPTIMIZED)
 
marine_acoustic_msgs::msg::RawSonarImage createRawSonarImage (const GLF::GMainImage &mainImage, const PingMetadata &metadata, const BeamData &beam_data, const std::string &frame_id)
 Create marine_acoustic_msgs/RawSonarImage from parsed GLF data.
 
marine_acoustic_msgs::msg::ProjectedSonarImage createProjectedSonarImage (const GLF::GMainImage &mainImage, const PingMetadata &metadata, const BeamData &beam_data, const std::string &frame_id)
 Create marine_acoustic_msgs/ProjectedSonarImage (spatial domain)
 

Detailed Description

GLF (Gemini Log Format) data processing utilities.

This module extracts sonar data from GLF::GLogTargetImage structures received from the Tritech Gemini SDK and prepares it for conversion to marine_acoustic_msgs formats.

Enumeration Type Documentation

◆ FrequencyMode

Ping frequency modes.

Enumerator
LOW_FREQUENCY 

0 = LF mode (720kHz for 1200ik)

HIGH_FREQUENCY 

1 = HF mode (1200kHz for 1200ik)

◆ SoSMode

enum class gemini_sonar_driver::glf_processor::SoSMode : uint8_t
strong

Speed of sound source modes.

Enumerator
SONAR_SENSOR 

0 = Using sonar's internal SOS sensor

MANUAL 

1 = Using manually configured SOS value

Function Documentation

◆ createPingInfo()

marine_acoustic_msgs::msg::PingInfo gemini_sonar_driver::glf_processor::createPingInfo ( const PingMetadata & metadata)

Create PingInfo message from conversion parameters.

Parameters
metadataExtracted ping metadata
Returns
marine_acoustic_msgs::msg::PingInfo Filled ping info message

◆ createProjectedSonarImage()

marine_acoustic_msgs::msg::ProjectedSonarImage gemini_sonar_driver::glf_processor::createProjectedSonarImage ( const GLF::GMainImage & mainImage,
const PingMetadata & metadata,
const BeamData & beam_data,
const std::string & frame_id )

Create marine_acoustic_msgs/ProjectedSonarImage (spatial domain)

Parameters
mainImageGLF main image structure from SDK
metadataExtracted ping metadata
beam_dataExtracted beam data with bearing angles
frame_idTF frame ID for the sonar
Returns
marine_acoustic_msgs::msg::ProjectedSonarImage Complete projected sonar image message

◆ createRawSonarImage()

marine_acoustic_msgs::msg::RawSonarImage gemini_sonar_driver::glf_processor::createRawSonarImage ( const GLF::GMainImage & mainImage,
const PingMetadata & metadata,
const BeamData & beam_data,
const std::string & frame_id )

Create marine_acoustic_msgs/RawSonarImage from parsed GLF data.

Parameters
mainImageGLF main image structure from SDK
metadataExtracted ping metadata
beam_dataExtracted beam data with bearing angles
frame_idTF frame ID for the sonar
Returns
marine_acoustic_msgs::msg::RawSonarImage Complete raw sonar image message

◆ createSonarImageData()

marine_acoustic_msgs::msg::SonarImageData gemini_sonar_driver::glf_processor::createSonarImageData ( const BeamData & beam_data,
const PingMetadata & metadata,
uint8_t dtype )

Create SonarImageData message from beam data (OPTIMIZED)

Uses BeamData.flat_data which is already in row-major (beam-major) format. This is the zero-copy approach - direct assignment from GLF SDK data.

Parameters
beam_dataBeamData structure with flat_data already in correct format
metadataPing metadata for beam count
dtypeData type for the image (DTYPE_UINT8 for Gemini)
Returns
marine_acoustic_msgs::msg::SonarImageData Filled sonar image data message

◆ decompress()

bool gemini_sonar_driver::glf_processor::decompress ( GLF::GMainImage & mainImage)

Decompress GLF image data if needed.

Parameters
mainImageGLF main image structure (will be modified if compressed)
Returns
true if decompression succeeded or not needed, false on error

◆ extractBeamData()

BeamData gemini_sonar_driver::glf_processor::extractBeamData ( const GLF::GMainImage & mainImage,
const PingMetadata & metadata )

Extract beam intensity data from GLF::GMainImage.

The SDK provides data in row-major (beam-major) format: [beam0_sample0, beam0_sample1, ..., beam1_sample0, beam1_sample1, ...]

This function reorganizes it into a 2D vector structure for easier processing.

Parameters
mainImageGLF main image structure from SDK
metadataPre-extracted ping metadata (for dimensions)
Returns
BeamData Reorganized beam data with bearing angles

◆ extractPingMetadata()

PingMetadata gemini_sonar_driver::glf_processor::extractPingMetadata ( const GLF::GMainImage & mainImage,
uint32_t ping_number )

Extract ping metadata from GLF::GMainImage.

Parameters
mainImageGLF main image structure from SDK
ping_numberSequential ping counter
Returns
PingMetadata Extracted metadata

◆ isCompressed()

bool gemini_sonar_driver::glf_processor::isCompressed ( const GLF::GMainImage & mainImage)

Check if data is compressed and needs decompression.

Parameters
mainImageGLF main image structure
Returns
true if compression is active, false otherwise