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

Main driver node for Tritech Gemini 1200ikd multibeam sonar. More...

#include <gemini_sonar_node.hpp>

Inheritance diagram for gemini_sonar_driver::GeminiSonarNode:
Collaboration diagram for gemini_sonar_driver::GeminiSonarNode:

Classes

struct  Parameters
 Sonar configuration parameters. More...
 
struct  Publishers
 ROS2 publishers. More...
 
struct  Services
 ROS2 services. More...
 

Public Member Functions

 GeminiSonarNode ()
 
 ~GeminiSonarNode ()
 

Protected Member Functions

void handleStartSonar (const std::shared_ptr< gemini_sonar_driver_interfaces::srv::StartSonar::Request > request, std::shared_ptr< gemini_sonar_driver_interfaces::srv::StartSonar::Response > response)
 Service callback to start the sonar.
 
void handleStopSonar (const std::shared_ptr< gemini_sonar_driver_interfaces::srv::StopSonar::Request > request, std::shared_ptr< gemini_sonar_driver_interfaces::srv::StopSonar::Response > response)
 Service callback to stop the sonar.
 
void handleSvs5Message (unsigned int messageType, unsigned int size, const char *const value)
 Instance method to handle Svs5 messages.
 
void processGeminiStatus (const GLF::GeminiStatusRecord *pStatus)
 Process GLF status messages.
 
void processGLFImage (const GLF::GLogTargetImage &image)
 Process GLF sonar image data.
 
void processLoggerRecUpdate (const GLF::SOutputFileInfo *loggerInfo)
 Process logger recording update messages.
 
bool initializeGeminiSDK ()
 Initialize the Gemini SDK and configure sonar.
 
bool configureSonar ()
 Configure sonar parameters via SDK.
 
bool startPinging ()
 Start the sonar pinging.
 
bool stopPinging ()
 Stop the sonar pinging.
 
void startLogging (std::string log_directory)
 Start Gemini data logging (Native GLF format)
 
void stopLogging ()
 Stop Gemini data logging (Native GLF format)
 
void shutdownGeminiSDK ()
 Shutdown the Gemini SDK.
 
bool waitForSonarDetection (int timeout_seconds)
 Wait for sonar to be detected on network.
 
void setSdkParameter (SequencerApi::ESvs5ConfigType config_type, size_t size, const void *data, const std::string &param_name)
 Helper to set SDK configuration with error logging.
 

Static Protected Member Functions

static void svs5DataCallback (unsigned int messageType, unsigned int size, const char *const value)
 Static callback function for Svs5Sequencer API This is called by the SDK when data is received.
 

Protected Attributes

Parameters parameters_
 
Publishers publishers_
 
Services services_
 
std::atomic< bool > sonar_streaming_ {false}
 
std::atomic< bool > sdk_initialized_ {false}
 
std::atomic< bool > sonar_detected_ {false}
 True if we've received any messages from sonar.
 
std::atomic< uint64_t > last_message_time_ {0}
 Timestamp of last received message.
 
std::mutex data_mutex_
 
std::vector< std::vector< uint8_t > > current_ping_beams_
 Current ping beam data.
 
bool ping_complete_ {false}
 
uint32_t ping_number_ {0}
 
double ping_time_ {0.0}
 
double range_m_ {0.0}
 

Static Protected Attributes

static GeminiSonarNodeinstance_ = nullptr
 

Detailed Description

Main driver node for Tritech Gemini 1200ikd multibeam sonar.

This node interfaces with the Gemini SDK to:

  • Configure sonar parameters via ROS2 parameters
  • Start/stop sonar operation via ROS2 services
  • Publish multibeam data using marine_acoustic_msgs (RawSonarImage, ProjectedSonarImage)
  • Log data in native Gemini format alongside ROS2 bags

Constructor & Destructor Documentation

◆ GeminiSonarNode()

GeminiSonarNode::GeminiSonarNode ( )

◆ ~GeminiSonarNode()

GeminiSonarNode::~GeminiSonarNode ( )

Member Function Documentation

◆ configureSonar()

bool GeminiSonarNode::configureSonar ( )
protected

Configure sonar parameters via SDK.

◆ handleStartSonar()

void GeminiSonarNode::handleStartSonar ( const std::shared_ptr< gemini_sonar_driver_interfaces::srv::StartSonar::Request > request,
std::shared_ptr< gemini_sonar_driver_interfaces::srv::StartSonar::Response > response )
protected

Service callback to start the sonar.

◆ handleStopSonar()

