Your visual and collision origin is not same thing and also visual origin is not looks like true. Firstly you have to change your urdf wheel collision part with cylinder. Secondly you can try without stl model visual part like turtlebot3. After this changes if your simulation works true and wheels turn fine you can change visual part easily.
Turtlebot3 wheel URDF example
<link name="wheel_left_link">
<visual>
<origin xyz="0 0 0" rpy="1.57 0 0"/>
<geometry>
<mesh filename="package://turtlebot3_description/meshes/wheels/left_tire.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="dark"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<cylinder length="0.018" radius="0.033"/>
</geometry>
</collision>
<inertial>
<origin xyz="0 0 0" />
<mass value="2.8498940e-02" />
<inertia ixx="1.1175580e-05" ixy="-4.2369783e-11" ixz="-5.9381719e-09"
iyy="1.1192413e-05" iyz="-1.4400107e-11"
izz="2.0712558e-05" />
</inertial>
</link>
Another example
<xacro:macro name="wheel" params="prefix reflect">
<link name="${prefix}_wheel_link">
<visual>
<material name="darkgray"/>
<origin xyz="0 0 0" rpy="${pi/2} 0 0"/>
<geometry>
<cylinder radius="${wheel_radius}" length="0.02"/>
</geometry>
</visual>
<collision>
<origin xyz="0 0 0" rpy="${pi/2} 0 0"/>
<geometry>
<cylinder radius="${wheel_radius}" length="0.02"/>
</geometry>
</collision>
<xacro:cylinder_inertia m="10" r="${wheel_radius}" h="0.02"/>
</link>
<joint name="${prefix}_wheel_joint" type="continuous">
<axis xyz="0 1 0" rpy="0 0 0" />
<parent link="base_link"/>
<child link="${prefix}_wheel_link"/>
<origin xyz="${wheel_joint_offset} ${((base_width/2)+base_wheel_gap)*reflect} -0.06" rpy="0 0 0"/>
</joint>
</xacro:macro>
<xacro:wheel prefix="left" reflect="1"/>
<xacro:wheel prefix="right" reflect="-1"/>