Open OuyangJunyuan opened 3 years ago
解决方法:把fixed关节换成近似fixed的revolute。防止sdf优化urdf
<joint name="${name}_base_mount_joint" type="revolute">
<xacro:insert_block name="origin" />
<parent link="${parent}"/>
<child link="${frame}"/>
<axis xyz="0 0 1"/>
<limit lower="-1e-5" upper="1e-5" effort="1e-5" velocity="1e-5" />
</joint>
但是这样 robot_state_publisher 就无法发布这两个连接之间的tf了。因为robots_state_publisher只发布fixed的joint。
这个问题出现在URDF -> SDF的过程中。而xacro转urdf是没问题的。 问题是:URDF中末端link一路到最近的非fixed节点的子link这段link都是fixedjoint的,那么SDF就会合并这些link为1个link,这些link在SDF中是一个大link,然后具有不同的vision和collide标签(且有不同origin相对于本link和父link的joint坐标)。 !!!这都不是最要紧的,甚至说这样是优化的。但是问题出在了,如果你在urdf中用这样的标签来定义一些gazebo中的属性:比如插件,那么会出大问题!!! 这个标签会从末端中几个子link直接变成这个整个的大link的标签,此外还会帮你把一些符号替换了,比你定义了的xacro中的宏函数有一个param为 paraent ,一开始是子link名传入parent,但是会被替换成根link传入parent。