Robotics StackExchange | Archived questions

What will be the xacro equivalent of this sdf file?

Hello, launch Below is my sdf file for a tree. I want to use this tree model in my world but I want to load and parameterize it using a launch file, but apparently, I can't find a way to add sdf file in my launch file. However, I know how I can load a model using an equivalent xacro file.

I am trying to convert this sdf file to xacro file. But there seems to be a mistake in it. Can someone please let me know how should I proceed??

Below is my sdf file of a tree model:

<?xml version="1.0" ?>
<sdf version="1.6">
  <model name="oak_tree">
    <static>true</static>
    <link name="link">
      <collision name="collision">
        <geometry>
          <mesh>
            <uri>model://oak_tree/meshes/oak_tree.dae</uri>
          </mesh>
        </geometry>
      </collision>
      <visual name="branch">
        <geometry>
          <mesh>
            <uri>model://oak_tree/meshes/oak_tree.dae</uri>
            <submesh>
              <name>Branch</name>
            </submesh>
          </mesh>
        </geometry>
        <material>
          <script>
            <uri>model://oak_tree/materials/scripts/</uri>
            <uri>model://oak_tree/materials/textures/</uri>
            <name>OakTree/Branch</name>
          </script>
        </material>
      </visual>
      <visual name="bark">
        <geometry>
          <mesh>
            <uri>model://oak_tree/meshes/oak_tree.dae</uri>
            <submesh>
              <name>Bark</name>
            </submesh>
          </mesh>
        </geometry>
        <material>
          <script>
            <uri>model://oak_tree/materials/scripts/</uri>
            <uri>model://oak_tree/materials/textures/</uri>
            <name>OakTree/Bark</name>
          </script>
        </material>
      </visual>
    </link>
  </model>
</sdf>

And below is the xacro file I wrote although it doesn't work

<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="oak_tree">
  <link name="$(arg name)">
    <static>true</static>
    <collision>
      <geometry>
        <mesh filename = "/home/user/.gazebo/models/oak_tree/meshes/oak_tree.dae"/>
      </geometry>
    </collision>
    <visual name="branch">
      <geometry>
        <mesh filename = "/home/user/.gazebo/models/oak_tree/meshes/oak_tree.dae"/>
          <submesh name = "Branch"/>
      </geometry>
      <material>
        <script filename = "/home/user/.gazebo/models/oak_tree/scripts"/> 
        <script filename = "/home/user/.gazebo/models/oak_tree/textures" name="OakTree/Branch"/>
      </material>
    </visual>
    <visual name="bark">
      <geometry>
        <mesh filename = "/home/user/.gazebo/models/oak_tree/meshes/oak_tree.dae"/>
          <submesh name = "Bark"/>
      </geometry>
      <material>
        <script filename = "/home/user/.gazebo/models/oak_tree/scripts"/>
        <script filename = "/home/user/.gazebo/models/oak_tree/textures" name="OakTree/Bark"/>
      </material>
    </visual>
  </link>
</robot>

Asked by Prasun on 2023-07-31 03:27:45 UTC

Comments

Answers