sdformat
sdformat copied to clipboard
parser_urdf: ReduceSDFExtension*FrameReplace functions are broken in libsdformat10+
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*FrameReplace
functions 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
bodyName
field (forfixed_joint_reduction_plugin_frame_extension.urdf
, this would belink2
). - Convert the file to SDFormat using
ign sdf -p
- Expect the
bodyName
field 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
- [x] ReduceSDFExtensionJointFrameReplace https://github.com/gazebosim/sdformat/pull/1089
- [x] ReduceSDFExtensionPluginFrameReplace #745
- [ ] ReduceSDFExtensionProjectorFrameReplace
I've added tests for ReduceSDFExtensionJointFrameReplace
in the following branches:
- targeting sdf9 (passes): https://github.com/gazebosim/sdformat/compare/sdf9...scpeters:test_fixed_joint_reduction_joint_9
- targeting sdf12 (fails): https://github.com/gazebosim/sdformat/compare/sdf12...scpeters:test_fixed_joint_reduction_joint_12
I've added tests for
ReduceSDFExtensionJointFrameReplace
in the following branches:
- targeting sdf9 (passes): sdf9...scpeters:test_fixed_joint_reduction_joint_9
- targeting sdf12 (fails): sdf12...scpeters:test_fixed_joint_reduction_joint_12
fix in https://github.com/gazebosim/sdformat/pull/1089
to complete this issue, the fix from #1089 can be applied to the following three functions:
- ReduceSDFExtensionContactSensorFrameReplace
- ReduceSDFExtensionGripperFrameReplace
- ReduceSDFExtensionProjectorFrameReplace