OuyangJunyuan / LiDAR_GazeboROSPlugin_Sim

0 stars 0 forks source link

关于Xacro转SDF出现的问题!!!!重要 #6

Open OuyangJunyuan opened 3 years ago

OuyangJunyuan commented 3 years ago

这个问题出现在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。

OuyangJunyuan commented 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>
OuyangJunyuan commented 3 years ago

但是这样 robot_state_publisher 就无法发布这两个连接之间的tf了。因为robots_state_publisher只发布fixed的joint。