gazebosim/sdformat
View on GitHubparser_urdf: ReduceSDFExtension*FrameReplace functions are broken in libsdformat10+
Open
#746 opened on Nov 11, 2021
URDFbuggood first issue
Repository metrics
- Stars
- (216 stars)
- PR merge metrics
- (PR metrics pending)
Description
Environment
- OS Version: tested on macOS 10.15 but I expect it's a problem on Ubuntu as well
- Source or binary build? both source and binary for any version newer than 10.0.0
Description
While attempting to merge forward #500 from 9 -> 10 (follow-up to #741), I found that the test added in #500 was failing. The test passes on the sdf6 and sdf9 branches, which use tinyxml, but was failing in my first merge attempt to sdf10, which uses tinyxml2. I manually forward-ported a portion of the test for the ReduceSDFExtensionPluginFrameReplace function in parser_urdf.cc in #745 and noticed a problem in the use of the tinyxml2 API in all the ReduceSDFExtension*FrameReplace functions.
- Expected behavior:
ReduceSDFExtension*FrameReplacefunctions should take effect on blocks of SDFormat contained in links that are consolidated via fixed-joint reduction. - Actual behavior: These functions are not taking effect since the tinyxml2 migration occurred in #264
Steps to reproduce
- Add relevant SDFormat blocks to a test URDF like fixed_joint_reduction_plugin_frame_extension.urdf such that the name of the child link to be consolidated is listed in a
bodyNamefield (forfixed_joint_reduction_plugin_frame_extension.urdf, this would belink2). - Convert the file to SDFormat using
ign sdf -p - Expect the
bodyNamefield to be changed to the name of the parent link (forfixed_joint_reduction_plugin_frame_extension.urdf, this would bebase_link).
Output
Functions that need a test and fix:
- ReduceSDFExtensionContactSensorFrameReplace
- ReduceSDFExtensionGripperFrameReplace
- ReduceSDFExtensionJointFrameReplace https://github.com/gazebosim/sdformat/pull/1089
- ReduceSDFExtensionPluginFrameReplace #745
- ReduceSDFExtensionProjectorFrameReplace