SBG-Systems / sbg_ros_driver

ROS 1 driver for SBG Systems IMU/AHRS/INS units such as ELLIPSE or QUANTA.
https://www.sbg-systems.com
MIT License
75 stars 43 forks source link

Relative namespace for topics #75

Closed philibert-adam closed 2 years ago

philibert-adam commented 2 years ago

Dear all,

As of now the name of all output topics is hard-coded in the following function :

https://github.com/SBG-Systems/sbg_ros_driver/blob/master/src/message_publisher.cpp#L21-L91

std::string MessagePublisher::getOutputTopicName(SbgEComMsgId sbg_message_id) const
{
  switch (sbg_message_id)
  {
  case SBG_ECOM_LOG_STATUS:
    return "sbg/status";

  case SBG_ECOM_LOG_UTC_TIME:
    return "sbg/utc_time";

  case SBG_ECOM_LOG_IMU_DATA:
    return "sbg/imu_data";

  case SBG_ECOM_LOG_MAG:
    return "sbg/mag";

  case SBG_ECOM_LOG_MAG_CALIB:
    return "sbg/mag_calib";

  case SBG_ECOM_LOG_EKF_EULER:
    return "sbg/ekf_euler";

  case SBG_ECOM_LOG_EKF_QUAT:
    return "sbg/ekf_quat";

  case SBG_ECOM_LOG_EKF_NAV:
    return "sbg/ekf_nav";

  case SBG_ECOM_LOG_SHIP_MOTION:
    return "sbg/ship_motion";

  case SBG_ECOM_LOG_GPS1_VEL:
    return "sbg/gps_vel";

  case SBG_ECOM_LOG_GPS1_POS:
    return "sbg/gps_pos";

  case SBG_ECOM_LOG_GPS1_HDT:
    return "sbg/gps_hdt";

  case SBG_ECOM_LOG_GPS1_RAW:
    return "sbg/gps_raw";

  case SBG_ECOM_LOG_ODO_VEL:
    return "sbg/odo_vel";

  case SBG_ECOM_LOG_EVENT_A:
    return "sbg/eventA";

  case SBG_ECOM_LOG_EVENT_B:
    return "sbg/eventB";

  case SBG_ECOM_LOG_EVENT_C:
    return "sbg/eventC";

  case SBG_ECOM_LOG_EVENT_D:
    return "sbg/eventD";

  case SBG_ECOM_LOG_EVENT_E:
    return "sbg/eventE";

  case SBG_ECOM_LOG_AIR_DATA:
    return "sbg/air_data";

  case SBG_ECOM_LOG_IMU_SHORT:
    return "sbg/imu_short";

  default:
    return "undefined";
  }
}

Is there currently any way to specify custom names ? I need to get rid of the sbg field and replace it with a relative namespace.

Thank you !

richardbraun commented 2 years ago

I've updated the driver so that it performs name resolution on the imu and sbg nodes, which allows users to use the built-in remapping feature of ROS.