void GeminiSonarNode::handleStopSonar ( const std::shared_ptr< gemini_sonar_driver_interfaces::srv::StopSonar::Request > request,
std::shared_ptr< gemini_sonar_driver_interfaces::srv::StopSonar::Response > response )
protected

Service callback to stop the sonar.

◆ handleSvs5Message()

void GeminiSonarNode::handleSvs5Message ( unsigned int messageType,
unsigned int size,
const char *const value )
protected

Instance method to handle Svs5 messages.

◆ initializeGeminiSDK()

bool GeminiSonarNode::initializeGeminiSDK ( )
protected

Initialize the Gemini SDK and configure sonar.

◆ processGeminiStatus()

void GeminiSonarNode::processGeminiStatus ( const GLF::GeminiStatusRecord * pStatus)
protected

Process GLF status messages.

◆ processGLFImage()

void GeminiSonarNode::processGLFImage ( const GLF::GLogTargetImage & image)
protected

Process GLF sonar image data.

◆ processLoggerRecUpdate()

void GeminiSonarNode::processLoggerRecUpdate ( const GLF::SOutputFileInfo * loggerInfo)
protected

Process logger recording update messages.

◆ setSdkParameter()

void GeminiSonarNode::setSdkParameter ( SequencerApi::ESvs5ConfigType config_type,
size_t size,
const void * data,
const std::string & param_name )
protected

Helper to set SDK configuration with error logging.

Parameters
config_typeThe configuration type to set
sizeSize of the configuration data
dataPointer to configuration data
param_nameHuman-readable parameter name for logging

◆ shutdownGeminiSDK()

void GeminiSonarNode::shutdownGeminiSDK ( )
protected

Shutdown the Gemini SDK.

◆ startLogging()

void GeminiSonarNode::startLogging ( std::string log_directory)
protected

Start Gemini data logging (Native GLF format)

◆ startPinging()

bool GeminiSonarNode::startPinging ( )
protected

Start the sonar pinging.

◆ stopLogging()

void GeminiSonarNode::stopLogging ( )
protected

Stop Gemini data logging (Native GLF format)

◆ stopPinging()

bool GeminiSonarNode::stopPinging ( )
protected

Stop the sonar pinging.

◆ svs5DataCallback()

static void gemini_sonar_driver::GeminiSonarNode::svs5DataCallback ( unsigned int messageType,
unsigned int size,
const char *const value )
staticprotected

Static callback function for Svs5Sequencer API This is called by the SDK when data is received.

◆ waitForSonarDetection()

bool GeminiSonarNode::waitForSonarDetection ( int timeout_seconds)
protected

Wait for sonar to be detected on network.

Parameters
timeout_secondsMaximum time to wait in seconds
Returns
true if sonar detected, false if timeout

Member Data Documentation

◆ current_ping_beams_

std::vector<std::vector<uint8_t> > gemini_sonar_driver::GeminiSonarNode::current_ping_beams_
protected

Current ping beam data.

◆ data_mutex_

std::mutex gemini_sonar_driver::GeminiSonarNode::data_mutex_
protected

◆ instance_

NS_HEAD GeminiSonarNode * GeminiSonarNode::instance_ = nullptr
staticprotected

◆ last_message_time_

std::atomic<uint64_t> gemini_sonar_driver::GeminiSonarNode::last_message_time_ {0}
protected

Timestamp of last received message.

◆ parameters_

Parameters gemini_sonar_driver::GeminiSonarNode::parameters_
protected

◆ ping_complete_

bool gemini_sonar_driver::GeminiSonarNode::ping_complete_ {false}
protected

◆ ping_number_

uint32_t gemini_sonar_driver::GeminiSonarNode::ping_number_ {0}
protected

◆ ping_time_

double gemini_sonar_driver::GeminiSonarNode::ping_time_ {0.0}
protected

◆ publishers_

Publishers gemini_sonar_driver::GeminiSonarNode::publishers_
protected

◆ range_m_

double gemini_sonar_driver::GeminiSonarNode::range_m_ {0.0}
protected

◆ sdk_initialized_

std::atomic<bool> gemini_sonar_driver::GeminiSonarNode::sdk_initialized_ {false}
protected

◆ services_

Services gemini_sonar_driver::GeminiSonarNode::services_
protected

◆ sonar_detected_

std::atomic<bool> gemini_sonar_driver::GeminiSonarNode::sonar_detected_ {false}
protected

True if we've received any messages from sonar.

◆ sonar_streaming_

std::atomic<bool> gemini_sonar_driver::GeminiSonarNode::sonar_streaming_ {false}
protected

The documentation for this class was generated from the following files: