URDF(xacro)を使った時にセンサーの姿勢が反映されない

症状

  • sensorタグ内で指定したposeタグの内容がモデルに反映されない

もしかして?

センサーが取り付けられているlinkのjointがfixedになっていませんか?

fixedであるjointは、GazeboがURDFをロードするときに自動で親linkと一体化されてしまうので、センサーが参照しているlinkがなくなります。

センサーの付いているlinkはrevoluteにすることで自動的に一体化されるのを防げます。

例:

<joint name="lidar_joint" type="revolute">
  <origin xyz="0 0.01 0.026" rpy="0 0 3.14" />
  <child link="lidar_link"/>
  <parent link="base_link" />
  <limit upper="0" lower="0" effort="0" velocity="0" />
</joint>
<!-- Sensor -->
<gazebo reference="lidar_link">
  <material>Gazebo/DarkGrey</material>
  <sensor name="laser" type="ray">
    <pose>0 -0.03 0.055 0 0 -1.57</pose>
    <ray>
      <scan>
        <horizontal>
          <samples>720</samples>
          <resolution>1</resolution>
          <min_angle>-2.0944</min_angle>
          <max_angle>2.0944</max_angle>
        </horizontal>
      </scan>
      <range>
        <min>0.1</min>
        <max>30</max>
        <resolution>0.01</resolution>
      </range>
      <noise>
        <type>gaussian</type>
        <mean>0.0</mean>
        <stddev>0.01</stddev>
      </noise>
    </ray>
    <plugin name="LaserPlugin" filename="libgazebo_ros_laser.so">
      <topicName>/laser/scan</topicName>
      <frameName>/lidar_link</frameName>
    </plugin>
    <always_on>1</always_on>
    <update_rate>40</update_rate>
    <visualize>true</visualize>
  </sensor>
</gazebo>