Robotics StackExchange | Archived questions

Why pallet is not smooth enough ?

I want to attach a pallet to a robot. However, it is not smooth enough. Here you can find the https://youtu.be/wU0WEoQxzTo how it works. Any idea how could I improve the smoothness.

<?xml version="1.0"?>
<robot name="jackal" xmlns:xacro="http://www.ros.org/wiki/xacro">
  <xacro:property name="PI"                        value="3.1415926535897931" />
  <xacro:property name="wheelbase"                 value="0.262" />
  <xacro:property name="track"                     value="0.37559" />
  <xacro:property name="wheel_vertical_offset"     value="0.0345" />
  <xacro:property name="footprint_vertical_offset" value="-0.00" />
  <xacro:property name="wheel_radius"              value="0.065" />
  <xacro:property name="wheel_width"               value="0.040" />
  <xacro:property name="chassis_length"            value="0.420" />
  <xacro:property name="chassis_width"             value="0.310" />
  <xacro:property name="chassis_height"            value="0.184" />
  <xacro:property name="dummy_inertia"             value="1e-09"/>
  <xacro:property name="mount_spacing"             value="0.120" />
  <xacro:arg name="gpu" default="true"/>
  <xacro:property name="gpu" value="$(arg gpu)" />

  <material name="dark_grey"><color rgba=" 0.2 0.2 0.2 1.0" /></material>
  <material name="light_grey"><color rgba="0.4 0.4 0.4 1.0" /></material>
  <material name="yellow"><color rgba="0.8 0.8 0.0 1.0" /></material>
  <material name="black"><color rgba="0.15 0.15 0.15 1.0" /></material>

  <xacro:macro name="wheel" params="prefix *joint_pose">
    <link name="${prefix}_wheel_link">
      <visual>
        <origin xyz="0 0 0" rpy="${PI/2} 0 0"/>
        <geometry>
          <mesh filename="package://antboy_gazebo/meshes/jackal-wheel.stl"/>
        </geometry>
        <material name="black" />
      </visual>
      <collision>
        <origin xyz="0 0 0" rpy="${PI/2} 0 0"/>
        <geometry>
          <cylinder radius="${wheel_radius}" length="${wheel_width}"/>
        </geometry>
      </collision>
      <inertial>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <mass value="0.477"/>
        <inertia
          ixx="0.0013" ixy="0" ixz="0"
          iyy="0.0024" iyz="0"
          izz="0.0013"/>
      </inertial>
    </link>
    <gazebo reference="${prefix}_wheel_link">
      <material>Gazebo/DarkGrey</material>
    </gazebo>
    <joint name="${prefix}_wheel" type="continuous">
      <parent link="chassis_link"/>
      <child link="${prefix}_wheel_link" />
      <xacro:insert_block name="joint_pose" />
      <axis xyz="0 1 0" />
    </joint>
    <transmission name="${prefix}_wheel_trans">
      <type>transmission_interface/SimpleTransmission</type>
      <joint name="${prefix}_wheel">
        <hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
      </joint>
      <actuator name="${prefix}_actuator">
        <mechanicalReduction>1</mechanicalReduction>
      </actuator>
    </transmission>
  </xacro:macro>

  <xacro:wheel prefix="front_left">
    <origin xyz="${wheelbase/2} ${track/2} ${wheel_vertical_offset}" rpy="0 0 0" />
  </xacro:wheel>
  <xacro:wheel prefix="front_right">
    <origin xyz="${wheelbase/2} ${-track/2} ${wheel_vertical_offset}" rpy="0 0 0" />
  </xacro:wheel>
  <xacro:wheel prefix="rear_left">
    <origin xyz="${-wheelbase/2} ${track/2} ${wheel_vertical_offset}" rpy="0 0 0" />
  </xacro:wheel>
  <xacro:wheel prefix="rear_right">
    <origin xyz="${-wheelbase/2} ${-track/2} ${wheel_vertical_offset}" rpy="0 0 0" />
  </xacro:wheel>

  <link name="base_link"></link>

  <joint name="base_link_joint" type="fixed">
    <origin xyz="0 0 0" rpy="0 0 0" />
    <parent link="base_link"/>
    <child link="chassis_link" />
  </joint>

  <link name="chassis_link">
    <visual>
      <origin xyz="0 0 ${footprint_vertical_offset}" rpy="0 0 0"/>
      <geometry>
        <mesh filename="package://antboy_gazebo/meshes/ant_boy.stl" scale="0.001 0.001 0.001"/>
      </geometry>
      <material name="yellow" />
    </visual>
    <collision>
      <origin xyz="0 0 ${chassis_height/2}"/>
      <geometry>
        <box size="${chassis_length} ${chassis_width} ${chassis_height}"/>
      </geometry>
    </collision>
    <inertial>
      <origin xyz="0.012  0.002 0.067" rpy="0 0 0"/>
      <mass value="30.523"/>
      <inertia
        ixx="0.3136" ixy="-0.0008" ixz="0.0164"
        iyy="0.3922" iyz="-0.0009"
        izz="0.4485"/>
      </inertial>
  </link>

  <link name="imu_link">
    <inertial>
      <mass value="0.001"/>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <inertia ixx="${dummy_inertia}" ixy="0.0" ixz="0.0" iyy="${dummy_inertia}" iyz="0.0" izz="${dummy_inertia}"/>
    </inertial>
  </link>
  <joint name="imu_joint" type="fixed">
    <parent link="chassis_link" />
    <child link="imu_link" />
  </joint>

  <link name="mid_mount"></link>
  <joint name="mid_mount_joint" type="fixed">
    <parent link="chassis_link" />
    <child link="mid_mount" />
    <origin xyz="0 0 ${chassis_height}" />
  </joint>

  <link name="rear_mount"></link>
  <joint name="rear_mount_joint" type="fixed">
    <parent link="mid_mount" />
    <child link="rear_mount" />
    <origin xyz="${-mount_spacing} 0 0" />
  </joint>

  <link name="front_mount"></link>
  <joint name="front_mount_joint" type="fixed">
    <parent link="mid_mount" />
    <child link="front_mount" />
    <origin xyz="${mount_spacing} 0 0" />
  </joint>

  <link name="camera_link">
    <inertial>
      <mass value="1"/>
      <inertia ixx="0.001" ixy="0.0" ixz="0.0" iyy="0.001" iyz="0.0" izz="0.001"/>
    </inertial>
  </link>

  <joint name="front_camera_joint" type="fixed">
    <parent link="base_link"/>
    <child link="camera_link"/>
    <origin xyz="0.324 0.0 0.106" rpy="0.0 -0.61 0.0"/>
  </joint>

    <joint name="lidar_joint" type="fixed" >
      <origin xyz="0.248 0.0 0.171" rpy="0 0 0" />
      <parent link="base_link" />
      <child link="lidar_link"/>
    </joint>

