Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build URDF-Model from XML Macros #141

Open
BlackRose01 opened this issue Jan 22, 2025 · 1 comment
Open

Build URDF-Model from XML Macros #141

BlackRose01 opened this issue Jan 22, 2025 · 1 comment

Comments

@BlackRose01
Copy link

Hello,

I would like to use that project with Drake. But it requires an URDF file instead of an XACRO file. I tried to build the file with the support of the following page https://www.kwesirutledge.info/thoughts/ur_urdfs but it always throws different errors that the mir_description package could not be found.

I used the same commands like on the linked page. I also deleted all unnecessary packages from the project and replaced the CMakeLists.txt from this project with the mentioned project on the page.

I hope you can help me.

Thanks in advance.

KR,
BlackRose01

@mintar
Copy link
Member

mintar commented Jan 22, 2025

Install Ubuntu 20.04 and ROS Noetic and follow the README instructions for installation. No need to mess around with the CMakeLists.txt or anything. Then run the following command:

xacro $(rospack find mir_description)/urdf/mir.urdf.xacro mir_type:=mir_100 tf_prefix:="" > mir.urdf

This will generate the file mir.urdf with the following content:

<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from /home/mguenther/ros/noetic/mobipick/src/mir_robot/mir_description/urdf/mir.urdf.xacro | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="mir">
  <!-- necessary because args cannot be accessed inside ${} expressions -->
  <link name="base_footprint"/>
  <joint name="base_joint" type="fixed">
    <parent link="base_footprint"/>
    <child link="base_link"/>
    <origin rpy="0 0 0" xyz="0 0 0"/>
  </joint>
  <link name="base_link">
    <inertial>
      <mass value="77.0"/>
      <origin rpy="0 0 0" xyz="-0.012354000000000004 0.0 0.15"/>
      <inertia ixx="0.8341663330000001" ixy="0.0" ixz="0.0" iyy="1.8608325890000004" iyz="0.0" izz="2.1816657939999997"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0.037646 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/mir_100_base.stl"/>
      </geometry>
      <material name="white">
        <color rgba="1 1 1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0.037646 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/collision/mir_100_base.stl"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="base_link">
    <material>Gazebo/White</material>
  </gazebo>
  <!-- IMU -->
  <joint name="base_link_to_imu_joint" type="fixed">
    <parent link="base_link"/>
    <child link="imu_link"/>
    <origin rpy="0 0 0" xyz="0.0 0.0 0.25"/>
    <!-- same as real MiR -->
  </joint>
  <link name="imu_link"/>
  <gazebo>
    <plugin filename="libhector_gazebo_ros_imu.so" name="imu_plugin">
      <updateRate>50.0</updateRate>
      <bodyName>imu_link</bodyName>
      <frameId>imu_frame</frameId>
      <!-- from real MiR -->
      <topicName>imu_data</topicName>
      <accelDrift>0.0 0.0 0.0</accelDrift>
      <accelGaussianNoise>0.007071067811865475 0.01 0.011401754250991379</accelGaussianNoise>
      <!-- real MiR linear_acceleration_covariance: [5e-05, 0.0, 0.0, 0.0, 0.0001, 0.0, 0.0, 0.0, 0.00013] -->
      <rateDrift>0.0 0.0 0.0</rateDrift>
      <rateGaussianNoise>0.00282842712474619 0.00282842712474619 0.0005477225575051661</rateGaussianNoise>
      <!-- real MiR angular_velocity_covariance: [8e-06, 0.0, 0.0, 0.0, 8e-06, 0.0, 0.0, 0.0, 3e-07] -->
      <yawDrift>0.0</yawDrift>
      <yawGaussianNoise>0.31622776601683794</yawGaussianNoise>
      <!-- real MiR orientation_covariance: [0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1] -->
    </plugin>
  </gazebo>
  <!-- Create an alias for imu_link. This is necessary because the real MiR's
         TF has imu_link, but the imu_data topic is published in the imu_frame
         frame. -->
  <joint name="imu_link_to_imu_frame_joint" type="fixed">
    <parent link="imu_link"/>
    <child link="imu_frame"/>
    <origin rpy="0 0 0" xyz="0 0 0"/>
  </joint>
  <link name="imu_frame"/>
  <!-- Laser scanners -->
  <joint name="base_link_to_front_laser_joint" type="fixed">
    <parent link="base_link"/>
    <child link="front_laser_link"/>
    <origin rpy="0.0 0.0 0.7853981633974483" xyz="0.42964600000000003 0.2358 0.1914"/>
  </joint>
  <link name="front_laser_link">
    <visual>
      <origin rpy="3.141592653589793 0 0" xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/sick_lms-100.stl"/>
      </geometry>
      <!-- <xacro:insert_block name="material_yellow" /> -->
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="3.141592653589793 0 0" xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/sick_lms-100.stl"/>
      </geometry>
    </collision>
    <inertial>
      <mass value="1.2"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.005824997669999999" ixy="0.0" ixz="0.0" iyy="0.00585609765756" iyz="0.0" izz="0.00483609806556"/>
    </inertial>
  </link>
  <gazebo reference="front_laser_link">
    <!-- <material value="Gazebo/Yellow" /> -->
    <material value="Gazebo/FlatBlack"/>
    <sensor name="front_laser_link" type="ray">
      <pose>0 0 0 0 0 0</pose>
      <visualize>false</visualize>
      <update_rate>12.5</update_rate>
      <ray>
        <scan>
          <horizontal>
            <samples>541</samples>
            <resolution>1</resolution>
            <!-- has to be 1; actual resolution will be computed from number of samples + min_angle/max_angle -->
            <min_angle>-2.35619449615</min_angle>
            <max_angle>2.35619449615</max_angle>
          </horizontal>
        </scan>
        <range>
          <min>0.05</min>
          <max>29.0</max>
          <resolution>0.01</resolution>
        </range>
        <noise>
          <type>gaussian</type>
          <!-- Noise parameters based on published spec for S300 achieving
                 "+-29mm" accuracy at range < 3m (~0.01 of the range) at
                 1 sigma. -->
          <mean>0.0</mean>
          <stddev>0.01</stddev>
        </noise>
      </ray>
      <plugin filename="libgazebo_ros_laser.so" name="gazebo_ros_front_laser_link_controller">
        <frameName>front_laser_link</frameName>
        <topicName>f_scan</topicName>
      </plugin>
    </sensor>
  </gazebo>
  <joint name="base_link_to_back_laser_joint" type="fixed">
    <parent link="base_link"/>
    <child link="back_laser_link"/>
    <origin rpy="0.0 0.0 -2.356194490192345" xyz="-0.354354 -0.2358 0.1914"/>
  </joint>
  <link name="back_laser_link">
    <visual>
      <origin rpy="3.141592653589793 0 0" xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/sick_lms-100.stl"/>
      </geometry>
      <!-- <xacro:insert_block name="material_yellow" /> -->
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="3.141592653589793 0 0" xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/sick_lms-100.stl"/>
      </geometry>
    </collision>
    <inertial>
      <mass value="1.2"/>
      <origin xyz="0 0 0"/>
      <inertia ixx="0.005824997669999999" ixy="0.0" ixz="0.0" iyy="0.00585609765756" iyz="0.0" izz="0.00483609806556"/>
    </inertial>
  </link>
  <gazebo reference="back_laser_link">
    <!-- <material value="Gazebo/Yellow" /> -->
    <material value="Gazebo/FlatBlack"/>
    <sensor name="back_laser_link" type="ray">
      <pose>0 0 0 0 0 0</pose>
      <visualize>false</visualize>
      <update_rate>12.5</update_rate>
      <ray>
        <scan>
          <horizontal>
            <samples>541</samples>
            <resolution>1</resolution>
            <!-- has to be 1; actual resolution will be computed from number of samples + min_angle/max_angle -->
            <min_angle>-2.35619449615</min_angle>
            <max_angle>2.35619449615</max_angle>
          </horizontal>
        </scan>
        <range>
          <min>0.05</min>
          <max>29.0</max>
          <resolution>0.01</resolution>
        </range>
        <noise>
          <type>gaussian</type>
          <!-- Noise parameters based on published spec for S300 achieving
                 "+-29mm" accuracy at range < 3m (~0.01 of the range) at
                 1 sigma. -->
          <mean>0.0</mean>
          <stddev>0.01</stddev>
        </noise>
      </ray>
      <plugin filename="libgazebo_ros_laser.so" name="gazebo_ros_back_laser_link_controller">
        <frameName>back_laser_link</frameName>
        <topicName>b_scan</topicName>
      </plugin>
    </sensor>
  </gazebo>
  <!-- Ultrasound sensors -->
  <joint name="us_1_joint" type="fixed">
    <!-- right ultrasound -->
    <parent link="base_link"/>
    <child link="us_1_frame"/>
    <origin rpy="0 0 0" xyz="0.45 -0.12 0.16 "/>
    <!-- from visually matching to the mesh of the MiR -->
  </joint>
  <link name="us_1_frame"/>
  <joint name="us_2_joint" type="fixed">
    <!-- left ultrasound -->
    <parent link="base_link"/>
    <child link="us_2_frame"/>
    <origin rpy="0 0 0" xyz="0.45 0.12 0.16 "/>
    <!-- from visually matching to the mesh of the MiR -->
  </joint>
  <link name="us_2_frame"/>
  <joint name="left_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="0.0 0.222604 0.0625"/>
    <parent link="base_link"/>
    <child link="left_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="100" velocity="20.0"/>
  </joint>
  <link name="left_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="left_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <joint name="right_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="0.0 -0.222604 0.0625"/>
    <parent link="base_link"/>
    <child link="right_wheel_link"/>
    <axis xyz="0 1 0"/>
    <limit effort="100" velocity="20.0"/>
  </joint>
  <link name="right_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="right_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <!-- caster hub -->
  <joint name="fl_caster_rotation_joint" type="continuous">
    <origin rpy="0 0 0" xyz="0.34134600000000004 0.203 0.1565"/>
    <parent link="base_link"/>
    <child link="fl_caster_rotation_link"/>
    <axis xyz="0 0 1"/>
    <dynamics damping="0.01" friction="0.0"/>
  </joint>
  <link name="fl_caster_rotation_link">
    <inertial>
      <!-- <origin xyz="0 0 -0.042500000044" rpy="${0.5 * pi} ${24 * deg_to_rad} ${1.5 * pi}" /> -->
      <origin rpy="0.41887903200000004 0 1.5707963267948966 " xyz="0 0 -0.042500000044"/>
      <mass value="0.3097539019"/>
      <inertia ixx="0.0005844517978" ixy="0" ixz="0" iyy="0.00052872551237" iyz="0" izz="0.00017923555074"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/caster_wheel_base.stl"/>
      </geometry>
      <material name="silver">
        <color rgba="0.79 0.82 0.93 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/collision/caster_wheel_base.stl"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="fl_caster_rotation_link">
    <material>Gazebo/Grey</material>
  </gazebo>
  <!-- caster wheel -->
  <joint name="fl_caster_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.0382 0 -0.094"/>
    <parent link="fl_caster_rotation_link"/>
    <child link="fl_caster_wheel_link"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="fl_caster_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="fl_caster_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <!-- caster hub -->
  <joint name="fr_caster_rotation_joint" type="continuous">
    <origin rpy="0 0 0" xyz="0.34134600000000004 -0.203 0.1565"/>
    <parent link="base_link"/>
    <child link="fr_caster_rotation_link"/>
    <axis xyz="0 0 1"/>
    <dynamics damping="0.01" friction="0.0"/>
  </joint>
  <link name="fr_caster_rotation_link">
    <inertial>
      <!-- <origin xyz="0 0 -0.042500000044" rpy="${0.5 * pi} ${24 * deg_to_rad} ${1.5 * pi}" /> -->
      <origin rpy="0.41887903200000004 0 1.5707963267948966 " xyz="0 0 -0.042500000044"/>
      <mass value="0.3097539019"/>
      <inertia ixx="0.0005844517978" ixy="0" ixz="0" iyy="0.00052872551237" iyz="0" izz="0.00017923555074"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/caster_wheel_base.stl"/>
      </geometry>
      <material name="silver">
        <color rgba="0.79 0.82 0.93 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/collision/caster_wheel_base.stl"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="fr_caster_rotation_link">
    <material>Gazebo/Grey</material>
  </gazebo>
  <!-- caster wheel -->
  <joint name="fr_caster_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.0382 0 -0.094"/>
    <parent link="fr_caster_rotation_link"/>
    <child link="fr_caster_wheel_link"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="fr_caster_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="fr_caster_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <!-- caster hub -->
  <joint name="bl_caster_rotation_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.270154 0.203 0.1565"/>
    <parent link="base_link"/>
    <child link="bl_caster_rotation_link"/>
    <axis xyz="0 0 1"/>
    <dynamics damping="0.01" friction="0.0"/>
  </joint>
  <link name="bl_caster_rotation_link">
    <inertial>
      <!-- <origin xyz="0 0 -0.042500000044" rpy="${0.5 * pi} ${24 * deg_to_rad} ${1.5 * pi}" /> -->
      <origin rpy="0.41887903200000004 0 1.5707963267948966 " xyz="0 0 -0.042500000044"/>
      <mass value="0.3097539019"/>
      <inertia ixx="0.0005844517978" ixy="0" ixz="0" iyy="0.00052872551237" iyz="0" izz="0.00017923555074"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/caster_wheel_base.stl"/>
      </geometry>
      <material name="silver">
        <color rgba="0.79 0.82 0.93 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/collision/caster_wheel_base.stl"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="bl_caster_rotation_link">
    <material>Gazebo/Grey</material>
  </gazebo>
  <!-- caster wheel -->
  <joint name="bl_caster_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.0382 0 -0.094"/>
    <parent link="bl_caster_rotation_link"/>
    <child link="bl_caster_wheel_link"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="bl_caster_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="bl_caster_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <!-- caster hub -->
  <joint name="br_caster_rotation_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.270154 -0.203 0.1565"/>
    <parent link="base_link"/>
    <child link="br_caster_rotation_link"/>
    <axis xyz="0 0 1"/>
    <dynamics damping="0.01" friction="0.0"/>
  </joint>
  <link name="br_caster_rotation_link">
    <inertial>
      <!-- <origin xyz="0 0 -0.042500000044" rpy="${0.5 * pi} ${24 * deg_to_rad} ${1.5 * pi}" /> -->
      <origin rpy="0.41887903200000004 0 1.5707963267948966 " xyz="0 0 -0.042500000044"/>
      <mass value="0.3097539019"/>
      <inertia ixx="0.0005844517978" ixy="0" ixz="0" iyy="0.00052872551237" iyz="0" izz="0.00017923555074"/>
    </inertial>
    <visual>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/visual/caster_wheel_base.stl"/>
      </geometry>
      <material name="silver">
        <color rgba="0.79 0.82 0.93 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0"/>
      <geometry>
        <mesh filename="package://mir_description/meshes/collision/caster_wheel_base.stl"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="br_caster_rotation_link">
    <material>Gazebo/Grey</material>
  </gazebo>
  <!-- caster wheel -->
  <joint name="br_caster_wheel_joint" type="continuous">
    <origin rpy="0 0 0" xyz="-0.0382 0 -0.094"/>
    <parent link="br_caster_rotation_link"/>
    <child link="br_caster_wheel_link"/>
    <axis xyz="0 1 0"/>
  </joint>
  <link name="br_caster_wheel_link">
    <inertial>
      <mass value="1.0"/>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <inertia ixx="0.001061895408575" ixy="0.0" ixz="0.0" iyy="0.001061895408575" iyz="0.0" izz="0.001953125"/>
    </inertial>
    <visual>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
      <material name="black">
        <color rgba="0.1 0.1 0.1 1"/>
      </material>
    </visual>
    <collision>
      <origin rpy="1.5707963267948966 0 0" xyz="0 0 0"/>
      <geometry>
        <cylinder length="0.032" radius="0.0625"/>
      </geometry>
    </collision>
  </link>
  <gazebo reference="br_caster_wheel_link">
    <material>Gazebo/FlatBlack</material>
  </gazebo>
  <joint name="base_link_surface_joint" type="fixed">
    <origin rpy="0 0 0" xyz="0.037646 0 0.352"/>
    <parent link="base_link"/>
    <child link="surface"/>
    <axis xyz="0 0 1"/>
  </joint>
  <link name="surface"/>
  <transmission name="left_wheel_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="left_wheel_joint">
      <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
    </joint>
    <actuator name="left_wheel_motor">
      <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>
  <transmission name="right_wheel_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="right_wheel_joint">
      <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
    </joint>
    <actuator name="right_wheel_motor">
      <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      <mechanicalReduction>1</mechanicalReduction>
    </actuator>
  </transmission>
  <gazebo reference="left_wheel_link">
    <mu1 value="200"/>
    <mu2 value="200"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo reference="right_wheel_link">
    <mu1 value="200"/>
    <mu2 value="200"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo reference="fl_caster_wheel_link">
    <mu1 value="1"/>
    <mu2 value="1"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo reference="fr_caster_wheel_link">
    <mu1 value="1"/>
    <mu2 value="1"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo reference="bl_caster_wheel_link">
    <mu1 value="1"/>
    <mu2 value="1"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo reference="br_caster_wheel_link">
    <mu1 value="1"/>
    <mu2 value="1"/>
    <kp value="10000000.0"/>
    <kd value="1.0"/>
    <minDepth>0.01</minDepth>
  </gazebo>
  <gazebo>
    <plugin filename="libgazebo_ros_p3d.so" name="p3d_base_controller">
      <alwaysOn>true</alwaysOn>
      <updateRate>50.0</updateRate>
      <bodyName>base_footprint</bodyName>
      <topicName>base_pose_ground_truth</topicName>
      <gaussianNoise>0.01</gaussianNoise>
      <frameName>map</frameName>
      <xyzOffsets>0 0 0</xyzOffsets>
      <rpyOffsets>0 0 0</rpyOffsets>
    </plugin>
  </gazebo>
  <gazebo>
    <plugin filename="libgazebo_ros_control.so" name="gazebo_ros_control">
      <controlPeriod>0.001</controlPeriod>
      <legacyModeNS>false</legacyModeNS>
    </plugin>
  </gazebo>
  <!-- instead of the controller_plugin_gazebo, you can use the diffdrive controller like this:
    <xacro:diff_controller_plugin_gazebo prefix=""
      left_wheel_joint="left_wheel_joint"
      right_wheel_joint="right_wheel_joint"
      wheel_separation="${2*mir_act_wheel_dy}"
      wheel_radius="${mir_act_wheel_radius}"/>
  -->
</robot>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants