LORD-MicroStrain/microstrain_inertial

Double definition of interfaces due to non std message folder structure

PhilippPolterauer opened this issue · 3 comments

Describe the bug
the folder structure in the microstrain_inertial_msgs leads to a double definition of the interfaces, where the idl file will typically be the one showing up last. Leading to warnings when recording rosbags, that state "

To Reproduce
Steps to reproduce the behavior:

  1. clone the ros2 branch of the repository
docker run --rm -it ros:humble bash
cd 
git clone --recursive -b ros2 https://github.com/LORD-MicroStrain/microstrain_inertial
source /opt/ros/humble/setup.bash
colcon build --merge-install --packages-select microstrain_inertial_msgs
source install/local_setup.bash
  1. inspect the available interfaces
$ ros2 interface package  microstrain_inertial_msgs 
microstrain_inertial_msgs/mip/MipFilterGnssDualAntennaStatus
microstrain_inertial_msgs/bitfield/MipFilterAidingMeasurementSummaryIndicator
microstrain_inertial_msgs/msg/MipBaseDeviceInfo
microstrain_inertial_msgs/msg/MipFilterAidingMeasurementSummaryIndicator
microstrain_inertial_msgs/struct/MipBaseDeviceInfo
microstrain_inertial_msgs/mip/MipFilterGnssPositionAidingStatus
microstrain_inertial_msgs/mip/MipFilterMultiAntennaOffsetCorrection
microstrain_inertial_msgs/bitfield/MipFilterGnssPositionAidingStatusStatus
microstrain_inertial_msgs/msg/HumanReadableStatus
microstrain_inertial_msgs/bitfield/MipGnssCorrectionsRtkCorrectionsStatusDongleStatus
microstrain_inertial_msgs/msg/MipFilterGnssDualAntennaStatus
microstrain_inertial_msgs/mip/Mip3dmCaptureGyroBias
microstrain_inertial_msgs/mip/MipSensorOverrangeStatus
microstrain_inertial_msgs/msg/MipHeader
microstrain_inertial_msgs/msg/MipGnssCorrectionsRtkCorrectionsStatusEpochStatus
microstrain_inertial_msgs/bitfield/MipGnssCorrectionsRtkCorrectionsStatusEpochStatus
microstrain_inertial_msgs/msg/MipFilterGnssDualAntennaStatusStatusFlags
microstrain_inertial_msgs/msg/MipFilterAidingMeasurementSummary
microstrain_inertial_msgs/bitfield/MipFilterStatusGx5StatusFlags
microstrain_inertial_msgs/msg/MipFilterStatus
microstrain_inertial_msgs/msg/MipGnssFixInfoFixFlags
microstrain_inertial_msgs/mip/MipGnssFixInfo
microstrain_inertial_msgs/bitfield/MipFilterStatusGq7StatusFlags
microstrain_inertial_msgs/mip/MipGnssSbasInfo
microstrain_inertial_msgs/msg/MipSensorOverrangeStatus
microstrain_inertial_msgs/mip/MipGnssCorrectionsRtkCorrectionsStatus
microstrain_inertial_msgs/msg/MipGnssCorrectionsRtkCorrectionsStatus
microstrain_inertial_msgs/mip/MipBaseGetDeviceInformation
microstrain_inertial_msgs/msg/MipGnssRfErrorDetection
microstrain_inertial_msgs/srv/MipBaseGetDeviceInformation
microstrain_inertial_msgs/msg/MipGnssCorrectionsRtkCorrectionsStatusDongleStatus
microstrain_inertial_msgs/srv/Mip3dmCaptureGyroBias
microstrain_inertial_msgs/bitfield/MipSensorOverrangeStatusStatus
microstrain_inertial_msgs/mip/MipHeader
microstrain_inertial_msgs/msg/MipFilterGnssPositionAidingStatusStatus
microstrain_inertial_msgs/msg/MipFilterMultiAntennaOffsetCorrection
microstrain_inertial_msgs/mip/MipFilterAidingMeasurementSummary
microstrain_inertial_msgs/msg/MipFilterStatusGq7StatusFlags
microstrain_inertial_msgs/msg/MipSensorOverrangeStatusStatus
microstrain_inertial_msgs/msg/MipGpsTimestamp
microstrain_inertial_msgs/msg/MipGnssSbasInfoSbasStatus
microstrain_inertial_msgs/msg/MipGnssFixInfo
microstrain_inertial_msgs/msg/MipGnssSbasInfo
microstrain_inertial_msgs/mip/MipGnssRfErrorDetection
microstrain_inertial_msgs/bitfield/MipGnssFixInfoFixFlags
microstrain_inertial_msgs/msg/MipFilterGnssPositionAidingStatus
microstrain_inertial_msgs/mip/MipFilterStatus
microstrain_inertial_msgs/mip/MipGpsTimestamp
microstrain_inertial_msgs/bitfield/MipFilterGnssDualAntennaStatusStatusFlags
microstrain_inertial_msgs/msg/MipFilterStatusGx5StatusFlags
microstrain_inertial_msgs/bitfield/MipGnssSbasInfoSbasStatus
  1. observe that the same message type e.g. MipFilterAidingMeasurementSummaryIndicator now has two definitions one at microstrain_inertial_msgs/bitfield/MipFilterAidingMeasurementSummaryIndicator and one at microstrain_inertial_msgs/msg/MipFilterAidingMeasurementSummaryIndicator, where the later is the idl file and the first one the msg file.

The behaviour can be understood when looking at the Installation msg folder structure:
image
as you can see the .msg files are installed into the mip folder while the .idl files are installed into the msg folder (which is the expected place)

Expected behavior
both idl and msg file in the same place leading to only one type in the interface list. as e.g. for microstrain_inertial_msgs/msg/HumanReadableStatus

$ ros2 interface package  microstrain_inertial_msgs | grep Human
microstrain_inertial_msgs/msg/HumanReadableStatus

Environment:

  • OS: Ubuntu 20.04
  • Architecture: x86_64
  • ROS Version: humble (from source)
  • Version: ros2-4.0.0
  • Sensor(s): 3DM-GQ7

Modifications
No modifications have been performed.

Potential fix
move all msg files into a single msg folder, as the names do not collide anyway.

Should be fixed in #311 and #312

This issue is stale because it has been open for 2 weeks with no activity. If the issue is still not resolved, please leave a comment describing what is still not working

This issue was closed because it has been inactive for 2 weeks since being marked as stale. If the issue is still not resolved, please reopen the issue, and leave a comment describing what is still not working