<!-- _________JOINT_____________ -->

   <link name="center_hinge_prismatic_link">
      <inertial>
        <mass value="0.1" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0" izz="0.001" />
      </inertial>
      <visual>
          <origin xyz="0 0 0.2" rpy="0 0.0 0"/>
          <geometry>
              <cylinder radius="0.05" length="0.32"/>
          </geometry>
      </visual>
  </link>

  <joint name="center_hinge_joint" type="prismatic">
      <limit effort="1000.0" lower="-0.1" upper="0.15" velocity="2.5"/>
      <origin xyz="-0.0 0.0 0.1" rpy="0 0 0" />
      <parent link="chassis_link" />
      <child link="center_hinge_prismatic_link"/>
      <axis xyz="0 0 1" />
  </joint>

  <link name="center_hinge_link">
      <inertial>
        <mass value="0.1" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0" izz="0.001" />
      </inertial>
      <visual>
          <origin xyz="0 0 0.2" rpy="0 0.0 0"/>
          <geometry>
              <cylinder radius="0.05" length="0.32"/>
          </geometry>
      </visual>
  </link>

  <joint name="center_hinge_prismatic_joint" type="continuous">
      <origin xyz="0.0 0.0 0.05" rpy="0 0 0" />
      <parent link="center_hinge_prismatic_link" />
      <child link="center_hinge_link"/>
      <axis xyz="0 0 1" />
  </joint>

  <link name="base_arm_link">
      <inertial>
        <mass value="0.5" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="-0.1" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0" izz="0.001" />
      </inertial>
      <visual>
          <origin xyz="-0.0 0.0 0.3" rpy="1.57079 0.0 1.57079"/>
          <geometry>
              <cylinder radius="0.05" length="0.7"/>
          </geometry>
      </visual>
    <collision>
          <origin xyz="-0.0 0.0 0.3" rpy="1.57079 0.0 1.57079"/>
          <geometry>
              <cylinder radius="0.05" length="0.7"/>
          </geometry>
      </collision>
  </link>

  <joint name="base_arm_joint" type="fixed">
      <origin xyz="-0.35 0.0 0.0" rpy="0 0 0" />
      <parent link="center_hinge_link" />
      <child link="base_arm_link"/>
      <axis xyz="0 0 1" />
  </joint>


  <link name="fork_hinge_link">
      <inertial>
        <mass value="0.1" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0" izz="0.001" />
      </inertial>
      <visual>
          <origin xyz="-0.0 0.0 0.0" rpy="0 0.0 0.0"/>
          <geometry>
              <cylinder radius="0.05" length="0.1"/>
          </geometry>
      </visual>
  </link>

  <joint name="fork_hinge_joint" type="revolute">
      <origin xyz="-0.35 0.0 0.3" rpy="0 0 0" />
      <parent link="base_arm_link" />
      <child link="fork_hinge_link"/>
      <axis xyz="0 0 1" />
      <limit effort="100.0" lower="-1.57" upper="1.57" velocity="2.5"/>
  </joint>


  <link name="fork_hinge_prism_link">
      <inertial>
        <mass value="0.1" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0" izz="0.001" />
      </inertial>
      <visual>
          <origin xyz="0 0 0.2" rpy="0 0.0 0"/>
          <geometry>
              <cylinder radius="0.05" length="0.32"/>
          </geometry>
      </visual>
  </link>

  <joint name="fork_hinge_prism_joint"  type="prismatic">
      <limit effort="1000.0" lower="-0.15" upper="0.15" velocity="2.5"/>
      <origin xyz="0 0.0 -0.5" rpy="0 0 0" />
      <parent link="fork_hinge_link" />
      <child link="fork_hinge_prism_link"/>
      <axis xyz="0 0 1" />
  </joint>



