Closed DavidMansolino closed 4 years ago
Describe the Bug If a Robot contains a Track node the URDF export is completely corrupted. It is fine to ignore the Track part since it is not supported in URDF, but the generated model should still be valid.
URDF obtained when exporting the track sample:
<?xml version="1.0"?> <robot name="tracked robot" xmlns:xacro="http://ros.org/wiki/xacro"> <link name="base_link"> <visual name="shape_156"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_287"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> </link> <link name="right track"> children [ <visual name="trackwheel_224"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_225"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_226"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_230"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_231"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_232"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_236"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_237"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_238"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_242"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_243"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_244"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_248"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_249"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_250"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_254"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_255"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_256"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_260"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_261"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_262"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> Transform { translation -0.3 0.107 0 rotation 0 0 -1 0 children [ <visual name="group_279"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_280"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_283"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_284"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> ] } Transform { translation -0.2556028163237002 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.2112056326474004 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1668084489711006 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.12241126529480079 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.07801408161850099 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.03361689794220119 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.010780285734098602 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.055177469410398396 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.09957465308669819 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.143971836762998 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.1883690204392978 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2327662041155976 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.27716338779189736 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3208211857065435 0.1009463191115046 0 rotation 0 0 -1 0.36478882030649107 children [ USE ANIMATED_GEOM ] } Transform { translation 0.35695768033236563 0.0759002325379737 0 rotation 0 0 -1 0.8473669037445324 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3773444436634963 0.03694471203867422 0 rotation 0 0 -1 1.3299449871825737 children [ USE ANIMATED_GEOM ] } Transform { translation 0.37732519893879457 -0.007022916122638355 0 rotation 0 0 -1 1.812523070620615 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3569043415967589 -0.045960575039259204 0 rotation 0 0 -1 2.2951011540586563 children [ USE ANIMATED_GEOM ] } Transform { translation 0.32080321196065814 -0.0711099088206901 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2802711349431988 -0.0892278736908913 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2397390579257394 -0.1073458385610925 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.19918075562027748 -0.1254019540938434 0 rotation 0 0 -1 2.7791931652629693 children [ USE ANIMATED_GEOM ] } Transform { translation 0.15509879585677316 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.11070161218047336 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.06630442850417356 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.02190724482787377 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.022489938848426025 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.06688712252472581 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.11128430620102561 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1556814898773254 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1999723669629856 -0.12673695776846128 0 rotation 0 0 -1 -2.889625814749163 children [ USE ANIMATED_GEOM ] } Transform { translation -0.24101182042987918 -0.10985090156437308 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.2819002670715105 -0.09255220653782363 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3227887137131419 -0.07525351151127418 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3612629852412825 -0.05363560766341627 0 rotation 0 0 -1 -2.412890417190205 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3861181835346128 -0.01736755265228966 0 rotation 0 0 -1 -1.9303123337521637 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3913042420929676 0.026293156150021268 0 rotation 0 0 -1 -1.4477342503141224 children [ USE ANIMATED_GEOM ] } Transform { translation -0.37563668040048637 0.06737454131536313 0 rotation 0 0 -1 -0.9651561668760811 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3426939234492836 0.09649373534515833 0 rotation 0 0 -1 -0.4825780834380398 children [ USE ANIMATED_GEOM ] } ] </link> <joint name="base_link_right track_joint" type="fixed"> <parent link="base_link"/> <child link="right track"/> <origin xyz="0 0 0.07" rpy="0 0 0" /> </joint> <link name="left track"> children [ <visual name="trackwheel_160"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_161"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_162"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_166"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_167"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_168"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_172"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_173"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_174"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_178"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_179"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_180"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_184"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_185"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_186"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_190"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_191"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_192"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="trackwheel_196"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_197"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_198"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> Transform { translation -0.3 0.107 0 rotation 0 0 -1 0 children [ <visual name="group_215"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_216"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="transform_219"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> <visual name="shape_220"> <geometry> <box size="0.01 0.01 0.01"/> </geometry> </visual> ] } Transform { translation -0.2556028163237002 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.2112056326474004 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1668084489711006 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.12241126529480079 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.07801408161850099 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation -0.03361689794220119 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.010780285734098602 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.055177469410398396 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.09957465308669819 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.143971836762998 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.1883690204392978 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2327662041155976 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.27716338779189736 0.107 0 rotation 0 0 -1 0 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3208211857065435 0.1009463191115046 0 rotation 0 0 -1 0.36478882030649107 children [ USE ANIMATED_GEOM ] } Transform { translation 0.35695768033236563 0.0759002325379737 0 rotation 0 0 -1 0.8473669037445324 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3773444436634963 0.03694471203867422 0 rotation 0 0 -1 1.3299449871825737 children [ USE ANIMATED_GEOM ] } Transform { translation 0.37732519893879457 -0.007022916122638355 0 rotation 0 0 -1 1.812523070620615 children [ USE ANIMATED_GEOM ] } Transform { translation 0.3569043415967589 -0.045960575039259204 0 rotation 0 0 -1 2.2951011540586563 children [ USE ANIMATED_GEOM ] } Transform { translation 0.32080321196065814 -0.0711099088206901 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2802711349431988 -0.0892278736908913 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.2397390579257394 -0.1073458385610925 0 rotation 0 0 -1 2.7212337286561454 children [ USE ANIMATED_GEOM ] } Transform { translation 0.19918075562027748 -0.1254019540938434 0 rotation 0 0 -1 2.7791931652629693 children [ USE ANIMATED_GEOM ] } Transform { translation 0.15509879585677316 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.11070161218047336 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.06630442850417356 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation 0.02190724482787377 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.022489938848426025 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.06688712252472581 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.11128430620102561 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1556814898773254 -0.128 0 rotation 0 0 -1 -3.141592653589793 children [ USE ANIMATED_GEOM ] } Transform { translation -0.1999723669629856 -0.12673695776846128 0 rotation 0 0 -1 -2.889625814749163 children [ USE ANIMATED_GEOM ] } Transform { translation -0.24101182042987918 -0.10985090156437308 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.2819002670715105 -0.09255220653782363 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3227887137131419 -0.07525351151127418 0 rotation 0 0 -1 -2.7413574556655504 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3612629852412825 -0.05363560766341627 0 rotation 0 0 -1 -2.412890417190205 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3861181835346128 -0.01736755265228966 0 rotation 0 0 -1 -1.9303123337521637 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3913042420929676 0.026293156150021268 0 rotation 0 0 -1 -1.4477342503141224 children [ USE ANIMATED_GEOM ] } Transform { translation -0.37563668040048637 0.06737454131536313 0 rotation 0 0 -1 -0.9651561668760811 children [ USE ANIMATED_GEOM ] } Transform { translation -0.3426939234492836 0.09649373534515833 0 rotation 0 0 -1 -0.4825780834380398 children [ USE ANIMATED_GEOM ] } ] </link> <joint name="base_link_left track_joint" type="fixed"> <parent link="base_link"/> <child link="left track"/> <origin xyz="0 0 -0.07" rpy="0 0 0" /> </joint> </robot>
Fixed in #2068.
Describe the Bug If a Robot contains a Track node the URDF export is completely corrupted. It is fine to ignore the Track part since it is not supported in URDF, but the generated model should still be valid.
URDF obtained when exporting the track sample: