sdformat icon indicating copy to clipboard operation
sdformat copied to clipboard

parser_urdf: ReduceSDFExtension*FrameReplace functions are broken in libsdformat10+

Open scpeters opened this issue 2 years ago • 3 comments

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

  1. 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 (for fixed_joint_reduction_plugin_frame_extension.urdf, this would be link2).
  2. Convert the file to SDFormat using ign sdf -p
  3. Expect the bodyName field to be changed to the name of the parent link (for fixed_joint_reduction_plugin_frame_extension.urdf, this would be base_link).

Output

Functions that need a test and fix:

  • [ ] ReduceSDFExtensionContactSensorFrameReplace
  • [ ] ReduceSDFExtensionGripperFrameReplace
  • [x] ReduceSDFExtensionJointFrameReplace https://github.com/gazebosim/sdformat/pull/1089
  • [x] ReduceSDFExtensionPluginFrameReplace #745
  • [ ] ReduceSDFExtensionProjectorFrameReplace

scpeters avatar Nov 11 '21 01:11 scpeters

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

scpeters avatar May 13 '22 19:05 scpeters

I've added tests for ReduceSDFExtensionJointFrameReplace in the following branches:

fix in https://github.com/gazebosim/sdformat/pull/1089

scpeters avatar Jul 22 '22 01:07 scpeters

to complete this issue, the fix from #1089 can be applied to the following three functions:

  • ReduceSDFExtensionContactSensorFrameReplace
  • ReduceSDFExtensionGripperFrameReplace
  • ReduceSDFExtensionProjectorFrameReplace

scpeters avatar Feb 02 '24 00:02 scpeters