<!-- _________FORKLIFT_____________ -->

  <link name="base_fork">
      <inertial>
        <mass value="50.0" />
        <origin xyz="0 0 0.0" />
        <inertia ixx="0.05" ixy="0.0" ixz="0.0"
                 iyy="0.05" iyz="0.0" izz="0.05" />
      </inertial>
      <visual>
          <origin xyz="0 0 0" rpy="0 0 0" />
          <geometry>
            <mesh filename="package://antboy_gazebo/meshes/fork.stl" scale="0.0008 0.0008 0.0004"/>
          </geometry>
      </visual>
      <collision>
        <origin xyz="0 0 0.1" rpy="0 0 0" />
        <geometry>
          <box size="0.9 0.55 0.02" />
        </geometry>
      </collision>
  </link>

  <joint name="fork_joint" type="fixed">
      <origin xyz="-0.5 0.0 0.0" rpy="0 0 0" />
      <parent link="fork_hinge_prism_link" />
      <child link="base_fork"/>
      <axis xyz="0 0 1" />
  </joint>

  <link name="joint1_imu">
    <inertial>
      <mass value="0.001"/>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <inertia ixx="${dummy_inertia}" ixy="0.0" ixz="0.0" iyy="${dummy_inertia}" iyz="0.0" izz="${dummy_inertia}"/>
    </inertial>
    <visual>
          <origin xyz="-0.0 0.0 0.0" rpy="0 0.0 0.0"/>
          <geometry>
              <cylinder radius="0.006" length="0.01"/>
          </geometry>
          <material name="Gray">
            <color rgba="0.1 0.1 1 1.0"/>
          </material>
      </visual>
  </link>
  <joint name="fork_hinge_imu_joint" type="fixed">
    <origin xyz="-0.05 0.0 0.0" rpy="0 0 0" />
    <parent link="fork_hinge_link" />
    <child link="joint1_imu" />
  </joint>

  <link name="joint2_imu">
    <inertial>
      <mass value="0.001"/>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <inertia ixx="${dummy_inertia}" ixy="0.0" ixz="0.0" iyy="${dummy_inertia}" iyz="0.0" izz="${dummy_inertia}"/>
    </inertial>
    <visual>
          <origin xyz="-0.0 0.0 0.0" rpy="0 0.0 0.0"/>
          <geometry>
              <cylinder radius="0.006" length="0.01"/>
          </geometry>
          <material name="Gray">
            <color rgba="1 0 0 1.0"/>
          </material>
      </visual>
  </link>

  <joint name="center_hinge_imu_joint" type="fixed">
    <origin xyz="0.0 0.0 0.365" rpy="0 0 0" />
    <parent link="center_hinge_link" />
    <child link="joint2_imu" />
  </joint>

<!-- _________FORKLIFT WHEEL LEFT_____________ -->

<link name="fixed_left_wheel_link">
        <inertial>
          <mass value="0.5"/>
          <inertia ixx="0.001" ixy="0" ixz="0" iyy="0.001" iyz="0" izz="0.001" />
          <origin/>
        </inertial>
        <visual>
          <origin xyz="0 0 0" rpy="1.57 0 0" />
          <geometry>
            <cylinder radius="0.05" length="0.1" />
          </geometry>
          <material name="gray"/>
        </visual>
        <collision>
        <origin xyz="0 0 0.0" rpy="1.57 0 0" />
          <geometry>
            <cylinder radius="0.05" length="0.1" />
          </geometry>
    <surface>
        <friction>
          <ode>
            <mu>1000.01</mu>
            <mu2>1000.01</mu2>
          </ode>
        </friction>
      </surface>
        </collision>
  </link>

  <joint name="base2fixed_left_wheel_joint" type="continuous">
        <parent link="base_fork"/>
        <child link="fixed_left_wheel_link"/>
        <origin xyz="-0.3 0.15 0.0" rpy="0 0 0" />
        <axis xyz="0 1 0" />
  </joint>
<!-- _________FORKLIFT WHEEL RIGHT_____________ -->
  <link name="fixed_right_wheel_link">
        <inertial>
          <mass value="0.5"/>
          <inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1" />
          <origin/>
        </inertial>
        <visual>
          <origin xyz="0 0 0" rpy="1.57 0 0" />
          <geometry>
            <cylinder radius="0.05" length="0.1" />
          </geometry>
          <material name="gray"/>
        </visual>
        <collision>
        <origin xyz="0 0 0.0" rpy="1.57 0 0" />
          <geometry>
            <cylinder radius="0.05" length="0.1" />
          </geometry>
    <surface>
        <friction>
          <ode>
            <mu>1000.01</mu>
            <mu2>1000.01</mu2>
          </ode>
        </friction>
      </surface>
        </collision>
  </link>

  <joint name="base2fixed_right_wheel_joint" type="continuous">
        <parent link="base_fork"/>
        <child link="fixed_right_wheel_link"/>
        <origin xyz="-0.3 -0.15 0.0" rpy="0 0 0" />
        <axis xyz="0 1 0" />
  </joint>

<!-- _________FORKLIFT WHEEL MIDDLE_____________ -->

  <link name="fixed_middle_wheel_link">
         <inertial>
          <mass value="0.5"/>
          <inertia ixx="0.1" ixy="0" ixz="0" iyy="0.1" iyz="0" izz="0.1" />
          <origin/>
        </inertial>
        <visual>
          <origin xyz="0 0 0" rpy="1.57 0 0" />
          <geometry>
              <sphere radius="0.06"/>
          </geometry>
          <material name="gray"/>
        </visual>
        <collision>
        <origin xyz="0 0 0.0" rpy="1.57 0 0" />
          <geometry>
              <sphere radius="0.06"/>
          </geometry>
    <surface>
        <friction>
          <ode>
            <mu>0.01</mu>
            <mu2>0.01</mu2>
          </ode>
        </friction>
      </surface>
        </collision>
  </link>

  <joint name="base2fixed_middle_wheel_joint" type="continuous">
        <parent link="base_fork"/>
        <child link="fixed_middle_wheel_link"/>
        <origin xyz="0.5 0.0 0.0" rpy="0 0 0" />
        <axis xyz="1 1 0" />
  </joint>


  <xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/>
  <xacro:VLP-16 parent="base_link" name="lidar_link" topic="/velodyne_points" hz="10" samples="440" gpu="${gpu}">
    <origin xyz="0.248 0.0 0.141" rpy="0 0 0" />
  </xacro:VLP-16>


  <xacro:include filename="antboy.gazebo" />
  <xacro:include filename="base_accessories.urdf.xacro" />

</robot>

Asked by GPrathap on 2022-04-14 15:22:36 UTC

Comments

Answers